"\\@mparswitchtrue\n");
+/////////////////////////////////////////////////////////////////////
+//
+// LyXHTML strings
+//
+/////////////////////////////////////////////////////////////////////
+
+static docstring const lyxnoun_style = from_ascii(
+ "dfn.lyxnoun {\n"
+ " font-variant: small-caps;\n"
+ "}\n");
+
+
+// this is how it normally renders, but it might not always do so.
+static docstring const lyxstrikeout_style = from_ascii(
+ "del.strikeout {\n"
+ " text-decoration: line-through;\n"
+ "}\n");
+
+
/////////////////////////////////////////////////////////////////////
//
// LaTeXFeatures
{}
-LaTeXFeatures::LangPackage LaTeXFeatures::langPackage(bool englishbabel) const
+LaTeXFeatures::LangPackage LaTeXFeatures::langPackage() const
{
string const local_lp = bufferParams().lang_package;
* If babel is selected (either directly or via the "auto"
* mechanism), we really do only require it if we have
* a language that needs it.
- * English alone normally does not require babel (since it is
- * the default language of LaTeX). However, in some cases we
- * need to surpass this exception (see Font::validate).
*/
bool const polyglossia_required =
isRequired("polyglossia")
&& !isProvided("babel")
&& this->hasOnlyPolyglossiaLanguages();
bool const babel_required =
- ((englishbabel || bufferParams().language->lang() != "english")
- && !bufferParams().language->babel().empty())
+ !bufferParams().language->babel().empty()
|| !this->getBabelLanguages().empty();
if (local_lp == "auto") {
for (LanguageList::const_iterator cit = begin;
cit != UsedLanguages_.end();
++cit) {
- if ((*cit)->babel().empty() && !(*cit)->polyglossia().empty() && (*cit)->requires().empty())
+ if ((*cit)->isPolyglossiaExclusive())
return true;
}
return false;
"mathrsfs",
"mathabx",
"mathtools",
- "cancel",
+ // "cancel",
"ascii",
"url",
"covington",
"tfrupee"
};
+char const * bibliofeatures[] = {
+ // Known bibliography packages (will be loaded before natbib)
+ "achicago",
+ "apacite",
+ "apalike",
+ "astron",
+ "authordate1-4",
+ "chicago",
+ "harvard",
+ "mslapa",
+ "named"
+};
+
+int const nb_bibliofeatures = sizeof(bibliofeatures) / sizeof(char const *);
+
int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
}
if (mustProvide("fixltx2e"))
packages << "\\usepackage{fixltx2e}\n";
+ 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
params_.use_package("yhmath") != BufferParams::package_off)
packages << "\\usepackage{yhmath}\n";
+ // stmaryrd must be loaded after amsmath
+ if (mustProvide("stmaryrd") &&
+ params_.use_package("stmaryrd") != BufferParams::package_off)
+ packages << "\\usepackage{stmaryrd}\n";
+
+ if (mustProvide("stackrel") &&
+ params_.use_package("stackrel") != BufferParams::package_off)
+ packages << "\\usepackage{stackrel}\n";
+
if (mustProvide("undertilde") &&
params_.use_package("undertilde") != BufferParams::package_off)
packages << "\\usepackage{undertilde}\n";
params_.use_package("esint") != BufferParams::package_off)
packages << "\\usepackage{esint}\n";
+ // Known bibliography packages (simple \usepackage{package})
+ for (int i = 0; i < nb_bibliofeatures; ++i) {
+ if (mustProvide(bibliofeatures[i]))
+ packages << "\\usepackage{"
+ << bibliofeatures[i] << "}\n";
+ }
+
+ // Compatibility between achicago and natbib
+ if (mustProvide("achicago") && mustProvide("natbib"))
+ packages << "\\let\\achicagobib\\thebibliography\n";
+
// natbib.sty
// Some classes load natbib themselves, but still allow (or even require)
// plain numeric citations (ReVTeX is such a case, see bug 5182).
packages << "]{natbib}\n";
}
+ // Compatibility between achicago and natbib
+ if (mustProvide("achicago") && mustProvide("natbib")) {
+ packages << "\\let\\thebibliography\\achicagobib\n";
+ packages << "\\let\\SCcite\\astroncite\n";
+ packages << "\\let\\UnexpandableProtect\\protect\n";
+ }
+
// jurabib -- we need version 0.6 at least.
if (mustProvide("jurabib"))
packages << "\\usepackage{jurabib}[2004/01/25]\n";
DocumentClass const & tclass = params_.documentClass();
odocstringstream tcpreamble;
+ if (mustProvide("noun"))
+ tcpreamble << lyxnoun_style;
+ // this isn't exact, but it won't hurt that much if it
+ // wasn't for this.
+ if (mustProvide("ulem"))
+ tcpreamble << lyxstrikeout_style;
+
tcpreamble << tclass.htmlstyles();
list<docstring>::const_iterator cit = usedLayouts_.begin();