]> git.lyx.org Git - lyx.git/blobdiff - src/BufferParams.cpp
Fix coverity issues about exceptions
[lyx.git] / src / BufferParams.cpp
index 1a5b6b9e602167add1cb1cd42e33da0ac183b9c8..03b1bd5e2300ca2adab9d76334dbda7d85e990e6 100644 (file)
@@ -415,6 +415,7 @@ BufferParams::BufferParams()
        fonts_default_family = "default";
        useNonTeXFonts = false;
        use_microtype = false;
+       use_dash_ligatures = true;
        fonts_expert_sc = false;
        fonts_old_figures = false;
        fonts_sans_scale[0] = 100;
@@ -523,6 +524,14 @@ map<string, string> const & BufferParams::auto_packages()
 }
 
 
+bool BufferParams::useBibtopic() const
+{
+       if (useBiblatex())
+               return false;
+       return (use_bibtopic || (!multibib.empty() && multibib != "child"));
+}
+
+
 AuthorList & BufferParams::authors()
 {
        return pimpl_->authorlist;
@@ -804,6 +813,8 @@ string BufferParams::readToken(Lexer & lex, string const & token,
                lex >> fonts_cjk;
        } else if (token == "\\use_microtype") {
                lex >> use_microtype;
+       } else if (token == "\\use_dash_ligatures") {
+               lex >> use_dash_ligatures;
        } else if (token == "\\paragraph_separation") {
                string parsep;
                lex >> parsep;
@@ -1188,6 +1199,7 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
                os << "\\font_cjk " << fonts_cjk << '\n';
        }
        os << "\\use_microtype " << convert<string>(use_microtype) << '\n';
+       os << "\\use_dash_ligatures " << convert<string>(use_dash_ligatures) << '\n';
        os << "\\graphics " << graphics_driver << '\n';
        os << "\\default_output_format " << default_output_format << '\n';
        os << "\\output_sync " << output_sync << '\n';
@@ -1638,7 +1650,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 
        // if we use fontspec or newtxmath, we have to load the AMS packages here
        string const ams = features.loadAMSPackages();
-       bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
+       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
        bool const use_newtxmath =
                theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getUsedPackage(
                        ot1, false, false) == "newtxmath";
@@ -1665,7 +1677,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        // set font encoding
        // XeTeX and LuaTeX (with OS fonts) do not need fontenc
        if (!useNonTeXFonts && !features.isProvided("fontenc")
-           && font_encoding() != "default") {
+           && main_font_encoding() != "default") {
                // get main font encodings
                vector<string> fontencs = font_encodings();
                // get font encodings of secondary languages
@@ -2168,12 +2180,19 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                os << "}\n";
        }
 
-       // xunicode needs to be loaded at least after amsmath, amssymb,
+       // xunicode only needs to be loaded if tipa is used
+       // (the rest is obsoleted by the new TU encoding).
+       // It needs to be loaded at least after amsmath, amssymb,
        // esint and the other packages that provide special glyphs
-       // The package only supports XeTeX currently.
-       if (features.runparams().flavor == OutputParams::XETEX
-           && useNonTeXFonts)
+       if (features.mustProvide("tipa") && useNonTeXFonts) {
+               // The package officially only supports XeTeX, but also works
+               // with LuaTeX. Thus we work around its XeTeX test.
+               if (features.runparams().flavor != OutputParams::XETEX) {
+                       os << "% Pretend to xunicode that we are XeTeX\n"
+                          << "\\def\\XeTeXpicfile{}\n";
+               }
                os << "\\usepackage{xunicode}\n";
+       }
 
        // Polyglossia must be loaded last ...
        if (use_polyglossia) {
@@ -2218,7 +2237,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                                delim = ",";
                        }
                }
-               if (!multibib.empty()) {
+               if (!multibib.empty() && multibib != "child") {
                        opts += delim + "refsection=" + multibib;
                        delim = ",";
                }
@@ -2977,7 +2996,7 @@ string const BufferParams::dvips_options() const
 }
 
 
-string const BufferParams::font_encoding() const
+string const BufferParams::main_font_encoding() const
 {
        return font_encodings().empty() ? "default" : font_encodings().back();
 }
@@ -3213,7 +3232,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
        }
 
        // Tex Fonts
-       bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
+       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
        bool const dryrun = features.runparams().dryrun;
        bool const complete = (fontsSans() == "default" && fontsTypewriter() == "default");
        bool const nomath = (fontsMath() == "default");
@@ -3290,8 +3309,12 @@ bool BufferParams::addCiteEngine(vector<string> const & engine)
 
 string const & BufferParams::defaultBiblioStyle() const
 {
-       map<string, string> bs = documentClass().defaultBiblioStyle();
-       return bs[theCiteEnginesList.getTypeAsString(citeEngineType())];
+       map<string, string> const & bs = documentClass().defaultBiblioStyle();
+       auto cit = bs.find(theCiteEnginesList.getTypeAsString(citeEngineType()));
+       if (cit != bs.end())
+               return cit->second;
+       else
+               return empty_string();
 }