diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 859896900f..6f514863de 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -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", diff --git a/src/output_latex.cpp b/src/output_latex.cpp index 02667aae9f..1431bbb321 100644 --- a/src/output_latex.cpp +++ b/src/output_latex.cpp @@ -532,6 +532,14 @@ void popLanguageName() } +string const & openLanguageName() +{ + OutputState * state = getOutputState(); + + return openLanguageName(state); +} + + namespace { void addArgInsets(Paragraph const & par, string const & prefix, diff --git a/src/output_latex.h b/src/output_latex.h index 0969d22c03..1dd9689851 100644 --- a/src/output_latex.h +++ b/src/output_latex.h @@ -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: {}. */