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"
}
}
+
+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[] = {
// "cancel",
"ascii",
"url",
- "covington",
"csquotes",
"enumitem",
"endnotes",
"todonotes",
"forest",
"varwidth",
- "footnote",
+ "tablefootnote",
};
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
+ || runparams_.flavor == OutputParams::DVILUATEX)
+ packages << "\\usepackage{lscape}\n";
+ else
+ packages << "\\usepackage{pdflscape}\n";
+ }
+
// The tipa package and its extensions (tipx, tone) must not
// be loaded with non-TeX fonts, since fontspec includes the
// respective macros
// Some classes load natbib themselves, but still allow (or even require)
// plain numeric citations (ReVTeX is such a case, see bug 5182).
// This special case is indicated by the "natbib-internal" key.
- if (mustProvide("natbib") && !isProvided("natbib-internal")) {
+ if (mustProvide("natbib")
+ && !isProvided("natbib-internal")
+ && !isProvided("biblatex")
+ && !isProvided("biblatex-natbib")
+ && !isProvided("jurabib")) {
packages << "\\usepackage[";
if (params_.citeEngineType() == ENGINE_TYPE_NUMERICAL)
packages << "numbers";
}
// jurabib -- we need version 0.6 at least.
- if (mustProvide("jurabib")) {
+ if (mustProvide("jurabib")
+ && !isProvided("natbib-internal")
+ && !isProvided("natbib")
+ && !isProvided("biblatex")
+ && !isProvided("biblatex-natbib")) {
packages << "\\usepackage";
if (!params_.biblio_opts.empty())
packages << '[' << params_.biblio_opts << ']';
macros << getPreambleSnippets();
}
+ if (mustProvide("xetexdashbreakstate"))
+ macros << "\\XeTeXdashbreakstate 0" << '\n';
+
if (mustProvide("papersize")) {
if (runparams_.flavor == OutputParams::LATEX
|| runparams_.flavor == OutputParams::DVILUATEX)
macros << lyx_hyperref_def << '\n';
else
macros << lyx_def << '\n';
+ if (runparams_.use_polyglossia && hasRTLLanguage())
+ macros << lyx_rtl_def << '\n';
}
if (mustProvide("noun"))