X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeX.cpp;h=035e0f5438cf875efed4ea87038f8782c42ade96;hb=8ea66efe16ad109a5c107716185fb82bbebca8c8;hp=04a86f795a95cd6de5b36fc98e4e3cd03a22662d;hpb=78fa6abc083a99cc0b1e536a43c3a7da91d9fdb7;p=lyx.git diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp index 04a86f795a..035e0f5438 100644 --- a/src/LaTeX.cpp +++ b/src/LaTeX.cpp @@ -279,7 +279,7 @@ int LaTeX::run(TeXErrors & terr) // biber writes no info to the aux file, so we just check // if a bcf file exists (and if it was updated) FileName const bcffile(changeExtension(file.absFileName(), ".bcf")); - bool const biber = head.exist(bcffile); + biber |= head.exist(bcffile); // run bibtex // if (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex) @@ -290,8 +290,8 @@ int LaTeX::run(TeXErrors & terr) // no checks for now LYXERR(Debug::LATEX, "Running BibTeX."); message(_("Running BibTeX.")); - updateBibtexDependencies(head, bibtex_info, biber); - rerun |= runBibTeX(bibtex_info, runparams, biber); + updateBibtexDependencies(head, bibtex_info); + rerun |= runBibTeX(bibtex_info, runparams); if (biber) { // since biber writes no info to the aux file, we have // to parse the blg file (which only exists after biber @@ -304,7 +304,7 @@ int LaTeX::run(TeXErrors & terr) /// 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 /// insert the .bib and .bst files into the .dep-pdf file. - updateBibtexDependencies(head, bibtex_info, biber); + updateBibtexDependencies(head, bibtex_info); } // 2 @@ -350,8 +350,8 @@ int LaTeX::run(TeXErrors & terr) // no checks for now LYXERR(Debug::LATEX, "Running BibTeX."); message(_("Running BibTeX.")); - updateBibtexDependencies(head, bibtex_info, biber); - rerun |= runBibTeX(bibtex_info, runparams, biber); + updateBibtexDependencies(head, bibtex_info); + rerun |= runBibTeX(bibtex_info, runparams); } // 4 @@ -550,8 +550,7 @@ void LaTeX::scanAuxFile(FileName const & file, AuxInfo & aux_info) void LaTeX::updateBibtexDependencies(DepTable & dep, - vector const & bibtex_info, - bool biber) + vector const & bibtex_info) { // Since a run of Bibtex mandates more latex runs it is ok to // remove all ".bib" and ".bst" files. @@ -585,7 +584,7 @@ void LaTeX::updateBibtexDependencies(DepTable & dep, bool LaTeX::runBibTeX(vector const & bibtex_info, - OutputParams const & runparams, bool biber) + OutputParams const & runparams) { bool result = false; for (vector::const_iterator it = bibtex_info.begin(); @@ -708,6 +707,9 @@ int LaTeX::scanLogFile(TeXErrors & terr) } } else if (contains(token, "run BibTeX")) { retval |= UNDEF_CIT; + } else if (contains(token, "run Biber")) { + retval |= UNDEF_CIT; + biber = true; } else if (contains(token, "Rerun LaTeX") || contains(token, "Please rerun LaTeX") || contains(token, "Rerun to get")) { @@ -1194,7 +1196,7 @@ void LaTeX::scanBlgFile(DepTable & dep) ifstream ifs(blg_file.toFilesystemEncoding().c_str()); string token; - static regex const reg1(".*Found bibtex data file '([^']+).*"); + static regex const reg1(".*Found (bibtex|BibTeX) data (file|source) '([^']+).*"); while (getline(ifs, token)) { token = rtrim(token, "\r"); @@ -1203,7 +1205,7 @@ void LaTeX::scanBlgFile(DepTable & dep) // in the aux file are in the file system encoding. token = to_utf8(from_filesystem8bit(token)); if (regex_match(token, sub, reg1)) { - string data = sub.str(1); + string data = sub.str(3); if (!data.empty()) { LYXERR(Debug::LATEX, "Found bib file: " << data); handleFoundFile(data, dep);