X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.cpp;h=20abc00c6cb94b55d4dc71fbf4c7f64581042500;hb=26ba2a65838731ce639a09539f617cb0f0be3b22;hp=69194b1fee5fb7e9797d5f9fd4205ce2950ef40d;hpb=9f258704aecc1dd42750eaf74787633c2bcd9d8a;p=lyx.git diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 69194b1fee..20abc00c6c 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -827,6 +827,12 @@ bool LaTeXFeatures::isAvailable(string const & name) } +bool LaTeXFeatures::isAvailableAtLeastFrom(string const & name, int const y, int const m, int const d) +{ + return LaTeXPackages::isAvailableAtLeastFrom(name, y, m, d); +} + + namespace { void addSnippet(std::list & list, TexString ts, bool allow_dupes) @@ -1207,10 +1213,6 @@ string const LaTeXFeatures::getColorOptions() const << "]{" << package << "}\n"; } - // pdfcolmk must be loaded after color - if (mustProvide("pdfcolmk")) - colors << "\\usepackage{pdfcolmk}\n"; - // the following 3 color commands must be set after color // is loaded and before pdfpages, therefore add the command // here define the set color @@ -1268,11 +1270,36 @@ string const LaTeXFeatures::getPackages() const // also unknown packages can be requested. They are silently // swallowed now. We should change this eventually. + // Simple hooks to add things before or after a given "simple" + // feature. Useful if loading order matters. + map before_simplefeature_; + map after_simplefeature_; + + // Babel languages with activated colon (such as French) break + // with prettyref. Work around that. + if (mustProvide("prettyref") && !runparams_.isFullUnicode() + && useBabel() && contains(getActiveChars(), ':')) { + before_simplefeature_["prettyref"] = + "% Make prettyref compatible with babel active colon\n" + "% (make ':' active in prettyref definitions)\n" + "\\edef\\lyxsavedcolcatcode{\\the\\catcode`\\:}\n" + "\\catcode`:=13\n"; + after_simplefeature_["prettyref"] = + "% restore original catcode for :\n" + "\\catcode`\\:=\\lyxsavedcolcatcode\\relax\n"; + } + // These are all the 'simple' includes. i.e // packages which we just \usepackage{package} + // potentially preceded and followed by the hook code for (char const * feature : simplefeatures) { - if (mustProvide(feature)) + if (mustProvide(feature)) { + if (before_simplefeature_.find(feature) != before_simplefeature_.end()) + packages << before_simplefeature_[feature]; packages << "\\usepackage{" << feature << "}\n"; + if (after_simplefeature_.find(feature) != after_simplefeature_.end()) + packages << after_simplefeature_[feature]; + } } // The rest of these packages are somewhat more complicated @@ -1365,7 +1392,7 @@ string const LaTeXFeatures::getPackages() const params_.use_package("undertilde") != BufferParams::package_off) packages << "\\usepackage{undertilde}\n"; - // [x]color and pdfcolmk are handled in getColorOptions() above + // [x]color is handled in getColorOptions() above // makeidx.sty if (isRequired("makeidx") || isRequired("splitidx")) { @@ -1502,19 +1529,21 @@ string const LaTeXFeatures::getPackages() const "\\usepackage{ulem}\n"; if (mustProvide("nomencl")) { + packages << "\\usepackage{nomencl}\n"; // Make it work with the new and old version of the package, // but don't use the compatibility option since it is // incompatible to other packages. - packages << "\\usepackage{nomencl}\n" - "% the following is useful when we have the old nomencl.sty package\n" - "\\providecommand{\\printnomenclature}{\\printglossary}\n" - "\\providecommand{\\makenomenclature}{\\makeglossary}\n" - "\\makenomenclature\n"; + if (!LaTeXFeatures::isAvailableAtLeastFrom("nomencl", 2005, 3, 31)) { + packages << "% Needed with nomencl < v4.1\n" + "\\providecommand{\\printnomenclature}{\\printglossary}\n" + "\\providecommand{\\makenomenclature}{\\makeglossary}\n"; + } + packages << "\\makenomenclature\n"; } // fixltx2e provides subscript if (mustProvide("subscript") && !isRequired("fixltx2e") - && !isAvailable("LaTeX-2005/12/01")) + && !isAvailableAtLeastFrom("LaTeX", 2005, 12)) packages << "\\usepackage{subscript}\n"; // footmisc must be loaded after setspace @@ -2158,37 +2187,6 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, } -docstring const LaTeXFeatures::getLyXSGMLEntities() const -{ - // Definition of entities used in the document that are LyX related. - odocstringstream entities; - - if (mustProvide("lyxarrow")) { - entities << "" << '\n'; - } - - return entities.str(); -} - - -docstring const LaTeXFeatures::getIncludedFiles(string const & fname) const -{ - odocstringstream sgmlpreamble; - // FIXME UNICODE - docstring const basename(from_utf8(onlyPath(fname))); - - FileMap::const_iterator end = IncludedFiles_.end(); - for (FileMap::const_iterator fi = IncludedFiles_.begin(); - fi != end; ++fi) - // FIXME UNICODE - sgmlpreamble << "\nfirst - << (isSGMLFileName(fi->second) ? " SYSTEM \"" : " \"") - << makeRelPath(from_utf8(fi->second), basename) << "\">"; - - return sgmlpreamble.str(); -} - - void LaTeXFeatures::showStruct() const { lyxerr << "LyX needs the following commands when LaTeXing:"