getPolyglossiaEnvName(doc_language) : doc_language->babel();
string const outer_lang = use_polyglossia ?
getPolyglossiaEnvName(outer_language) : outer_language->babel();
- string const lang_begin_command = use_polyglossia ?
+ string lang_begin_command = use_polyglossia ?
"\\begin{$$lang}" : lyxrc.language_command_begin;
- string const lang_end_command = use_polyglossia ?
+ string lang_end_command = use_polyglossia ?
"\\end{$$lang}" : lyxrc.language_command_end;
+ // the '%' is necessary to prevent unwanted whitespace
+ string lang_command_termination = "%\n";
+
+ // In some insets (such as Arguments), we cannot use \selectlanguage
+ bool const localswitch = !use_polyglossia
+ && text.inset().getLayout().forcelocalfontswitch();
+ if (localswitch) {
+ lang_begin_command = lyxrc.language_command_local;
+ lang_end_command = "}";
+ lang_command_termination.clear();
+ }
if (par_lang != prev_lang
// check if we already put language command in TeXEnvironment()
os << from_ascii(subst(lang_end_command,
"$$lang",
prev_lang))
- // the '%' is necessary to prevent unwanted whitespace
- << "%\n";
+ << lang_command_termination;
}
// We need to open a new language if we couldn't close the previous
os << "["
<< from_ascii(par_language->polyglossiaOpts())
<< "]";
- // the '%' is necessary to prevent unwanted whitespace
- os << "%\n";
+ os << lang_command_termination;
}
}
}
lang_begin_command,
"$$lang",
par_lang))
- // the '%' is necessary to prevent unwanted whitespace
- << "%\n";
+ << lang_command_termination;
}
runparams.encoding = encoding;
}
lang_begin_command,
"$$lang",
current_lang));
- pending_newline = true;
- unskip_newline = true;
+ pending_newline = !localswitch;
+ unskip_newline = !localswitch;
}
} else if (!par_lang.empty()) {
os << from_ascii(subst(
lang_end_command,
"$$lang",
par_lang));
- pending_newline = true;
- unskip_newline = true;
+ pending_newline = !localswitch;
+ unskip_newline = !localswitch;
}
}
}