commit f4dd0ba56116a036f50674396e69ec3d48bf9625
Author: Georg Baum <[email protected]>
Date:   Wed Feb 26 20:43:04 2014 +0100

    Load listings after babel (bug #8995)
    
    Babel makes the character ':' active in french documents, and the listings
    package cannot cope with that if it is loaded before babel. If it is loaded
    after babel it works. This makes the french EmbeddedObjects manual 
compilable.

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 77769b2..3b85ff7 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -1280,6 +1280,15 @@ void BufferParams::validate(LaTeXFeatures & features) 
const
                if (pdfoptions().colorlinks)
                        features.require("color");
        }
+       if (!listings_params.empty()) {
+               // do not test validity because listings_params is
+               // supposed to be valid
+               string par =
+                       
InsetListingsParams(listings_params).separatedParams(true);
+               // we can't support all packages, but we should load the color 
package
+               if (par.find("\\color", 0) != string::npos)
+                       features.require("color");
+       }
 
        // some languages are only available via polyglossia
        if (features.runparams().flavor == OutputParams::XETEX
@@ -1530,21 +1539,6 @@ bool BufferParams::writeLaTeX(otexstream & os, 
LaTeXFeatures & features,
                os << "}\n";
        }
 
-       if (!listings_params.empty() || features.isRequired("listings"))
-               os << "\\usepackage{listings}\n";
-
-       if (!listings_params.empty()) {
-               os << "\\lstset{";
-               // do not test validity because listings_params is
-               // supposed to be valid
-               string par =
-                       
InsetListingsParams(listings_params).separatedParams(true);
-               // we can't support all packages, but we should load the color 
package
-               if (par.find("\\color", 0) != string::npos)
-                       features.require("color");
-               os << from_utf8(par)
-                  << "}\n";
-       }
        if (!features.isProvided("geometry")
            && (use_geometry || nonstandard_papersize)) {
                odocstringstream ods;
@@ -1943,7 +1937,8 @@ 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, hyperref and varioref have to be called after babel, though.
+       // Jurabib, hyperref, varioref and listings (bug 8995) have to be
+       // called after babel, though.
        if (use_babel && !features.isRequired("jurabib")
            && !features.isRequired("hyperref")
                && !features.isRequired("varioref")
@@ -1955,6 +1950,17 @@ bool BufferParams::writeLaTeX(otexstream & os, 
LaTeXFeatures & features,
                                                   
features.needBabelLangOptions())) + '\n';
                lyxpreamble += from_utf8(features.getBabelPostsettings());
        }
+       if (!listings_params.empty() || features.isRequired("listings"))
+               lyxpreamble += "\\usepackage{listings}\n";
+       if (!listings_params.empty()) {
+               lyxpreamble += "\\lstset{";
+               // do not test validity because listings_params is
+               // supposed to be valid
+               string par =
+                       
InsetListingsParams(listings_params).separatedParams(true);
+               lyxpreamble += from_utf8(par);
+               lyxpreamble += "}\n";
+       }
 
        // xunicode needs to be loaded at least after amsmath, amssymb,
        // esint and the other packages that provide special glyphs

Reply via email to