Enrico Forestieri wrote:
> Yes, that does the trick and biber is run.

Thanks. Could you check if the attached also does the trick? This test is 
more reliable. Please also check if biber is run after the bib file has been 
modified (works here on Unix).

Jürgen
Index: src/LaTeX.cpp
===================================================================
--- src/LaTeX.cpp	(Revision 39799)
+++ src/LaTeX.cpp	(Arbeitskopie)
@@ -279,7 +279,7 @@
 	// 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 @@
 		// 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 @@
 		/// 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 @@
 		// 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::updateBibtexDependencies(DepTable & dep,
-				     vector<AuxInfo> const & bibtex_info,
-				     bool biber)
+				     vector<AuxInfo> 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 @@
 
 
 bool LaTeX::runBibTeX(vector<AuxInfo> const & bibtex_info,
-		      OutputParams const & runparams, bool biber)
+		      OutputParams const & runparams)
 {
 	bool result = false;
 	for (vector<AuxInfo>::const_iterator it = bibtex_info.begin();
@@ -708,6 +707,9 @@
 				}
 			} 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")) {
Index: src/LaTeX.h
===================================================================
--- src/LaTeX.h	(Revision 39799)
+++ src/LaTeX.h	(Arbeitskopie)
@@ -192,15 +192,14 @@
 
 	///
 	void updateBibtexDependencies(DepTable &,
-				      std::vector<AuxInfo> const &,
-				      bool biber);
+				      std::vector<AuxInfo> const &);
 
 	///
 	void scanBlgFile(DepTable & head);
 
 	///
 	bool runBibTeX(std::vector<AuxInfo> const &,
-		       OutputParams const &, bool biber);
+		       OutputParams const &);
 
 	///
 	void deleteFilesOnError() const;
@@ -222,6 +221,9 @@
 
 	///
 	OutputParams runparams;
+	
+	/// Do we use biber?
+	bool biber;
 };
 
 

Reply via email to