#include "lyx_sty.h"
#include "lyxrc.h"
+#include "support/docstream.h"
#include "support/filetools.h"
-#include <sstream>
-using lyx::support::isSGMLFilename;
-using lyx::support::libFileSearch;
-using lyx::support::makeRelPath;
-using lyx::support::onlyPath;
+namespace lyx {
+
+using support::isSGMLFilename;
+using support::libFileSearch;
+using support::makeRelPath;
+using support::onlyPath;
using std::endl;
using std::find;
using std::ostringstream;
using std::set;
-namespace biblio = lyx::biblio;
-
-
LaTeXFeatures::PackagesList LaTeXFeatures::packages_;
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;
}
-void LaTeXFeatures::includeFile(string const & key, string const & name)
+void LaTeXFeatures::includeFile(docstring const & key, string const & name)
{
IncludedFiles_[key] = name;
}
"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
}
// shadecolor for shaded
if (isRequired("framed")) {
- lyx::RGBColor c = lyx::RGBColor(lcolor.getX11Name(LColor::shadedbg));
+ RGBColor c = RGBColor(lcolor.getX11Name(LColor::shadedbg));
packages << "\\definecolor{shadecolor}{rgb}{"
<< c.r/255 << ',' << c.g/255 << ',' << c.b/255 << "}\n";
}
}
// 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();
}
-string const LaTeXFeatures::getLyXSGMLEntities() const
+docstring const LaTeXFeatures::getLyXSGMLEntities() const
{
// Definition of entities used in the document that are LyX related.
- ostringstream entities;
+ odocstringstream entities;
if (isRequired("lyxarrow")) {
entities << "<!ENTITY lyxarrow \"->\">" << '\n';
}
-string const LaTeXFeatures::getIncludedFiles(string const & fname) const
+docstring const LaTeXFeatures::getIncludedFiles(string const & fname) const
{
- ostringstream sgmlpreamble;
+ odocstringstream sgmlpreamble;
string const basename = onlyPath(fname);
FileMap::const_iterator end = IncludedFiles_.end();
fi != end; ++fi)
sgmlpreamble << "\n<!ENTITY " << fi->first
<< (isSGMLFilename(fi->second) ? " SYSTEM \"" : " \"")
- << makeRelPath(fi->second, basename) << "\">";
+ << from_ascii(makeRelPath(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;
}
}
}
}
+
+
+} // namespace lyx