X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=ba261ec7989d42a35ea5688af18c78b96a9b5e64;hb=14001c49fe0fb3d95a0f69f63344e7ae59d28180;hp=66dadbee583f65965169df8189b34370ac01bc49;hpb=5f877e218a2e35e2e4a8a97b0fa60626c5b73abf;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 66dadbee58..ba261ec798 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -336,6 +336,7 @@ BufferParams::BufferParams() use_geometry = false; use_amsmath = package_auto; use_esint = package_auto; + use_mhchem = package_auto; cite_engine_ = ENGINE_BASIC; use_bibtopic = false; use_indices = false; @@ -345,6 +346,7 @@ BufferParams::BufferParams() secnumdepth = 3; tocdepth = 3; language = default_language; + fontenc = "global"; fontsRoman = "default"; fontsSans = "default"; fontsTypewriter = "default"; @@ -373,6 +375,8 @@ BufferParams::BufferParams() } // default index indiceslist().addDefault(B_("Index")); + html_be_strict = true; + html_use_mathml = true; } @@ -556,6 +560,9 @@ string BufferParams::readToken(Lexer & lex, string const & token, } else if (token == "\\index_command") { lex.eatLine(); index_command = lex.getString(); + } else if (token == "\\fontencoding") { + lex.eatLine(); + fontenc = lex.getString(); } else if (token == "\\font_roman") { lex.eatLine(); fontsRoman = lex.getString(); @@ -612,6 +619,10 @@ string BufferParams::readToken(Lexer & lex, string const & token, int useesint; lex >> useesint; use_esint = packagetranslator().find(useesint); + } else if (token == "\\use_mhchem") { + int usemhchem; + lex >> usemhchem; + use_mhchem = packagetranslator().find(usemhchem); } else if (token == "\\cite_engine") { string engine; lex >> engine; @@ -644,7 +655,6 @@ string BufferParams::readToken(Lexer & lex, string const & token, if (branch_ptr) branch_ptr->setFilenameSuffix(lex.getInteger()); } - // not yet operational if (tok == "\\color") { lex.eatLine(); string color = lex.getString(); @@ -660,6 +670,7 @@ string BufferParams::readToken(Lexer & lex, string const & token, } else if (token == "\\index") { lex.eatLine(); docstring index = lex.getDocString(); + docstring shortcut; indiceslist().add(index); while (true) { lex.next(); @@ -669,10 +680,10 @@ string BufferParams::readToken(Lexer & lex, string const & token, Index * index_ptr = indiceslist().find(index); if (tok == "\\shortcut") { lex.next(); + shortcut = lex.getDocString(); if (index_ptr) - index_ptr->setShortcut(lex.getDocString()); + index_ptr->setShortcut(shortcut); } - // not yet operational if (tok == "\\color") { lex.eatLine(); string color = lex.getString(); @@ -682,7 +693,8 @@ string BufferParams::readToken(Lexer & lex, string const & token, if (color == "none") color = lcolor.getX11Name(Color_background); // FIXME UNICODE - lcolor.setColor(to_utf8(index), color); + if (!shortcut.empty()) + lcolor.setColor(to_utf8(shortcut), color); } } } else if (token == "\\author") { @@ -758,6 +770,10 @@ string BufferParams::readToken(Lexer & lex, string const & token, toktmp << endl; return toktmp; } + } else if (token == "\\html_use_mathml") { + lex >> html_use_mathml; + } else if (token == "\\html_be_strict") { + lex >> html_be_strict; } else { lyxerr << "BufferParams::readToken(): Unknown token: " << token << endl; @@ -832,6 +848,7 @@ void BufferParams::writeFile(ostream & os) const if (language != ignore_language) os << "\\language " << language->lang() << '\n'; os << "\\inputencoding " << inputenc + << "\n\\fontencoding " << fontenc << "\n\\font_roman " << fontsRoman << "\n\\font_sans " << fontsSans << "\n\\font_typewriter " << fontsTypewriter @@ -862,6 +879,7 @@ void BufferParams::writeFile(ostream & os) const << "\n\\use_geometry " << convert(use_geometry) << "\n\\use_amsmath " << use_amsmath << "\n\\use_esint " << use_esint + << "\n\\use_mhchem " << use_mhchem << "\n\\cite_engine " << citeenginetranslator().find(cite_engine_) << "\n\\use_bibtopic " << convert(use_bibtopic) << "\n\\use_indices " << convert(use_indices) @@ -955,8 +973,10 @@ void BufferParams::writeFile(ostream & os) const } } - os << "\\tracking_changes " << convert(trackChanges) << "\n"; - os << "\\output_changes " << convert(outputChanges) << "\n"; + os << "\\tracking_changes " << convert(trackChanges) << "\n" + << "\\output_changes " << convert(outputChanges) << "\n" + << "\\html_use_mathml " << convert(html_use_mathml) << "\n" + << "\\html_be_strict " << convert(html_be_strict) << "\n"; os << pimpl_->authorlist; } @@ -1011,6 +1031,8 @@ void BufferParams::validate(LaTeXFeatures & features) const features.require("amsmath"); if (use_esint == package_on) features.require("esint"); + if (use_mhchem == package_on) + features.require("mhchem"); // Document-level line spacing if (spacing().getSpace() != Spacing::Single && !spacing().isDefault()) @@ -1042,7 +1064,7 @@ void BufferParams::validate(LaTeXFeatures & features) const features.require("hyperref"); // due to interferences with babel and hyperref, the color package has to // be loaded after hyperref when hyperref is used with the colorlinks - // option, see http://bugzilla.lyx.org/show_bug.cgi?id=5291 + // option, see http://www.lyx.org/trac/ticket/5291 if (pdfoptions().colorlinks) features.require("color"); } @@ -1159,7 +1181,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, size_t mongo = language_options.str().find("mongolian"); // if Japanese is used, babel must directly be loaded // with language options, not in the class options, see - // http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4 + // http://www.lyx.org/trac/ticket/4597#c4 size_t japan = language_options.str().find("japanese"); if (lyxrc.language_global_options && !language_options.str().empty() && viet == string::npos && japan == string::npos @@ -1207,19 +1229,18 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, << from_ascii(fontsDefaultFamily) << "}\n"; // set font encoding - // this one is not per buffer // for arabic_arabi and farsi we also need to load the LAE and // LFE encoding // XeTeX works without fontenc - if (lyxrc.fontenc != "default" && language->lang() != "japanese" + if (font_encoding() != "default" && language->lang() != "japanese" && !useXetex) { if (language->lang() == "arabic_arabi" || language->lang() == "farsi") { - os << "\\usepackage[" << from_ascii(lyxrc.fontenc) + os << "\\usepackage[" << from_ascii(font_encoding()) << ",LFE,LAE]{fontenc}\n"; texrow.newline(); } else { - os << "\\usepackage[" << from_ascii(lyxrc.fontenc) + os << "\\usepackage[" << from_ascii(font_encoding()) << "]{fontenc}\n"; texrow.newline(); } @@ -1428,7 +1449,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, // due to interferences with babel and hyperref, the color package has to // be loaded (when it is not already loaded) before babel when hyperref // is used with the colorlinks option, see - // http://bugzilla.lyx.org/show_bug.cgi?id=5291 + // http://www.lyx.org/trac/ticket/5291 // we decided therefore to load color always before babel, see // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg144349.html lyxpreamble += from_ascii(features.getColorOptions()); @@ -1974,6 +1995,12 @@ string const BufferParams::dvips_options() const } +string const BufferParams::font_encoding() const +{ + return (fontenc == "global") ? lyxrc.fontenc : fontenc; +} + + string BufferParams::babelCall(string const & lang_opts) const { string lang_pack = lyxrc.language_package; @@ -1997,7 +2024,7 @@ string BufferParams::babelCall(string const & lang_opts) const size_t mongo = lang_opts.find("mongolian"); // If Japanese is used, babel must directly be loaded with the // language options, see - // http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4 + // http://www.lyx.org/trac/ticket/4597#c4 size_t japan = lang_opts.find("japanese"); if (!lyxrc.language_global_options || viet != string::npos || japan != string::npos || latvian != string::npos @@ -2189,7 +2216,7 @@ string const BufferParams::loadFonts(string const & rm, // AE else if (rm == "ae") { // not needed when using OT1 font encoding. - if (lyxrc.fontenc != "default") + if (font_encoding() != "default") os << "\\usepackage{ae,aecompl}\n"; } // Times @@ -2228,7 +2255,7 @@ string const BufferParams::loadFonts(string const & rm, // fourier supersedes utopia.sty, but does // not work with OT1 encoding. if (LaTeXFeatures::isAvailable("fourier") - && lyxrc.fontenc != "default") { + && font_encoding() != "default") { os << "\\usepackage"; if (osf || sc) { os << '[';