X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=bb2391ca115926533f3487f9fd6c511f0ebb8dba;hb=3d4076b598deb18660e50ec9c327efc3b15f15d0;hp=4a009aa009ff51a4f66716d22a339a14a8e654f6;hpb=25e4bf4b27b5b404e706ac7cf6f9f6c48cb57b33;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 4a009aa009..bb2391ca11 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -335,8 +335,7 @@ BufferParams::Impl::Impl() BufferParams::Impl * BufferParams::MemoryTraits::clone(BufferParams::Impl const * ptr) { - LASSERT(ptr, /**/); - + LBUFERR(ptr); return new BufferParams::Impl(*ptr); } @@ -423,7 +422,7 @@ BufferParams::BufferParams() docstring BufferParams::B_(string const & l10n) const { - LASSERT(language, /**/); + LASSERT(language, return from_utf8(l10n)); return getMessages(language->code()).get(l10n); } @@ -443,19 +442,31 @@ void BufferParams::use_package(std::string const & p, BufferParams::Package u) } -vector const & BufferParams::auto_packages() +map const & BufferParams::auto_packages() { - static vector packages; + static map packages; if (packages.empty()) { // adding a package here implies a file format change! - packages.push_back("amsmath"); - packages.push_back("amssymb"); - packages.push_back("esint"); - packages.push_back("mathdots"); - packages.push_back("mathtools"); - packages.push_back("mhchem"); - packages.push_back("stmaryrd"); - packages.push_back("undertilde"); + packages["amsmath"] = + N_("The LaTeX package amsmath is only used if AMS formula types or symbols from the AMS math toolbars are inserted into formulas"); + packages["amssymb"] = + N_("The LaTeX package amssymb is only used if symbols from the AMS math toolbars are inserted into formulas"); + packages["cancel"] = + N_("The LaTeX package cancel is only used if \\cancel commands are used in formulas"); + packages["esint"] = + N_("The LaTeX package esint is only used if special integral symbols are inserted into formulas"); + packages["mathdots"] = + N_("The LaTeX package mathdots is only used if the command \\iddots is inserted into formulas"); + packages["mathtools"] = + N_("The LaTeX package mathtools is only used if some mathematical relations are inserted into formulas"); + packages["mhchem"] = + N_("The LaTeX package mhchem is only used if either the command \\ce or \\cf is inserted into formulas"); + packages["stackrel"] = + N_("The LaTeX package stackrel is only used if the command \\stackrel with subscript is inserted into formulas"); + packages["stmaryrd"] = + N_("The LaTeX package stmaryrd is only used if symbols from the St Mary's Road symbol font for theoretical computer science are inserted into formulas"); + packages["undertilde"] = + N_("The LaTeX package undertilde is only used if you use the math frame decoration 'utilde'"); } return packages; } @@ -499,28 +510,28 @@ IndicesList const & BufferParams::indiceslist() const Bullet & BufferParams::temp_bullet(lyx::size_type const index) { - LASSERT(index < 4, /**/); + LASSERT(index < 4, return pimpl_->temp_bullets[0]); return pimpl_->temp_bullets[index]; } Bullet const & BufferParams::temp_bullet(lyx::size_type const index) const { - LASSERT(index < 4, /**/); + LASSERT(index < 4, return pimpl_->temp_bullets[0]); return pimpl_->temp_bullets[index]; } Bullet & BufferParams::user_defined_bullet(lyx::size_type const index) { - LASSERT(index < 4, /**/); + LASSERT(index < 4, return pimpl_->temp_bullets[0]); return pimpl_->user_defined_bullets[index]; } Bullet const & BufferParams::user_defined_bullet(lyx::size_type const index) const { - LASSERT(index < 4, /**/); + LASSERT(index < 4, return pimpl_->temp_bullets[0]); return pimpl_->user_defined_bullets[index]; } @@ -586,8 +597,9 @@ string BufferParams::readToken(Lexer & lex, string const & token, // be available. string tcp; LayoutFileList & bcl = LayoutFileList::get(); - if (tcp.empty() && !filepath.empty()) + if (!filepath.empty()) tcp = bcl.addLocalLayout(classname, filepath.absFileName()); + // that returns non-empty if a "local" layout file is found. if (!tcp.empty()) setBaseClass(tcp); else @@ -1024,10 +1036,11 @@ void BufferParams::writeFile(ostream & os) const os << "\\papersize " << string_papersize[papersize] << "\n\\use_geometry " << convert(use_geometry); - vector const & packages = auto_packages(); - for (size_t i = 0; i < packages.size(); ++i) - os << "\n\\use_package " << packages[i] << ' ' - << use_package(packages[i]); + map const & packages = auto_packages(); + for (map::const_iterator it = packages.begin(); + it != packages.end(); ++it) + os << "\n\\use_package " << it->first << ' ' + << use_package(it->first); os << "\n\\cite_engine "; @@ -1750,10 +1763,12 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg144349.html lyxpreamble += from_ascii(features.getColorOptions()); - // If we use hyperref, jurabib, japanese, or vietnamese, we have to call babel before them. + // If we use hyperref, jurabib, japanese, varioref or vietnamese, + // we have to call babel before if (use_babel && (features.isRequired("jurabib") || features.isRequired("hyperref") + || features.isRequired("varioref") || features.isRequired("vietnamese") || features.isRequired("japanese"))) { // FIXME UNICODE @@ -1912,9 +1927,10 @@ 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 and Hyperref have to be called after babel, though. + // Jurabib, hyperref and varioref have to be called after babel, though. if (use_babel && !features.isRequired("jurabib") && !features.isRequired("hyperref") + && !features.isRequired("varioref") && !features.isRequired("vietnamese") && !features.isRequired("japanese")) { // FIXME UNICODE @@ -2145,16 +2161,6 @@ bool BufferParams::isExportable(string const & format) const } -namespace { - -bool formatSorter(Format const * lhs, Format const * rhs) -{ - return _(lhs->prettyname()) < _(rhs->prettyname()); -} - -} - - vector BufferParams::exportableFormats(bool only_viewable) const { vector const backs = backends(); @@ -2171,7 +2177,6 @@ vector BufferParams::exportableFormats(bool only_viewable) const theConverters().getReachable(*it, only_viewable, false, excludes); result.insert(result.end(), r.begin(), r.end()); } - sort(result.begin(), result.end(), formatSorter); return result; } @@ -2207,8 +2212,11 @@ vector BufferParams::backends() const v.push_back("xetex"); } else if (buffmt == "xetex") { v.push_back("xetex"); - v.push_back("luatex"); - v.push_back("dviluatex"); + // FIXME: need to test all languages (bug 8205) + if (!language || !language->isPolyglossiaExclusive()) { + v.push_back("luatex"); + v.push_back("dviluatex"); + } } else v.push_back(buffmt); @@ -2785,7 +2793,7 @@ void BufferParams::writeEncodingPreamble(otexstream & os, // do not load inputenc if japanese is used if (features.isRequired("japanese")) break; - os << "\\usepackage[" << from_ascii(inputenc) + os << "\\usepackage[" << from_ascii(encoding().latexName()) << "]{inputenc}\n"; break; case Encoding::CJK: @@ -2912,10 +2920,10 @@ Encoding const & BufferParams::encoding() const // This check will not work with XeTeX/LuaTeX and tex fonts. // Thus we have to reset the encoding in Buffer::makeLaTeXFile. if (useNonTeXFonts) - return *(encodings.fromLaTeXName("utf8-plain")); + return *(encodings.fromLyXName("utf8-plain")); if (inputenc == "auto" || inputenc == "default") return *language->encoding(); - Encoding const * const enc = encodings.fromLaTeXName(inputenc); + Encoding const * const enc = encodings.fromLyXName(inputenc); if (enc) return *enc; LYXERR0("Unknown inputenc value `" << inputenc