#include "support/docstream.h"
#include "support/filetools.h"
-#include <sstream>
namespace lyx {
void LaTeXFeatures::getAvailable()
{
LyXLex lex(0, 0);
- string real_file = libFileSearch("", "packages.lst");
+ support::FileName const real_file = libFileSearch("", "packages.lst");
if (real_file.empty())
return;
"nicefrac",
"tipa",
"framed",
+ "textcomp",
};
int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
if (isRequired("amsmath")
&& !tclass.provides(LyXTextClass::amsmath)
- && params_.use_amsmath != BufferParams::AMS_OFF) {
+ && params_.use_amsmath != BufferParams::package_off) {
packages << "\\usepackage{amsmath}\n";
}
// wasysym is a simple feature, but it must be after amsmath if both
// are used
- if (isRequired("wasysym"))
+ // wasysym redefines some integrals (e.g. iint) from amsmath. That
+ // leads to inconsistent integrals. We only load this package if
+ // esint is used, since esint redefines all relevant integral
+ // symbols from wasysym and amsmath.
+ // See http://bugzilla.lyx.org/show_bug.cgi?id=1942
+ if (isRequired("wasysym") && isRequired("esint") &&
+ params_.use_esint != BufferParams::package_off)
packages << "\\usepackage{wasysym}\n";
// color.sty
}
// amssymb.sty
- if (isRequired("amssymb") || params_.use_amsmath == BufferParams::AMS_ON)
+ if (isRequired("amssymb") || params_.use_amsmath == BufferParams::package_on)
packages << "\\usepackage{amssymb}\n";
+
+ // esint must be after amsmath and wasysym, since it will redeclare
+ // inconsistent integral symbols
+ if (isRequired("esint") && params_.use_esint != BufferParams::package_off)
+ packages << "\\usepackage{esint}\n";
+
// url.sty
if (isRequired("url") && ! tclass.provides(LyXTextClass::url))
packages << "\\IfFileExists{url.sty}{\\usepackage{url}}\n"
packages << "\\usepackage[dot]{bibtopic}\n";
}
+ if (isRequired("xy"))
+ packages << "\\usepackage[all]{xy}\n";
+
+ if (isRequired("nomencl")) {
+ packages << "\\usepackage{nomencl}[2005/09/22]\n"
+ << "\\makenomenclature\n";
+ }
+
return packages.str();
}
}
-string const LaTeXFeatures::getTClassPreamble() const
+docstring const LaTeXFeatures::getTClassPreamble() const
{
// the text class specific preamble
LyXTextClass const & tclass = params_.getLyXTextClass();
- ostringstream tcpreamble;
+ odocstringstream tcpreamble;
tcpreamble << tclass.preamble();
lyxerr << "LyX needs the following commands when LaTeXing:"
<< "\n***** Packages:" << getPackages()
<< "\n***** Macros:" << getMacros()
- << "\n***** Textclass stuff:" << getTClassPreamble()
+ << "\n***** Textclass stuff:" << to_utf8(getTClassPreamble())
<< "\n***** done." << endl;
}