]> git.lyx.org Git - features.git/commitdiff
* LaTeX.{cpp,h}: run biber if necessary (bug 7281).
authorJürgen Spitzmüller <spitz@lyx.org>
Mon, 7 Feb 2011 07:03:31 +0000 (07:03 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Mon, 7 Feb 2011 07:03:31 +0000 (07:03 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37538 a592a061-630c-0410-9148-cb99ea01b6c8

src/LaTeX.cpp
src/LaTeX.h

index 1bf1b72a547cb63f39b6c35ca59216b6c5a75fbb..597efefb7cedecc5aa2d1f2754d76d06a860156f 100644 (file)
@@ -122,6 +122,10 @@ void LaTeX::deleteFilesOnError() const
        FileName const bbl(changeExtension(file.absFileName(), ".bbl"));
        bbl.removeFile();
 
+       // biber file
+       FileName const bcf(changeExtension(file.absFileName(), ".bcf"));
+       bcf.removeFile();
+
        // makeindex file
        FileName const ind(changeExtension(file.absFileName(), ".ind"));
        ind.removeFile();
@@ -203,7 +207,8 @@ int LaTeX::run(TeXErrors & terr)
                        LYXERR(Debug::DEPEND, "Dependency file has changed");
                }
 
-               if (head.extchanged(".bib") || head.extchanged(".bst"))
+               if (head.extchanged(".bib") || head.extchanged(".bst")
+                   || head.extchanged(".bcf"))
                        run_bibtex = true;
        } else
                LYXERR(Debug::DEPEND,
@@ -269,6 +274,12 @@ int LaTeX::run(TeXErrors & terr)
        if (head.haschanged(glofile))
                rerun |= runMakeIndexNomencl(file, ".glo", ".gls");
 
+       // check if we're using biber instead of bibtex
+       // biber writes no info to the aux file, so we just check
+       // if a bcf file exists (and, above, if it was updated)
+       FileName const bcffile(changeExtension(file.absFileName(), ".bcf"));
+       bool const biber = bcffile.exists();
+
        // run bibtex
        // if (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex)
        if (scanres & UNDEF_CIT || run_bibtex) {
@@ -279,7 +290,7 @@ int LaTeX::run(TeXErrors & terr)
                LYXERR(Debug::LATEX, "Running BibTeX.");
                message(_("Running BibTeX."));
                updateBibtexDependencies(head, bibtex_info);
-               rerun |= runBibTeX(bibtex_info, runparams);
+               rerun |= runBibTeX(bibtex_info, runparams, biber);
        } else if (!had_depfile) {
                /// If we run pdflatex on the file after running latex on it,
                /// then we do not need to run bibtex, but we do need to
@@ -331,7 +342,7 @@ int LaTeX::run(TeXErrors & terr)
                LYXERR(Debug::LATEX, "Running BibTeX.");
                message(_("Running BibTeX."));
                updateBibtexDependencies(head, bibtex_info);
-               rerun |= runBibTeX(bibtex_info, runparams);
+               rerun |= runBibTeX(bibtex_info, runparams, biber);
        }
 
        // 4
@@ -558,12 +569,12 @@ void LaTeX::updateBibtexDependencies(DepTable & dep,
 
 
 bool LaTeX::runBibTeX(vector<AuxInfo> const & bibtex_info,
-                     OutputParams const & runparams)
+                     OutputParams const & runparams, bool biber)
 {
        bool result = false;
        for (vector<AuxInfo>::const_iterator it = bibtex_info.begin();
             it != bibtex_info.end(); ++it) {
-               if (it->databases.empty())
+               if (!biber && it->databases.empty())
                        continue;
                result = true;
 
index 78c283d85a6fb6c350a9c1dcc3f80cfb872c4db5..ff74f9da40d7135874d1657411afb97cb8d6d336 100644 (file)
@@ -188,7 +188,8 @@ private:
        void updateBibtexDependencies(DepTable &, std::vector<AuxInfo> const &);
 
        ///
-       bool runBibTeX(std::vector<AuxInfo> const &, OutputParams const &);
+       bool runBibTeX(std::vector<AuxInfo> const &,
+                      OutputParams const &, bool biber);
 
        ///
        void deleteFilesOnError() const;