Fix #10778 (issue with CJK and language nesting)

When using CJK, don't try to close a language that was never
opened before, such as when it is the main language.

(cherry picked from commit 7e51b5f301)
This commit is contained in:
Enrico Forestieri 2017-11-02 10:35:58 +01:00
parent 8f98423e92
commit 43a6fe8375
3 changed files with 16 additions and 0 deletions

View File

@ -2542,6 +2542,7 @@ void Paragraph::latex(BufferParams const & bparams,
bool const using_begin_end = runparams.use_polyglossia ||
!lang_end_command.empty();
if (!running_lang.empty() &&
(!using_begin_end || running_lang == openLanguageName()) &&
current_font.language()->encoding()->package() == Encoding::CJK) {
string end_tag = subst(lang_end_command,
"$$lang",

View File

@ -532,6 +532,14 @@ void popLanguageName()
}
string const & openLanguageName()
{
OutputState * state = getOutputState();
return openLanguageName(state);
}
namespace {
void addArgInsets(Paragraph const & par, string const & prefix,

View File

@ -39,6 +39,13 @@ void pushLanguageName(std::string const & lang, bool localswitch = false);
*/
void popLanguageName();
/** Return a reference to the last active language opened with
polyglossia or when using begin/end commands. If none or when
using babel with only a begin command, return a reference to
an empty string.
*/
std::string const & openLanguageName();
/** Export optional and required arguments of the paragraph \p par.
Non-existing required arguments are output empty: {}.
*/