]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Try another way to signal a false positive to coverity
[lyx.git] / src / LaTeXFeatures.cpp
index 4c993b6f7b9c55041a4a08e1e9b2f0490b5725d2..e19e771dd8fd2968a41311fa3d97bbc069dba691 100644 (file)
@@ -123,19 +123,19 @@ static docstring const textquotedbl_def = from_ascii(
 
 static docstring const textquotedblp_xetex_def = from_ascii(
        "\\providecommand\\textquotedblplain{%\n"
-       "  \\bgroup\\addfontfeatures{Mapping=}\\textquotedbl\\egroup}");
+       "  \\bgroup\\addfontfeatures{Mapping=}\\char34\\egroup}");
 
 static docstring const textquotedblp_luatex_def = from_ascii(
        "\\providecommand\\textquotedblplain{%\n"
-       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotedbl\\egroup}");
+       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\char34\\egroup}");
 
 static docstring const textquotesinglep_xetex_def = from_ascii(
        "\\providecommand\\textquotesingleplain{%\n"
-       "  \\bgroup\\addfontfeatures{Mapping=}\\textquotesingle\\egroup}");
+       "  \\bgroup\\addfontfeatures{Mapping=}\\char39\\egroup}");
 
 static docstring const textquotesinglep_luatex_def = from_ascii(
        "\\providecommand\\textquotesingleplain{%\n"
-       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotesingle\\egroup}");
+       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\char39\\egroup}");
 
 static docstring const paragraphleftindent_def = from_ascii(
        "\\newenvironment{LyXParagraphLeftIndent}[1]%\n"
@@ -591,8 +591,8 @@ bool LaTeXFeatures::isProvided(string const & name) const
        if (params_.useNonTeXFonts)
                return params_.documentClass().provides(name);
 
-       bool const ot1 = (params_.font_encoding() == "default"
-               || params_.font_encoding() == "OT1");
+       bool const ot1 = (params_.main_font_encoding() == "default"
+               || params_.main_font_encoding() == "OT1");
        bool const complete = (params_.fontsSans() == "default"
                && params_.fontsTypewriter() == "default");
        bool const nomath = (params_.fontsMath() == "default");
@@ -865,10 +865,11 @@ void LaTeXFeatures::getFontEncodings(vector<string> & encodings) const
 {
        // these must be loaded if glyphs of this script are used
        // unless a language providing them is used in the document
-       // FIXME: currently the option is written twice in this case
-       if (mustProvide("textgreek"))
+       if (mustProvide("textgreek")
+           && find(encodings.begin(), encodings.end(), "LGR") == encodings.end())
                encodings.insert(encodings.begin(), "LGR");
-       if (mustProvide("textcyr"))
+       if (mustProvide("textcyr")
+           && find(encodings.begin(), encodings.end(), "T2A") == encodings.end())
                encodings.insert(encodings.begin(), "T2A");
 
        LanguageList::const_iterator it  = UsedLanguages_.begin();
@@ -962,6 +963,7 @@ char const * bibliofeatures[] = {
        "authordate1-4",
        "babelbib",
        "bibgerm",
+       "chapterbib",
        "chicago",
        "chscite",
        "harvard",
@@ -1087,7 +1089,8 @@ string const LaTeXFeatures::getPackages() const
        // if fontspec or newtxmath is used, AMS packages have to be loaded
        // before fontspec (in BufferParams)
        string const amsPackages = loadAMSPackages();
-       bool const ot1 = (params_.font_encoding() == "default" || params_.font_encoding() == "OT1");
+       bool const ot1 = (params_.main_font_encoding() == "default"
+                         || params_.main_font_encoding() == "OT1");
        bool const use_newtxmath =
                theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
                        ot1, false, false) == "newtxmath";
@@ -1211,6 +1214,8 @@ string const LaTeXFeatures::getPackages() const
                        packages << "numbers";
                else
                        packages << "authoryear";
+               if (!params_.biblio_opts.empty())
+                       packages << ',' << params_.biblio_opts;
                packages << "]{natbib}\n";
        }
 
@@ -1222,8 +1227,12 @@ string const LaTeXFeatures::getPackages() const
        }
 
        // jurabib -- we need version 0.6 at least.
-       if (mustProvide("jurabib"))
-               packages << "\\usepackage{jurabib}[2004/01/25]\n";
+       if (mustProvide("jurabib")) {
+               packages << "\\usepackage";
+               if (!params_.biblio_opts.empty())
+                       packages << '[' << params_.biblio_opts << ']';
+               packages << "{jurabib}[2004/01/25]\n";
+       }
 
        // opcit -- we pass custombst as we output \bibliographystyle ourselves
        if (mustProvide("opcit")) {
@@ -1310,14 +1319,14 @@ TexString LaTeXFeatures::getMacros() const
 
        if (!usePolyglossia() && mustProvide("textgreek")) {
            // ensure LGR font encoding is defined also if fontenc is not loaded by LyX
-               if (params_.font_encoding() == "default")
+               if (params_.main_font_encoding() == "default")
                        macros << textgreek_LGR_def;
                macros << textgreek_def << '\n';
        }
 
        if (!usePolyglossia() && mustProvide("textcyr")) {
                // ensure T2A font encoding is set up also if fontenc is not loaded by LyX
-               if (params_.font_encoding() == "default")
+               if (params_.main_font_encoding() == "default")
                        macros << textcyr_T2A_def;
                macros << textcyr_def << '\n';
        }
@@ -1560,7 +1569,10 @@ docstring const LaTeXFeatures::getTClassPreamble() const
        list<docstring>::const_iterator cit = usedLayouts_.begin();
        list<docstring>::const_iterator end = usedLayouts_.end();
        for (; cit != end; ++cit)
-               tcpreamble << tclass[*cit].preamble();
+               // For InPreamble layouts, we output the preamble stuff earlier
+               // (before the layouts). See Paragraph::Private::validate.
+               if (!tclass[*cit].inpreamble)
+                       tcpreamble << tclass[*cit].preamble();
 
        cit = usedInsetLayouts_.begin();
        end = usedInsetLayouts_.end();