]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Update Win installer for new dictionary links. Untested.
[lyx.git] / src / LaTeXFeatures.cpp
index 69194b1fee5fb7e9797d5f9fd4205ce2950ef40d..20abc00c6cb94b55d4dc71fbf4c7f64581042500 100644 (file)
@@ -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<TexString> & 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<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
@@ -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 << "<!ENTITY lyxarrow \"-&gt;\">" << '\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 << "\n<!ENTITY " << fi->first
-                            << (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:"