我正在使用 Sublime Text 3 和 LatexTools 以及 Texlive。如果在使用 biber 编译后,由于未定义的引用而出现错误,则下一次编译将自动使用 bibtex 运行,在这种情况下,所有引用都是错误的。
梅威瑟:
\begin{filecontents}{test-bib.bib}
@article{test,
author = {A. Author},
title = {Paper},
year = {2023},
journal = {Journal},
number = {1},
pages = {1-10},
}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{test-bib.bib}
\begin{document}
\cite{test}
\cite{bibid}
\printbibliography
\end{document}
使用 Ctrl+B 编译一次,运行 pdflatex、biber、pdflatex、pdflatex 并出现错误:
Package biblatex Warning: The following entry could not be found(biblatex) in the database:(biblatex) bibid(biblatex) Please verify the spelling and rerun(biblatex) LaTeX afterwards.
LaTeX Warning: Citation 'bibid' on page 1 undefined on input line 18.
立即使用 Ctrl+B 再次编译运行 pdflatex、bibtex、pdflatex、pdflatex 并出现错误:
LaTeX Warning: Citation 'test' on page 1 undefined on input line 17.
LaTeX Warning: Citation 'bibid' on page 1 undefined on input line 18.
LaTeX Warning: Empty bibliography on input line 20.
LaTeX Warning: There were undefined references.
Package biblatex Warning: Please (re)run Biber on the file:(biblatex) test_bib(biblatex) and rerun LaTeX afterwards.
再次使用 biber 进行编译并循环遍历两个选项。
预期输出应为错误:
LaTeX Warning: Citation 'bibid' on page 1 undefined on input line 18.
LaTeX Warning: There were undefined references.
Package biblatex Warning: Please (re)run Biber on the file:(biblatex) test_bib(biblatex) and rerun LaTeX afterwards.
并且按 Ctrl+B 将使用 biber 重新运行。
我尝试过传统的、基本的和简单的构建器 - 它们都给出了这个结果。
我该如何解决这个问题?或者,有没有办法用 biber 强制编译?
答案1
目前,所有简单/传统/基本的建筑商都存在潜在的陷阱LaTeX工具
这简单建造者始终运行bibtex
。这不能与 一起使用biber
,并且会弄乱任何先前的biber
编译。
这传统建筑商如果它在 Windows 上检测到 MiKTeX,则运行texify
,否则使用latexmk
。我相信texify
只会编译bibtex
,但latexmk
应该可以可靠地自动编译biber
。
这基本构建器(这似乎是最复杂的,因为它试图自己管理一切)将运行bibtex
,或者biber
只要日志中有一个引用未定义的警告。不幸的是,bibtex
除非日志文件明确包含来自biblatex
重新运行biber
,但这还不够。
在您的示例中,biber
运行后,它会在.bbl
文件中放置一条注释,指出bibid
所提供的 bib 文件中缺少该参考文献,因此biblatex
只是将引用记录为未找到,它知道biber
已经运行但未能找到日志文件,因此重新运行biber
不会有帮助。然后,发现“引用未定义”警告,但这次没有“(重新)运行 biber”警告,基本构建器执行,bibtex
这会破坏参考书目,但会返回“(重新)运行 biber”通知,因此在后续编译中返回运行biber
。
显然,您可以biber
根据需要在命令行上运行,但所有三个构建器都会尝试修复任何未定义的引用错误,这可能会触发运行bibtex
,从而破坏参考书目。
https://latextools.readthedocs.io/en/latest/available-builders/#script-builder似乎允许您提供自己的一组编译指令,这些指令似乎允许您设置始终运行pdflatex
的biber
编译pdlfatex
。