错误发生后 latexmk 未重新创建格式错误的 bcf 文件

错误发生后 latexmk 未重新创建格式错误的 bcf 文件

我使用latexmkpdflatex编译我的论文,使用 来作为biblatex参考文献和biber后端。它可以很好地编译并创建正确的 PDF 输出。如果对源文件的更改导致错误,则第一次运行pdflatex会失败,但会创建一个 bcf 文件。然后 biber 的运行会抱怨 bcf 文件格式不正确,表明上次biblatex运行失败并且编译停止。但是,在修复错误后,latexmk认为pdflatex运行正常并调用biber,但 bcf 文件仍然格式不正确。 latexmk不知何故似乎没有注意到文件发生了变化。

删除 bcf 文件或使用 清理它首先latexmk -Clatexmk调用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}
}

重现步骤:

  1. 跑步latexmk -pdf mwe
  2. 引入错误,mwe.tex例如未定义的控制序列
  3. 跑步latexmk -pdf mwe
  4. 当提示终止编译时,请按x
  5. 解决错误
  6. 运行latexmk -pdf mwe-> biber 错误
  7. 运行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 存储库在我的计算机上修复了该问题:

  1. 编辑 /etc/apt/sources.list 中 universe repo 行,将 bionic 改为 cosmic,保存
  2. apt 更新
  3. 安装 latexmk
  4. 恢复 /etc/apt/sources.list 中的更改
  5. apt 更新

一般情况下不推荐使用这两种方法,但 latexmk 是一个非常简单的应用程序/脚本,依赖关系很少。不需要固定,因为希望维护者不会选择 4.41 和 4.44 之间的版本,cosmic 中的当前版本是 4.59。

c)另一种方法是从加拿大运输安全局并按照文档中的方法进行安装,基本上是替换和调整权限。请参阅我如何升级 latexmk/为什么 Ubuntu 存储库中包含非常旧的版本?

相关内容