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->fontencs().empty()) {
- vector<string> extraencs = lang->fontencs();
- for (auto const & extra : extraencs) {
- if (extra != "none" && 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 {
"units",
"framed",
"soul",
- "textcomp",
- "pmboxdraw",
+ "dingbat",
"bbding",
"ifsym",
"txfonts",
// "cancel",
"ascii",
"url",
- "covington",
"csquotes",
"enumitem",
"endnotes",
"todonotes",
"forest",
"varwidth",
- "footnote",
"tablefootnote",
"afterpage",
+ "tabularx",
+ "xltabular",
+ "chessboard",
+ "xskak"
};
char const * bibliofeatures[] = {
// The rest of these packages are somewhat more complicated
// than those above.
+ if (mustProvide("footnote")) {
+ if (isRequired("hyperref"))
+ packages << "\\usepackage{footnotehyper}\n";
+ else
+ packages << "\\usepackage{footnote}\n";
+ }
+
// [pdf]lscape is used to rotate longtables
if (mustProvide("lscape")) {
if (runparams_.flavor == OutputParams::LATEX
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