X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=49c55aaa511d6f52249d29b709a176d042a7c31a;hb=53f8d6d6d373460bdcfebd20d6f826e3915c84ff;hp=55c2fa1c98ff982a15b7c6e31d4bdae241b44e4d;hpb=d1a77eadc1cf16ee3e0bd5008c6a8f74f3087442;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 55c2fa1c98..49c55aaa51 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -87,11 +87,6 @@ static char const * const string_orientation[] = { }; -static char const * const string_footnotekinds[] = { - "footnote", "margin", "fig", "tab", "alg", "wide-fig", "wide-tab", "" -}; - - static char const * const tex_graphics[] = { "default", "dvialw", "dvilaser", "dvipdf", "dvipdfm", "dvipdfmx", "dvips", "dvipsone", "dvitops", "dviwin", "dviwindo", "dvi2ps", "emtex", @@ -122,7 +117,8 @@ ParSepTranslator const init_parseptranslator() ParSepTranslator const & parseptranslator() { - static ParSepTranslator translator = init_parseptranslator(); + static ParSepTranslator const translator = + init_parseptranslator(); return translator; } @@ -146,7 +142,8 @@ QuotesLangTranslator const init_quoteslangtranslator() QuotesLangTranslator const & quoteslangtranslator() { - static QuotesLangTranslator translator = init_quoteslangtranslator(); + static QuotesLangTranslator const translator = + init_quoteslangtranslator(); return translator; } @@ -196,7 +193,8 @@ static PaperSizeTranslator initPaperSizeTranslator() PaperSizeTranslator const & papersizetranslator() { - static PaperSizeTranslator translator = initPaperSizeTranslator(); + static PaperSizeTranslator const translator = + initPaperSizeTranslator(); return translator; } @@ -215,7 +213,8 @@ PaperOrientationTranslator const init_paperorientationtranslator() PaperOrientationTranslator const & paperorientationtranslator() { - static PaperOrientationTranslator translator = init_paperorientationtranslator(); + static PaperOrientationTranslator const translator = + init_paperorientationtranslator(); return translator; } @@ -234,7 +233,7 @@ SidesTranslator const init_sidestranslator() SidesTranslator const & sidestranslator() { - static SidesTranslator translator = init_sidestranslator(); + static SidesTranslator const translator = init_sidestranslator(); return translator; } @@ -254,7 +253,8 @@ PackageTranslator const init_packagetranslator() PackageTranslator const & packagetranslator() { - static PackageTranslator translator = init_packagetranslator(); + static PackageTranslator const translator = + init_packagetranslator(); return translator; } @@ -274,7 +274,8 @@ CiteEngineTypeTranslator const init_citeenginetypetranslator() CiteEngineTypeTranslator const & citeenginetypetranslator() { - static CiteEngineTypeTranslator translator = init_citeenginetypetranslator(); + static CiteEngineTypeTranslator const translator = + init_citeenginetypetranslator(); return translator; } @@ -296,7 +297,7 @@ SpaceTranslator const init_spacetranslator() SpaceTranslator const & spacetranslator() { - static SpaceTranslator translator = init_spacetranslator(); + static SpaceTranslator const translator = init_spacetranslator(); return translator; } @@ -365,8 +366,8 @@ BufferParams::BufferParams() biblio_style = "plain"; use_bibtopic = false; use_indices = false; - trackChanges = false; - outputChanges = false; + track_changes = false; + output_changes = false; use_default_options = true; maintain_unincluded_children = false; secnumdepth = 3; @@ -445,6 +446,8 @@ void BufferParams::use_package(std::string const & p, BufferParams::Package u) map const & BufferParams::auto_packages() { + // FIXME THREAD + // It is extremely unlikely that there could be a problem here, but... static map packages; if (packages.empty()) { // adding a package here implies a file format change! @@ -744,9 +747,9 @@ string BufferParams::readToken(Lexer & lex, string const & token, } else if (token == "\\use_indices") { lex >> use_indices; } else if (token == "\\tracking_changes") { - lex >> trackChanges; + lex >> track_changes; } else if (token == "\\output_changes") { - lex >> outputChanges; + lex >> output_changes; } else if (token == "\\branch") { lex.eatLine(); docstring branch = lex.getDocString(); @@ -1170,8 +1173,8 @@ void BufferParams::writeFile(ostream & os) const } } - os << "\\tracking_changes " << convert(trackChanges) << '\n' - << "\\output_changes " << convert(outputChanges) << '\n' + os << "\\tracking_changes " << convert(track_changes) << '\n' + << "\\output_changes " << convert(output_changes) << '\n' << "\\html_math_output " << html_math_output << '\n' << "\\html_css_as_file " << html_css_as_file << '\n' << "\\html_be_strict " << convert(html_be_strict) << '\n'; @@ -1194,7 +1197,7 @@ void BufferParams::validate(LaTeXFeatures & features) const if (columns > 1 && language->rightToLeft()) features.require("rtloutputdblcol"); - if (outputChanges) { + if (output_changes) { bool dvipost = LaTeXFeatures::isAvailable("dvipost"); bool xcolorulem = LaTeXFeatures::isAvailable("ulem") && LaTeXFeatures::isAvailable("xcolor"); @@ -1280,6 +1283,15 @@ void BufferParams::validate(LaTeXFeatures & features) const if (pdfoptions().colorlinks) features.require("color"); } + if (!listings_params.empty()) { + // do not test validity because listings_params is + // supposed to be valid + string par = + InsetListingsParams(listings_params).separatedParams(true); + // we can't support all packages, but we should load the color package + if (par.find("\\color", 0) != string::npos) + features.require("color"); + } // some languages are only available via polyglossia if (features.runparams().flavor == OutputParams::XETEX @@ -1530,21 +1542,6 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, os << "}\n"; } - if (!listings_params.empty() || features.isRequired("listings")) - os << "\\usepackage{listings}\n"; - - if (!listings_params.empty()) { - os << "\\lstset{"; - // do not test validity because listings_params is - // supposed to be valid - string par = - InsetListingsParams(listings_params).separatedParams(true); - // we can't support all packages, but we should load the color package - if (par.find("\\color", 0) != string::npos) - features.require("color"); - os << from_utf8(par) - << "}\n"; - } if (!features.isProvided("geometry") && (use_geometry || nonstandard_papersize)) { odocstringstream ods; @@ -1943,7 +1940,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, + atlyxpreamble + "\\makeatother\n\n"; // We try to load babel late, in case it interferes with other packages. - // Jurabib, hyperref and varioref have to be called after babel, though. + // Jurabib, hyperref, varioref and listings (bug 8995) have to be + // called after babel, though. if (use_babel && !features.isRequired("jurabib") && !features.isRequired("hyperref") && !features.isRequired("varioref") @@ -1955,10 +1953,22 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, features.needBabelLangOptions())) + '\n'; lyxpreamble += from_utf8(features.getBabelPostsettings()); } + if (!listings_params.empty() || features.isRequired("listings")) + lyxpreamble += "\\usepackage{listings}\n"; + if (!listings_params.empty()) { + lyxpreamble += "\\lstset{"; + // do not test validity because listings_params is + // supposed to be valid + string par = + InsetListingsParams(listings_params).separatedParams(true); + lyxpreamble += from_utf8(par); + lyxpreamble += "}\n"; + } // xunicode needs to be loaded at least after amsmath, amssymb, // esint and the other packages that provide special glyphs - if (features.runparams().flavor == OutputParams::XETEX) + if (features.runparams().flavor == OutputParams::XETEX + && useNonTeXFonts) lyxpreamble += "\\usepackage{xunicode}\n"; // Polyglossia must be loaded last @@ -2100,7 +2110,7 @@ LayoutFileIndex const & BufferParams::baseClassID() const } -void BufferParams::makeDocumentClass() +void BufferParams::makeDocumentClass(bool const clone) { if (!baseClass()) return; @@ -2116,7 +2126,7 @@ void BufferParams::makeDocumentClass() for (; it != en; ++it) mods.push_back(*it); - doc_class_ = getDocumentClass(*baseClass(), mods); + doc_class_ = getDocumentClass(*baseClass(), mods, clone); TextClass::ReturnValues success = TextClass::OK; if (!forced_local_layout_.empty()) @@ -2847,6 +2857,15 @@ void BufferParams::writeEncodingPreamble(otexstream & os, os << "\\usepackage{CJK}\n"; break; } + // Load the CJK package if needed by a secondary language. + // If the main encoding is some variant of UTF8, use CJKutf8. + if (encoding().package() != Encoding::CJK && features.mustProvide("CJK")) { + if (encoding().iconvName() == "UTF-8" + && LaTeXFeatures::isAvailable("CJKutf8")) + os << "\\usepackage{CJKutf8}\n"; + else + os << "\\usepackage{CJK}\n"; + } } }