Fix local polyglossia switch for Arabic

We need to lowercase the language again (it's \begin{Arabic},
but \textarabic)

Fixes: #11057.
(cherry picked from commit 27584f5f70)
This commit is contained in:
Juergen Spitzmueller 2018-03-06 15:31:43 +01:00
parent 94fe126161
commit afeb5acb0f
2 changed files with 22 additions and 10 deletions

View File

@ -142,11 +142,16 @@ string const getPolyglossiaEnvName(Language const * lang)
string const getPolyglossiaBegin(string const & lang_begin_command,
string const & lang, string const & opts)
string const & lang, string const & opts,
bool const localswitch = false)
{
string result;
if (!lang.empty())
result = subst(lang_begin_command, "$$lang", lang);
if (!lang.empty()) {
// we need to revert the upcasing done in getPolyglossiaEnvName()
// in case we have a local polyglossia command (\textarabic).
string language = localswitch ? ascii_lowercase(lang) : lang;
result = subst(lang_begin_command, "$$lang", language);
}
string options = opts.empty() ?
string() : "[" + opts + "]";
result = subst(result, "$$opts", options);
@ -905,7 +910,9 @@ void TeXOnePar(Buffer const & buf,
&& (par_lang != openLanguageName(state) || localswitch)
&& !par_lang.empty()) {
string bc = use_polyglossia ?
getPolyglossiaBegin(lang_begin_command, par_lang, par_language->polyglossiaOpts())
getPolyglossiaBegin(lang_begin_command, par_lang,
par_language->polyglossiaOpts(),
localswitch)
: subst(lang_begin_command, "$$lang", par_lang);
os << bc;
os << lang_command_termination;
@ -964,11 +971,13 @@ void TeXOnePar(Buffer const & buf,
if (runparams.encoding->package() == Encoding::CJK
&& par_lang != openLanguageName(state)
&& !par_lang.empty()) {
os << from_ascii(subst(
lang_begin_command,
"$$lang",
par_lang))
<< lang_command_termination;
string bc = use_polyglossia ?
getPolyglossiaBegin(lang_begin_command, par_lang,
par_language->polyglossiaOpts(),
localswitch)
: subst(lang_begin_command, "$$lang", par_lang);
os << bc
<< lang_command_termination;
if (using_begin_end)
pushLanguageName(par_lang, localswitch);
}
@ -1135,7 +1144,8 @@ void TeXOnePar(Buffer const & buf,
&& current_lang != openLanguageName(state)) {
string bc = use_polyglossia ?
getPolyglossiaBegin(lang_begin_command, current_lang,
current_language->polyglossiaOpts())
current_language->polyglossiaOpts(),
localswitch)
: subst(lang_begin_command, "$$lang", current_lang);
os << bc;
pending_newline = !localswitch;

View File

@ -60,6 +60,8 @@ What's new
- Do not embrace numbers in \beginL ... \endL with polyglossia in Right-
to-Left languages, since bidi handles the numbers automatically.
- Fix polyglossia language switches for Arabic (bug 11057).
* LYX2LYX