//\message{LyX LaTeX Extensions (LLE v0.2) of 11-Jan-1996.}
static docstring const lyx_def = from_ascii(
- "\\providecommand{\\LyX}{L\\kern-.1667em\\lower.25em\\hbox{Y}\\kern-.125emX\\@}");
-
-static docstring const lyx_hyperref_def = from_ascii(
- "\\providecommand{\\LyX}{\\texorpdfstring%\n"
- " {L\\kern-.1667em\\lower.25em\\hbox{Y}\\kern-.125emX\\@}\n"
- " {LyX}}");
+ "{%\n L\\kern-.1667em\\lower.25em\\hbox{Y}\\kern-.125emX\\@}");
static docstring const noun_def = from_ascii(
"\\newcommand{\\noun}[1]{\\textsc{#1}}");
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 {
char const * simplefeatures[] = {
"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
}
if (mustProvide("LyX")) {
+ macros << "\\providecommand{\\LyX}";
+ // open conditional wrappers
+ if (runparams_.use_polyglossia && hasRTLLanguage())
+ macros << "{\\@ensure@LTR";
if (isRequired("hyperref"))
- macros << lyx_hyperref_def << '\n';
- else
- macros << lyx_def << '\n';
+ macros << "{\\texorpdfstring";
+ if (useBabel())
+ macros << "{\\textlatin";
+ // main definition
+ macros << lyx_def;
+ // close conditional wrappers
+ if (useBabel())
+ macros << '}';
+ if (isRequired("hyperref"))
+ macros << "{LyX}}";
+ if (runparams_.use_polyglossia && hasRTLLanguage())
+ macros << '}';
+ macros << '\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