]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Update Win installer for new dictionary links. Untested.
[lyx.git] / src / LaTeXFeatures.cpp
index 0e678ea62a52af3d93fbc6af80cb1a6ca4aaf613..20abc00c6cb94b55d4dc71fbf4c7f64581042500 100644 (file)
@@ -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<string, string> before_simplefeature_;
+       map<string, string> 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