我怎么知道是否需要运行 BibTeX?

我怎么知道是否需要运行 BibTeX?

如果我有一个未知*.tex文件并且想知道是否需要随后运行 BiBTeX,那么在脚本中找出答案的最简单方法是什么?

考虑这个文件:

\documentclass{article}

\begin{document}
Test\cite{Test}

\bibliographystyle{plain}
\bibliography{Mit}
\end{document}

与此文件相比:

\documentclass{article}

\begin{document}
Test
\end{document}

据我所知,最简单的方法是检查文件*.aux

\relax 
\citation{Test}
\bibdata{Mit}
\gdef \@abspage@last{1}

如果这包含\bibdata,我需要运行BibTeX,对吗?

答案1

  • \bibliography指令清楚地表明您在某些时候需要运行 BibTeX。

  • 当然,BibTeX 不会知道如何格式化书目条目,除非您的文档还包含\bibliographystyle指令。

  • \bibliography几乎与and/or的存在同样\bibliographystyle具有诊断意义的是,您的文档加载了引文管理包,例如citenatbibapacite

  • 另一方面,如果你的文档加载了该biblatex包,你几乎肯定应该不是运行 BibTeX,而不是运行biber。此规则的唯一例外是如果软件包biblatex加载了选项backend=bibtex,在这种情况下您肯定需要运行 BibTeX,而不是biber

答案2

我将您的问题解释为“如何确定给定的任意 LaTeX 文档是否需要运行bibtex才能完成编译”。

这就是最妙的部分,你不需要(R)。至少,你不需要自己决定。这是因为有相当多的 LaTeX 包装器可以做到这一点。

我推荐latexmk。还有arara,但我没有研究过。latexmk你只需说:

  • latexmk -pdf document.tex,当完成所有迭代pdflatex调用(以及不包括的)步骤后,它会返回。bibtex
  • 作为另一个示例,latexmk -pdflua document.tex请求带有 PDF 输出的 LuaTeX。

latexmk脚本需要perl,因此如果这会导致交易失败,请寻找替代方案。我不确定它在 Windows 下运行得如何。

相关内容