static docstring const lyx_def = from_ascii(
"\\providecommand{\\LyX}{L\\kern-.1667em\\lower.25em\\hbox{Y}\\kern-.125emX\\@}");
+static docstring const lyx_rtl_def = from_ascii(
+ "\\let\\@@LyX\\LyX\n"
+ "\\def\\LyX{\\@ensure@LTR{\\@@LyX}}");
+
static docstring const lyx_hyperref_def = from_ascii(
"\\providecommand{\\LyX}{\\texorpdfstring%\n"
" {L\\kern-.1667em\\lower.25em\\hbox{Y}\\kern-.125emX\\@}\n"
encs.insert(encs.begin(), "T2A");
}
- for (auto const & lang : UsedLanguages_)
- if (!lang->fontenc().empty()
- && ascii_lowercase(lang->fontenc()) != "none") {
- vector<string> extraencs = getVectorFromString(lang->fontenc());
- for (auto const & extra : extraencs) {
- if (find(encs.begin(), encs.end(), extra) == encs.end())
- encs.insert(encs.begin(), extra);
- }
+ for (auto const & lang : UsedLanguages_) {
+ vector<string> extraencs =
+ getVectorFromString(lang->fontenc(buffer().masterParams()));
+ for (auto const & extra : extraencs) {
+ if (extra != "none" && find(encs.begin(), encs.end(), extra) == encs.end())
+ encs.insert(encs.begin(), extra);
}
+ }
+}
+
+
+bool LaTeXFeatures::hasRTLLanguage() const
+{
+ if (params_.language->rightToLeft())
+ return true;
+ for (auto const & lang : UsedLanguages_)
+ if (lang->rightToLeft())
+ return true;
+ return false;
}
namespace {
"footnote",
"tablefootnote",
"afterpage",
+ "tabularx",
+ "xltabular"
};
char const * bibliofeatures[] = {
macros << lyx_hyperref_def << '\n';
else
macros << lyx_def << '\n';
+ if (runparams_.use_polyglossia && hasRTLLanguage())
+ macros << lyx_rtl_def << '\n';
}
if (mustProvide("noun"))
// non-standard text accents:
if (mustProvide("textcommaabove") || mustProvide("textcommaaboveright") ||
- mustProvide("textcommabelow") || mustProvide("textbalticdefs"))
+ mustProvide("textcommabelow") || mustProvide("textbaltic"))
macros << lyxaccent_def;
- if (mustProvide("textcommabelow") || mustProvide("textbalticdefs"))
+ if (mustProvide("textcommabelow") || mustProvide("textbaltic"))
macros << textcommabelow_def << '\n';
- if (mustProvide("textcommaabove") || mustProvide("textbalticdefs"))
+ if (mustProvide("textcommaabove") || mustProvide("textbaltic"))
macros << textcommaabove_def << '\n';
if (mustProvide("textcommaaboveright"))
macros << textcommaaboveright_def << '\n';
- if (mustProvide("textbalticdefs"))
+ if (mustProvide("textbaltic"))
macros << textbaltic_def << '\n';
// split-level fractions