如何在 osx 上的命令行中使用 Biber 和 BibLaTeX

如何在 osx 上的命令行中使用 Biber 和 BibLaTeX

我尝试在 osx 上从命令行使用 Biber 和 BibLaTeX。当我编译 .tex 文件时,我得到

No file print_bibliography.bbl.

LaTeX Warning: Citation 'Huse2007' on page 1 undefined on input line 19.


LaTeX Warning: Empty bibliography on input line 20.

[1{/usr/local/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./print_bibliography.aux)

LaTeX Warning: There were undefined references.


Package biblatex Warning: Please (re)run Biber on the file:
(biblatex)                print_bibliography
(biblatex)                and rerun LaTeX afterwards.

这些错误似乎很常见,具体描述如下本维基百科,但给出的解决方案取决于所使用的编辑器,而我的情况没有解决方案。我使用 pycharm 作为编辑器并从终端调用 latex。

在终端我输入:

pdflatex print_bibliography.tex

我对 print_bibliography.tex 文件的 MWE 是

\documentclass{article}
\usepackage[backend=biber, natbib=true]{biblatex}
\addbibresource{references.bib}
\begin{document}
This sentence should be cited\cite{Huse2007}
\printbibliography
\end{document}

对于 references.bib 文件来说:

@article{Huse2007,
    title = {Localization of interacting fermions at high temperature},
    author = {Oganesyan, Vadim and Huse, David A.},
    journal = {Phys. Rev. B},
    volume = {75},
    issue = {15},
    pages = {155111},
    numpages = {5},
    year = {2007},
    month = {Apr},
    publisher = {American Physical Society},
    doi = {10.1103/PhysRevB.75.155111},
    url = {https://link.aps.org/doi/10.1103/PhysRevB.75.155111}
}

相关问题: 如何从命令行使用 Biber 和 BibLaTeX 通过修复 biber 和 biblatex 之间的版本不兼容问题,这个问题得到了解决。但这似乎不适用于我的情况。

谢谢。

答案1

警告biblatex显示:

Package biblatex Warning: Please (re)run Biber on the file:
(biblatex)                print_bibliography
(biblatex)                and rerun LaTeX afterwards.

意味着您对文档进行了某些更改(通常是添加了一些引用),并且您需要运行biber,这是一个外部工具。

在命令行中,您只需输入

biber <name_of_your_tex_file_without_extension>

就你的情况来说:

biber print_bibliography

有多种方法可以自动处理参考书目,其中大多数也依赖于外部工具。我知道两种,但还有更多。

阿拉拉

这是我最喜欢的 :-)

要使用 Arara,你必须在文档的序言中告诉它要做什么。我通常把它写在之前\documentclass。你可以这样使用:

% arara: pdflatex
% arara: biber
% arara: pdflatex
\documentclass{article}% or whatever class you use

每次运行 Arara 时,它都会运行pdflatex一次、biber一次、pdflatex再一次。要运行它,您只需从命令行调用它:

arara print_bibliography.tex

然后它就会执行它的任务。如果你想要更花哨,你可以告诉 Arara 只在必要时运行。这是我目前用于我的论文项目的标题:

% arara: lualatex: { draft: yes }
% arara: biber if found ('log', 'Please \\(re\\)run Biber on the file')
% arara: -->   || changed (toFile('bibliography.bib'))
% arara: lualatex until !found('log', '\\(?(R|r)e\\)?run (to get|LaTeX)')
\documentclass{article}% or whatever class you use

它会在草稿模式下运行一次lualatex(如果您使用,pdflatex只需更改它),只是为了获取辅助文件。然后,biber只有当在日志中找到之前的消息或我更改了bibliography.bib文件时,它才会运行。最后,它会根据需要运行lualatex多次,以使所有交叉引用正确无误(通常一次或两次以上)。

拉特克斯

与 Arara 不同,你需要明确说明要做什么,而 LaTeXmk 会尝试从日志文件的内容中猜测要做什么。你只需在文档中运行它即可:

latexmk print_bibliography.tex

优点:它确实更易于使用。

缺点:在我看来,它并不总是知道正确的事情,导致编译时间比必要的要多。

相关内容