#include "support/docstream.h"
#include "support/filetools.h"
-#include <sstream>
+#include "frontends/controllers/biblio.h"
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;
}
}
-bool LaTeXFeatures::isAvailable(string const & name) const
+bool LaTeXFeatures::isAvailable(string const & name)
{
if (packages_.empty())
getAvailable();
}
-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"
// natbib.sty
if (isRequired("natbib") && ! tclass.provides(LyXTextClass::natbib)) {
packages << "\\usepackage[";
- if (params_.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL) {
+ if (params_.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL) {
packages << "numbers";
} else {
packages << "authoryear";
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();
docstring const LaTeXFeatures::getIncludedFiles(string const & fname) const
{
odocstringstream sgmlpreamble;
- string const basename = onlyPath(fname);
+ // FIXME UNICODE
+ docstring const basename(from_utf8(onlyPath(fname)));
FileMap::const_iterator end = IncludedFiles_.end();
for (FileMap::const_iterator fi = IncludedFiles_.begin();
fi != end; ++fi)
+ // FIXME UNICODE
sgmlpreamble << "\n<!ENTITY " << fi->first
<< (isSGMLFilename(fi->second) ? " SYSTEM \"" : " \"")
- << from_ascii(makeRelPath(fi->second, basename)) << "\">";
+ << makeRelPath(from_utf8(fi->second), basename) << "\">";
return sgmlpreamble.str();
}
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;
}