]> git.lyx.org Git - features.git/commitdiff
Consider class-provided citation engines
authorJuergen Spitzmueller <spitz@lyx.org>
Thu, 8 Feb 2018 12:25:19 +0000 (13:25 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Fri, 9 Feb 2018 08:50:43 +0000 (09:50 +0100)
Do not attempt to load, nor allow to set, a different engine in this
case.

Fixes: #11022
(cherry picked from commit 2f6ada6644614df5f402efc7cbc1d27911b45376)

src/BufferParams.cpp
src/LaTeXFeatures.cpp
src/frontends/qt4/GuiDocument.cpp
src/frontends/qt4/GuiDocument.h

index 2f7058a9e4403faf3cbcd0341381f6760ad69671..b709b16a54ec2da433c391654abf0bce82d59250 100644 (file)
@@ -2322,7 +2322,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        }
 
        // ... but before biblatex (see #7065)
-       if (features.mustProvide("biblatex")) {
+       if (features.mustProvide("biblatex")
+           && !features.isProvided("biblatex-natbib")
+           && !features.isProvided("natbib-internal")
+           && !features.isProvided("natbib")
+           && !features.isProvided("jurabib")) {
                string delim = "";
                string opts;
                os << "\\usepackage";
index d4b0018b73dbe936743f71bc5a52c7fd7a603dfd..850af10169d5c09034eda8bc419f9c430af1edd2 100644 (file)
@@ -1232,7 +1232,11 @@ string const LaTeXFeatures::getPackages() const
        // Some classes load natbib themselves, but still allow (or even require)
        // plain numeric citations (ReVTeX is such a case, see bug 5182).
        // This special case is indicated by the "natbib-internal" key.
-       if (mustProvide("natbib") && !isProvided("natbib-internal")) {
+       if (mustProvide("natbib")
+           && !isProvided("natbib-internal")
+           && !isProvided("biblatex")
+           && !isProvided("biblatex-natbib")
+           && !isProvided("jurabib")) {
                packages << "\\usepackage[";
                if (params_.citeEngineType() == ENGINE_TYPE_NUMERICAL)
                        packages << "numbers";
@@ -1251,7 +1255,11 @@ string const LaTeXFeatures::getPackages() const
        }
 
        // jurabib -- we need version 0.6 at least.
-       if (mustProvide("jurabib")) {
+       if (mustProvide("jurabib")
+           && !isProvided("natbib-internal")
+           && !isProvided("natbib")
+           && !isProvided("biblatex")
+           && !isProvided("biblatex-natbib")) {
                packages << "\\usepackage";
                if (!params_.biblio_opts.empty())
                        packages << '[' << params_.biblio_opts << ']';
index b67f7979f69fdf843683a0f3e31b24061ed3a57b..524ea399b0adf62f0618462e22f992175e23fce4 100644 (file)
@@ -2445,6 +2445,28 @@ void GuiDocument::biblioChanged()
 }
 
 
+void GuiDocument::checkPossibleCiteEngines()
+{
+       // Check if the class provides a specific engine,
+       // and if so, enforce this.
+       string force_engine;
+       if (documentClass().provides("natbib")
+           || documentClass().provides("natbib-internal"))
+               force_engine = "natbib";
+       else if (documentClass().provides("jurabib"))
+               force_engine = "jurabib";
+       else if (documentClass().provides("biblatex"))
+               force_engine = "biblatex";
+       else if (documentClass().provides("biblatex-natbib"))
+               force_engine = "biblatex-natbib";
+
+       if (!force_engine.empty())
+               biblioModule->citeEngineCO->setCurrentIndex(
+                       biblioModule->citeEngineCO->findData(toqstr(force_engine)));
+       biblioModule->citeEngineCO->setEnabled(force_engine.empty());
+}
+
+
 void GuiDocument::rescanBibFiles()
 {
        if (isBiblatex())
@@ -3326,6 +3348,8 @@ void GuiDocument::paramsToDialog()
        updateEngineType(documentClass().opt_enginetype(),
                bp_.citeEngineType());
 
+       checkPossibleCiteEngines();
+
        biblioModule->citeStyleCO->setCurrentIndex(
                biblioModule->citeStyleCO->findData(bp_.citeEngineType()));
 
index be1b7e489f5f9eb392f0f889803940bc53fc265a..1fe1dc74a176fbd5c766b726767e280c237edce8 100644 (file)
@@ -296,6 +296,8 @@ private:
        ///
        bool isBiblatex() const;
        ///
+       void checkPossibleCiteEngines();
+       ///
        BufferParams bp_;
        /// List of names of available modules
        std::list<modInfoStruct> moduleNames_;