出现错误时 Sublime Text 从 biber 更改为 bibtex

出现错误时 Sublime Text 从 biber 更改为 bibtex

我正在使用 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似乎允许您提供自己的一组编译指令,这些指令似乎允许您设置始终运行pdflatexbiber编译pdlfatex

相关内容