From: Jürgen Spitzmüller Date: Mon, 7 Feb 2011 07:03:31 +0000 (+0000) Subject: * LaTeX.{cpp,h}: run biber if necessary (bug 7281). X-Git-Tag: 2.0.0~839 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=f434f947dd82a4093c027408ff9698b27b2a77d3;hp=30dec4d307a81ef4c56f5428f3ba9dae92e18137;p=features.git * LaTeX.{cpp,h}: run biber if necessary (bug 7281). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37538 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp index 1bf1b72a54..597efefb7c 100644 --- a/src/LaTeX.cpp +++ b/src/LaTeX.cpp @@ -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 const & bibtex_info, - OutputParams const & runparams) + OutputParams const & runparams, bool biber) { bool result = false; for (vector::const_iterator it = bibtex_info.begin(); it != bibtex_info.end(); ++it) { - if (it->databases.empty()) + if (!biber && it->databases.empty()) continue; result = true; diff --git a/src/LaTeX.h b/src/LaTeX.h index 78c283d85a..ff74f9da40 100644 --- a/src/LaTeX.h +++ b/src/LaTeX.h @@ -188,7 +188,8 @@ private: void updateBibtexDependencies(DepTable &, std::vector const &); /// - bool runBibTeX(std::vector const &, OutputParams const &); + bool runBibTeX(std::vector const &, + OutputParams const &, bool biber); /// void deleteFilesOnError() const;