]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Extend LATEXIFY command param handling and add literal param.
[lyx.git] / src / LaTeXFeatures.cpp
index 777924c5a2b454576ec3b712becd33c76564a541..08e1470561e7cd97ffde86067286a4a65ba9bb99 100644 (file)
@@ -118,6 +118,25 @@ static docstring const guilsinglright_def = from_ascii(
        "  {\\usefont{U}{lasy}{m}{n}\\char'51}%\n"
        "}");
 
+static docstring const textquotedbl_def = from_ascii(
+       "\\DeclareTextSymbolDefault{\\textquotedbl}{T1}");
+
+static docstring const textquotedblp_xetex_def = from_ascii(
+       "\\providecommand\\textquotedblplain{%\n"
+       "  \\bgroup\\addfontfeatures{Mapping=}\\textquotedbl\\egroup}");
+
+static docstring const textquotedblp_luatex_def = from_ascii(
+       "\\providecommand\\textquotedblplain{%\n"
+       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotedbl\\egroup}");
+
+static docstring const textquotesinglep_xetex_def = from_ascii(
+       "\\providecommand\\textquotesingleplain{%\n"
+       "  \\bgroup\\addfontfeatures{Mapping=}\\textquotesingle\\egroup}");
+
+static docstring const textquotesinglep_luatex_def = from_ascii(
+       "\\providecommand\\textquotesingleplain{%\n"
+       "  \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotesingle\\egroup}");
+
 static docstring const paragraphleftindent_def = from_ascii(
        "\\newenvironment{LyXParagraphLeftIndent}[1]%\n"
        "{\n"
@@ -846,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();
@@ -1192,6 +1212,8 @@ string const LaTeXFeatures::getPackages() const
                        packages << "numbers";
                else
                        packages << "authoryear";
+               if (!params_.biblio_opts.empty())
+                       packages << ',' << params_.biblio_opts;
                packages << "]{natbib}\n";
        }
 
@@ -1203,8 +1225,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")) {
@@ -1373,6 +1399,20 @@ TexString LaTeXFeatures::getMacros() const
                macros << guillemotleft_def << '\n';
        if (mustProvide("guillemotright"))
                macros << guillemotright_def << '\n';
+       if (mustProvide("textquotedbl"))
+               macros << textquotedbl_def << '\n';
+       if (mustProvide("textquotesinglep")) {
+               if (runparams_.flavor == OutputParams::XETEX)
+                       macros << textquotesinglep_xetex_def << '\n';
+               else
+                       macros << textquotesinglep_luatex_def << '\n';
+       }
+       if (mustProvide("textquotedblp")) {
+               if (runparams_.flavor == OutputParams::XETEX)
+                       macros << textquotedblp_xetex_def << '\n';
+               else
+                       macros << textquotedblp_luatex_def << '\n';
+       }
 
        // Math mode
        if (mustProvide("binom") && !isRequired("amsmath"))