我使用latexmk
来pdflatex
编译我的论文,使用 来作为biblatex
参考文献和biber
后端。它可以很好地编译并创建正确的 PDF 输出。如果对源文件的更改导致错误,则第一次运行pdflatex
会失败,但会创建一个 bcf 文件。然后 biber 的运行会抱怨 bcf 文件格式不正确,表明上次biblatex
运行失败并且编译停止。但是,在修复错误后,latexmk
认为pdflatex
运行正常并调用biber
,但 bcf 文件仍然格式不正确。
latexmk
不知何故似乎没有注意到文件发生了变化。
删除 bcf 文件或使用 清理它首先latexmk -C
会latexmk
调用pdflatex
并重新创建正确的 bcf 文件。pdflatex
手动调用也有效,但违背了 的目的latexmk
。我尝试使用-halt-on-error
选项pdflatex
,但不起作用。我似乎记得它与 TexLive 2014 一起使用,在运行尝试失败后,将在下一次尝试时首先biber
latexmk
运行。pdflatex
我使用的是 TexLive 2015,版本latexmk
是 4.43a,biber
版本号是 2.3。生成的输出是
Latexmk: This is Latexmk, John Collins, 5 February 2015, version: 4.43a.
Rule 'biber thesis': File changes, etc:
Non-existent destination files:
'thesis.bbl'
------------
Run number 1 of rule 'biber thesis'
------------
------------
Running 'biber "thesis"'
------------
Latexmk: applying rule 'biber thesis'...
INFO - This is Biber 2.3
INFO - Logfile is 'thesis.blg'
ERROR - thesis.bcf is malformed, last biblatex run probably failed. Deleted thesis.bbl
INFO - ERRORS: 1
Latexmk: Failed to find one or more biber source files:
NONE
Collected error summary (may duplicate other messages):
biber thesis: Could not find all biber source files for 'thesis'
Latexmk: Use the -f option to force complete processing,
unless error was exceeding maximum runs of latex/pdflatex.
Biber error: [33] Utils.pm:163> ERROR - thesis.bcf is malformed, last biblatex run probably failed. Deleted thesis.bbl
Latexmk: Errors, so I did not complete making targets
强制性 mwe.tex:
\documentclass[paper=a4]{scrartcl}
\usepackage[backend=biber]{biblatex}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\addbibresource{Bibliography.bib}
\begin{document}
\autocite{smith_pixel_1995}
\end{document}
参考书目.bib
@article{smith_pixel_1995,
title = {A Pixel Is Not A Little Square, A Pixel Is Not A Little Square, A Pixel Is Not A Little Square!},
volume = {6},
url = {http://ftp.alvyray.com/Memos/CG/Microsoft/6_pixel.pdf},
journaltitle = {Microsoft Computer Graphics, Technical Memo},
author = {Smith, Alvy Ray},
urldate = {2016-02-04},
date = {1995}
}
重现步骤:
- 跑步
latexmk -pdf mwe
- 引入错误,
mwe.tex
例如未定义的控制序列 - 跑步
latexmk -pdf mwe
- 当提示终止编译时,请按
x
- 解决错误
- 运行
latexmk -pdf mwe
-> biber 错误 - 运行
latexmk -pdf mwe
-> 相同的 biber 错误,不会消失
所以问题是,我如何latexmk
重新创建 bcf 文件,以便 biber 可以使用它而无需手动清理或删除文件?
答案1
正如评论中提到的,解决方案是使用新版本latexmk
(我写这个答案时是 4.44),现在可以在http://www.ctan.org/pkg/latexmk/
答案2
更新2019 年 5 月2020 年 3 月:
这仍然是 Ubuntu (bionic) 18.04 LTS 的一个问题,因为它们提供了版本4.41。
正如所述约翰自版本 4.44 以来,此问题已得到修复。latexmk 的较新版本适用于 cosmic、disco、eoan、focal 等。
升级方式至少有三种,请选择其中一种:
a)手动下载并安装软件包.deb
,例如从https://packages.ubuntu.com/focal/all/latexmk/download并且希望它不需要升级任何进一步的依赖项。
b)我通过临时使用 cosmic 存储库在我的计算机上修复了该问题:
- 编辑 /etc/apt/sources.list 中 universe repo 行,将 bionic 改为 cosmic,保存
- apt 更新
- 安装 latexmk
- 恢复 /etc/apt/sources.list 中的更改
- apt 更新
一般情况下不推荐使用这两种方法,但 latexmk 是一个非常简单的应用程序/脚本,依赖关系很少。不需要固定,因为希望维护者不会选择 4.41 和 4.44 之间的版本,cosmic 中的当前版本是 4.59。
c)另一种方法是从加拿大运输安全局并按照文档中的方法进行安装,基本上是替换和调整权限。请参阅我如何升级 latexmk/为什么 Ubuntu 存储库中包含非常旧的版本?。