X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.cpp;h=20abc00c6cb94b55d4dc71fbf4c7f64581042500;hb=26ba2a65838731ce639a09539f617cb0f0be3b22;hp=0e678ea62a52af3d93fbc6af80cb1a6ca4aaf613;hpb=858b076ab7aed3f41e7ad97f1a3a2fbf0589d7bf;p=lyx.git diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 0e678ea62a..20abc00c6c 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -1213,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 @@ -1274,24 +1270,41 @@ 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 // than those above. - // Babel languages with activated colon (such as French) break - // with prettyref. Work around that. - if (!runparams_.isFullUnicode() && useBabel() - && mustProvide("prettyref") && contains(getActiveChars(), ':')) { - packages << "% Make prettyref compatible with babel active colon\n" - << "\\def\\prettyref#1{\\expandafter\\@prettyref\\detokenize{#1:}}\n"; - } - if (mustProvide("changebar")) { packages << "\\usepackage"; if (runparams_.flavor == Flavor::LaTeX @@ -1379,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")) { @@ -1516,14 +1529,16 @@ 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