我有一个 latex 文档,需要在一天中在两台不同的计算机上编译。其中一台电脑上装有 Arch Linux,另一台电脑上装有 Linux Mint。因此软件包有所不同,因为 Arch 的更新程度更高。
问题出现在引用时。我使用的是 biblatex 和 biber,但显然由于版本不同,我无法在两台机器上编译文档。我仍然必须使用 biblatex,但我将后端更改为 bibtex 以使其更容易。
我拥有的:
架构: Biblatex v3.8 Bibtex v0.99d(TeX Live 2017/Arch Linux)
Linux Mint: Biblatex v3.4 Bibtex v0.99d(TeX Live 2015/Debian)
我的主计算机是 Arch,所以我想保持原样。当我在 Mint 上使用 xelatex 进行编译时,我收到此错误:
! Use of \blx@bbl@verbadd@i doesn't match its definition.
l.378 \verb
然后还有许多其他未定义的控制序列,显然是因为版本不同而生成的。以下是我的问题。
- 我怎样才能让它在两台计算机上工作?(我试图避免在 Mint 上升级 biblatex,因为这意味着升级 pearl。)
- biblatex 为什么关心版本? 版本之间相差并不大。
干杯
答案1
恐怕无法在两台机器上使用同一套辅助文件来使事情正常运转。不过,如果您愿意删除、、、.aux
...文件并在其中一台机器上重新启动,事情应该会正常运转。.bcf
.bbl
biblatex
关心.bbl
文件的格式(同样关心 的格式),因为这是Biber 或 BibTeX 用来通信的.bcf
媒介。Biber 或 BibTeX 读取文件并以可在文件中轻松使用的格式准备读取的数据。因此,您的文件的版本自然必须与应读取它们的的版本兼容。版本不会随着 的每次发布而增加。只有在必要时才会升级,即如果内部更改需要它。对于由 编写的文件,将命令传递给 Biber也是如此。biblatex
.bib
biblatex
.bbl
.bbl
biblatex
.bbl
biblatex
.bcf
biblatex
在你的情况下,v3.4 和 v3.8 之间大约有一年半的时间,BibTeX 的变化.bbl
可以从以下公式中估算出来这个差异biblatex.bst
。有一些变化,但让我挑出最重要的
extrayear
已重命名为extradate
。这是必要的,因为该字段现在具有更广泛的范围。- refcontext 承担了更多职责。因此,纯粹的内部
.bbl
宏\sortlist
变成了\datalist
。 - 姓名部分的首字母现在用附加的 表示
i
,而不是_i
。使用_
必需的类别代码更改会_
导致其他软件包出现问题。
所有这些变化意味着biblatex
3.4 的文件无法与biblatex
3.8 正常工作,反之亦然。
虽然biblatex
旨在保持用户界面和样式开发人员界面的稳定性(前者比后者更重要),但对临时文件的稳定性要求并不高,因为它们无论如何都可以轻松删除和重新创建。开发新功能和修复错误总是需要更改文件结构.bbl
。