* LaTeX.{cpp,h}: run biber if necessary (bug 7281).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@37539 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2011-02-07 07:04:58 +00:00
parent 3a3e21e333
commit 202d7e34ae
3 changed files with 19 additions and 6 deletions

View File

@ -126,6 +126,10 @@ void LaTeX::deleteFilesOnError() const
FileName const bbl(changeExtension(file.absFilename(), ".bbl")); FileName const bbl(changeExtension(file.absFilename(), ".bbl"));
bbl.removeFile(); bbl.removeFile();
// biber file
FileName const bcf(changeExtension(file.absFilename(), ".bcf"));
bcf.removeFile();
// makeindex file // makeindex file
FileName const ind(changeExtension(file.absFilename(), ".ind")); FileName const ind(changeExtension(file.absFilename(), ".ind"));
ind.removeFile(); ind.removeFile();
@ -207,7 +211,8 @@ int LaTeX::run(TeXErrors & terr)
LYXERR(Debug::DEPEND, "Dependency file has changed"); 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; run_bibtex = true;
} else } else
LYXERR(Debug::DEPEND, LYXERR(Debug::DEPEND,
@ -273,6 +278,12 @@ int LaTeX::run(TeXErrors & terr)
if (head.haschanged(glofile)) if (head.haschanged(glofile))
rerun |= runMakeIndexNomencl(file, ".glo", ".gls"); 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 // run bibtex
// if (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex) // if (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex)
if (scanres & UNDEF_CIT || run_bibtex) { if (scanres & UNDEF_CIT || run_bibtex) {
@ -283,7 +294,7 @@ int LaTeX::run(TeXErrors & terr)
LYXERR(Debug::LATEX, "Running BibTeX."); LYXERR(Debug::LATEX, "Running BibTeX.");
message(_("Running BibTeX.")); message(_("Running BibTeX."));
updateBibtexDependencies(head, bibtex_info); updateBibtexDependencies(head, bibtex_info);
rerun |= runBibTeX(bibtex_info, runparams); rerun |= runBibTeX(bibtex_info, runparams, biber);
} else if (!had_depfile) { } else if (!had_depfile) {
/// If we run pdflatex on the file after running latex on it, /// 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 /// then we do not need to run bibtex, but we do need to
@ -335,7 +346,7 @@ int LaTeX::run(TeXErrors & terr)
LYXERR(Debug::LATEX, "Running BibTeX."); LYXERR(Debug::LATEX, "Running BibTeX.");
message(_("Running BibTeX.")); message(_("Running BibTeX."));
updateBibtexDependencies(head, bibtex_info); updateBibtexDependencies(head, bibtex_info);
rerun |= runBibTeX(bibtex_info, runparams); rerun |= runBibTeX(bibtex_info, runparams, biber);
} }
// 4 // 4
@ -552,12 +563,12 @@ void LaTeX::updateBibtexDependencies(DepTable & dep,
bool LaTeX::runBibTeX(vector<Aux_Info> const & bibtex_info, bool LaTeX::runBibTeX(vector<Aux_Info> const & bibtex_info,
OutputParams const & runparams) OutputParams const & runparams, bool biber)
{ {
bool result = false; bool result = false;
for (vector<Aux_Info>::const_iterator it = bibtex_info.begin(); for (vector<Aux_Info>::const_iterator it = bibtex_info.begin();
it != bibtex_info.end(); ++it) { it != bibtex_info.end(); ++it) {
if (it->databases.empty()) if (!biber && it->databases.empty())
continue; continue;
result = true; result = true;

View File

@ -189,7 +189,8 @@ private:
std::vector<Aux_Info> const &); std::vector<Aux_Info> const &);
/// ///
bool runBibTeX(std::vector<Aux_Info> const &, OutputParams const &); bool runBibTeX(std::vector<Aux_Info> const &,
OutputParams const &, bool biber);
/// ///
void deleteFilesOnError() const; void deleteFilesOnError() const;

View File

@ -24,6 +24,7 @@ What's new
* DOCUMENT INPUT/OUTPUT * DOCUMENT INPUT/OUTPUT
- Run biber instead of bibtex if requested (bug 7281).
* USER INTERFACE * USER INTERFACE