#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;
packages_.push_back(name);
}
}
-
- return;
}
}
-void LaTeXFeatures::addExternalPreamble(string const & preamble)
+void LaTeXFeatures::addPreambleSnippet(string const & preamble)
{
FeaturesList::const_iterator begin = preamble_snippets_.begin();
FeaturesList::const_iterator end = preamble_snippets_.end();
LanguageList::const_iterator it = UsedLanguages_.begin();
LanguageList::const_iterator end = UsedLanguages_.end();
for (; it != end; ++it)
- if ((*it)->encoding()->latexName() != doc_encoding)
+ // thailatex does not use the inputenc package, but sets up
+ // babel directly for tis620-0 encoding, therefore we must
+ // not add tis620-0 to the encoding set.
+ if ((*it)->encoding()->latexName() != doc_encoding &&
+ (*it)->encoding()->name() != "tis620-0")
encodings.insert((*it)->encoding()->latexName());
return encodings;
}
"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"
}
-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;
}