"}\n"
"{\\end{list}}\n");
-static docstring const floatingfootnote_def = from_ascii(
- "%% Special footnote code from the package 'stblftnt.sty'\n"
- "%% Author: Robin Fairbairns -- Last revised Dec 13 1996\n"
- "\\let\\SF@@footnote\\footnote\n"
- "\\def\\footnote{\\ifx\\protect\\@typeset@protect\n"
- " \\expandafter\\SF@@footnote\n"
- " \\else\n"
- " \\expandafter\\SF@gobble@opt\n"
- " \\fi\n"
- "}\n"
- "\\expandafter\\def\\csname SF@gobble@opt \\endcsname{\\@ifnextchar[%]\n"
- " \\SF@gobble@twobracket\n"
- " \\@gobble\n"
- "}\n"
- "\\edef\\SF@gobble@opt{\\noexpand\\protect\n"
- " \\expandafter\\noexpand\\csname SF@gobble@opt \\endcsname}\n"
- "\\def\\SF@gobble@twobracket[#1]#2{}\n");
-
static docstring const binom_def = from_ascii(
"%% Binom macro for standard LaTeX users\n"
"\\newcommand{\\binom}[2]{{#1 \\choose #2}}\n");
void LaTeXFeatures::useLayout(docstring const & layoutname)
+{
+ useLayout(layoutname, 0);
+}
+
+
+void LaTeXFeatures::useLayout(docstring const & layoutname, int level)
{
// Some code to avoid loops in dependency definition
- static int level = 0;
const int maxlevel = 30;
if (level > maxlevel) {
lyxerr << "LaTeXFeatures::useLayout: maximum level of "
require(layout.requires());
if (!layout.depends_on().empty()) {
- ++level;
- useLayout(layout.depends_on());
- --level;
+ useLayout(layout.depends_on(), level + 1);
}
usedLayouts_.push_back(layoutname);
} else {
<< to_utf8(layoutname) << "' does not exist in this class"
<< endl;
}
-
- --level;
}
"tfrupee",
"shapepar",
"rsphrase",
- "algorithm2e"
+ "algorithm2e",
+ "sectionbox",
+ "tcolorbox",
+ "pdfcomment",
+ "fixme",
+ "todonotes"
};
char const * bibliofeatures[] = {
}
+string const LaTeXFeatures::getPackageOptions() const
+{
+ ostringstream packageopts;
+ // Output all the package option stuff we have been asked to do.
+ map<string, string>::const_iterator it =
+ params_.documentClass().packageOptions().begin();
+ map<string, string>::const_iterator en =
+ params_.documentClass().packageOptions().end();
+ for (; it != en; ++it)
+ if (mustProvide(it->first))
+ packageopts << "\\PassOptionsToPackage{" << it->second << "}"
+ << "{" << it->first << "}\n";
+ return packageopts.str();
+}
+
+
string const LaTeXFeatures::getPackages() const
{
ostringstream packages;
// also unknown packages can be requested. They are silently
// swallowed now. We should change this eventually.
- // Output all the package option stuff we have been asked to do.
- map<string, string>::const_iterator it =
- params_.documentClass().packageOptions().begin();
- map<string, string>::const_iterator en =
- params_.documentClass().packageOptions().end();
- for (; it != en; ++it)
- if (mustProvide(it->first))
- packages << "\\PassOptionsToPackage{" << it->second << "}"
- << "{" << it->first << "}\n";
-
// These are all the 'simple' includes. i.e
// packages which we just \usepackage{package}
for (int i = 0; i < nb_simplefeatures; ++i) {
if (mustProvide("cancel") &&
params_.use_package("cancel") != BufferParams::package_off)
packages << "\\usepackage{cancel}\n";
- // wasysym is a simple feature, but it must be after amsmath if both
- // are used
- // wasysym redefines some integrals (e.g. iint) from amsmath. That
- // leads to inconsistent integrals. We only load this package if
- // the document does not contain integrals (then isRequired("esint")
- // is false) or if esint is used, since esint redefines all relevant
- // integral symbols from wasysym and amsmath.
- // See http://www.lyx.org/trac/ticket/1942
- if (mustProvide("wasysym") &&
- params_.use_package("wasysym") != BufferParams::package_off &&
- (params_.use_package("esint") != BufferParams::package_off || !isRequired("esint")))
- packages << "\\usepackage{wasysym}\n";
-
+
// accents must be loaded after amsmath
if (mustProvide("accents") &&
params_.use_package("accents") != BufferParams::package_off)
if (mustProvide("setspace") && !isProvided("SetSpace"))
packages << "\\usepackage{setspace}\n";
- // we need to assure that mhchem is loaded before esint
- // because esint must be loaded AFTER amslatex and mhchem loads amlatex
+ // we need to assure that mhchem is loaded before esint and every other
+ // package that redefines command of amsmath because mhchem loads amlatex
// (this info is from the author of mhchem from June 2013)
if (mustProvide("mhchem") &&
params_.use_package("mhchem") != BufferParams::package_off)
packages << "\\PassOptionsToPackage{version=3}{mhchem}\n"
"\\usepackage{mhchem}\n";
+ // wasysym is a simple feature, but it must be after amsmath if both
+ // are used
+ // wasysym redefines some integrals (e.g. iint) from amsmath. That
+ // leads to inconsistent integrals. We only load this package if
+ // the document does not contain integrals (then isRequired("esint")
+ // is false) or if esint is used, since esint redefines all relevant
+ // integral symbols from wasysym and amsmath.
+ // See http://www.lyx.org/trac/ticket/1942
+ if (mustProvide("wasysym") &&
+ params_.use_package("wasysym") != BufferParams::package_off &&
+ (params_.use_package("esint") != BufferParams::package_off || !isRequired("esint")))
+ packages << "\\usepackage{wasysym}\n";
+
// esint must be after amsmath (and packages requiring amsmath, like mhchem)
// and wasysym, since it will redeclare inconsistent integral symbols
if (mustProvide("esint") &&
if (mustProvide("subscript") && !isRequired("fixltx2e"))
packages << "\\usepackage{subscript}\n";
+ // footmisc must be loaded after setspace
+ // Set options here, load the package after the user preamble to
+ // avoid problems with manual loaded footmisc.
+ if (mustProvide("footmisc"))
+ packages << "\\PassOptionsToPackage{stable}{footmisc}\n";
+
return packages.str();
}
// other
if (mustProvide("ParagraphLeftIndent"))
macros << paragraphleftindent_def;
- if (mustProvide("NeedLyXFootnoteCode"))
- macros << floatingfootnote_def;
// some problems with tex->html converters
if (mustProvide("NeedTabularnewline"))