我尝试从 BibTeX 切换到,biber
但遇到了biber
无法生成任何输出文件的问题。我注意到几个关于biber
以下问题的问题:
但它们都无法帮助我解决我的具体情况(实际上只是biber
我的操作系统路径中某个位置的旧版本)。由于我还注意到几个关于的问题的问题biber
被关闭,因为根本问题是由于bib
资源的格式或类似的简单问题,因此我宁愿寻求一个通用的故障排除指南biber
(因为我看到了很多提示,例如“检查/删除缓存”,“检查这个和那个的版本”ETC。)。
biber
如果没有产生输出文件(并且其在命令行上的输出没有直接给您提供该怎么做的建议),那么应该采取什么步骤以及应该检查什么内容(特别是文件) ?
答案1
biblatex
只有对 Biber 是什么、如何使用以及它所起的作用有基本的了解,才能完全理解这个问题的答案。biblatex 简介(适合初学者),bibtex 与 biber 以及 biblatex 与 natbib 的比较,使用问号或粗体引用关键字代替引用编号是三个非常好的资源,可以帮助您入门并了解这一切的意义。如果您想调查 Biber 遇到的问题,了解系统命令行界面(终端、命令提示符等)的基本知识会大有帮助。始终值得尝试从命令行而不是从编辑器编译文档,以确保编辑器不会干扰。
由于 Biber 和biblatex
集成得如此紧密,因此并不总是完全清楚您所面临的问题是 Biber 问题还是biblatex
问题。
使用 Biber 时至少有五个主要麻烦来源
- 安装问题
- 使用问题
- 版本不匹配
- 缓存问题
- 格式错误的
.bib
文件
虽然前四个问题可以很快地识别、处理和检查(并且只需一个简单的方法),但最后一点却有无数的实现和解决方案。您还会注意到,在最后一点中,您实际上遇到的是 Biber 问题,还是您遇到的问题biblatex
甚至是您的.bib
文件问题,这一点并不那么清楚。
在你开始之前
在你做其他事情之前,节省重要文件,备份,只在重要文件的副本上工作。删除所有临时文件(.aux
、、、、 ...)或最好从一个新的干净文件夹开始。尝试使用尽可能紧凑、小巧和简短的示例。尝试删除任何不干扰参考书目的.bbl
内容。.bcf
.bgl
Biber 安装正确吗?
首先要检查的是 Biber 是否安装正确。只需打开命令行/终端并输入
biber --help
如果您获得 Biber 的帮助页面,我们可以确定 Biber 确实已安装并且您的系统可以找到它。
如果您没有得到预期的输出,而是收到一条无法找到命令的消息,则说明您根本没有安装 Biber,或者由于某种原因,Biber 没有安装在您路径中的目录中。
在 MikTeX 和 TeX live 中,通过以下方式安装 Biber 就足够了MikTeX 控制台(在较旧的系统上,您可以使用包管理器)或tlmgr
。然后应该会自动为您完成必要的配置。删除所有手动安装的 Biber,让您的发行版自行运行。
确保您只安装了一个版本的 Biber,或者如果您知道自己在做什么,则您的操作系统只会找到正确的版本(有关详细信息,请参阅下文)。您可以通过键入which biber
(在类 Unix 系统上)或where biber
(在 Windows Server 2003 或更高版本上)来查找我们的操作系统找到的 Biber。
仅当绝对必要并且您知道自己在做什么时才尝试手动安装 Biber。
您是否正确运行 Biber?
如果您尝试编译包含参考书目的文档,则需要在文件上运行 Biber。请参阅问号代替引文编号详细解释您需要做什么以及为什么需要这样做。
答案的要点是,您的文档test.tex
需要至少编译
pdflatex test
biber test
pdflatex test
请注意,上述调用不包括文件扩展名,Biber 的正确调用是
biber test
或者
biber test.bcf
特别是对 Biber 的调用与你的.bib
文件的名称无关(你不要在您的文件上运行 Biber .bib
)。您不要在文件上调用 Biber .aux
。两种形式biber test
最终biber test.bcf
都在文件上运行.bcf
,我更喜欢biber test
,但这可能是个人喜好问题。
无论如何,只有在成功运行 (pdf/Xe/Lua)LaTeX 后运行 Biber 才有意义,因为需要创建.bcf
用于与 Biber 进行通信的文件。biblatex
ERROR - Cannot find control file 'test.bcf'! - did you pass the "backend=biber" option to BibLaTeX?
或者
ERROR - Cannot find control file 'test.bcf'!
表示 Biber 找不到该.bcf
文件。导致该消息的原因可能有多种。
- 您忘记在文档上运行 LaTeX,因此未
.bcf
创建任何文件。 - 您在编译文件时早期就出现了错误,
.tex
因此.bcf
无法写入。 - 您在
.bib
文件上运行了 Biber,而不是在文件的基本名称上运行了 Biber.tex
。 .bcf
您使用构建或清理脚本或编辑器选项“使用‘构建’文件夹”将 移动到其他位置或将其删除。(此处,可能值得尝试使用命令行中的裸pdlfatex test
,biber test
,pdflatex test
序列进行编译,以确保不涉及任何清理脚本和编辑器恶作剧。)
特别是,您不要在.aux
文件上运行 Biber,而这是使用 BibTeX 所做的。
如果您收到如下消息
This is BibTeX, Version 0.99d (MiKTeX 2.9) The top-level auxiliary file: <filename>.aux I found no \citation commands---while reading file <filename>.aux I found no \bibdata command---while reading file <filename>.aux I found no \bibstyle command---while reading file <filename>.aux
您正在文件上运行 BibTeX,但实际上您应该运行 Biber。
你的编辑器是否已设置为使用 Biber?
如果你使用编辑器来编译文件,你可能只需要参考书目按钮,或者“为我完成所有编译步骤”按钮。您可能必须告诉编辑器使用 Biber 而不是 BibTeX。请参阅Biblatex 与 Biber:配置我的编辑器以避免未定义的引用以获得详细的指导。
检查.blg
文件
如果 Biber 在您的文档上运行,您应该能够.blg
在目录中找到一个文件,该文件是 Biber 的日志文件。在 Windows 系统上,.blg
文件扩展名通常被归类为“性能监视器”文件,您可能必须启用文件扩展名显示才能找到该文件(https://superuser.com/q/494312)。.blg
但是,BibTeX 或 Biber 创建的是一个相当短的纯文本文件,您可以使用您最喜欢的文本编辑器打开它。文件中的消息.blg
应该能够让您知道是否出现了问题。请查看那里列出的警告和错误。
确保 Biber 和biblatex
Match的版本
.blg
当你运行 Biber 时,你可能会在控制台输出和文件中发现以下警告
WARN - Warning: Found biblatex control file version 2.7, expected version 2.9
这说明biblatex
您使用的 Biber 版本与版本不匹配。实际上,它说明生成的 版本.bcf
与biblatex
Biber 期望的版本不一致。请注意,控制文件版本不一定与您的biblatex
或 Biber 版本一致。例如, 的当前版本biblatex
是 3.10,Biber 是 2.10,biblatex 控制文件版本是 3.4。
biblatex control file
(这里指的是.bcf
上面的)是 Biber 用来沟通的媒介(biblatex
其实有点片面:biblatex
告诉 Biber 要做什么),如果实际的格式和 Biber 期望的格式不一致,那么有些命令可能无法理解。
从 Biber 2.5 版开始(对应biblatex
版本为 3.4),版本不匹配是错误,并会中止 Biber 运行。错误消息更加突出,并更清楚地告知您发生了什么。这可能意味着您需要在更新 Biber 后清除辅助文件biblatex
。
请参阅biblatex
手动的或者Biber 文档用于匹配版本的兼容性矩阵。
如果你已经biblatex
通过发行版的包管理器安装了 Biber,你只需要运行更新即可。((sudo
)tlmgr update --self --all
用于 TeX live 和 'MikTeX Update' 和 'MikTeX Update (Admin)' 用于 MikTeX,你可能需要运行管理员和用户版本两次,直到所有包都更新,请参阅我如何更新我的 TeX 发行版?,应该如何维护和更新 MiKTeX 安装?,https://miktex.org/howto/update-miktex。
缓存问题
臭名昭著的缓存错误
在 2.2 版之前,Biber 使用的库有一个错误,可能导致奇怪的错误消息,例如
Error loading data source package ...
或者
read_file '...' sysopen: no such file or directory '....pm' line ...
或者
recode_data.xml not found in .
问题是 Biber 创建和使用的缓存被损坏并导致各种奇怪的消息。
解决方案是删除缓存,如Biblatex/biber 失败,出现有关缺少 recode_data.xml 文件的奇怪错误。
如果您的 Biber 版本(如 所示biber --version
)高于 2.2,则不会出现此问题。如果版本较旧,请考虑更新,以免再受此问题困扰(如果您确实更新,请确保biblatex
也更新,请参阅上文)。
缓存损坏
然而,Biber 的缓存有时在较新版本的 Biber 中仍然会损坏。例如Biber 2.14 - 令人费解的重复错误:“日期字段‘日期’的格式‘2020-01-01’无效 - 忽略”和运行 Biber 时突然出现非常奇怪的错误。我不太清楚为什么会发生这种情况。缓存通常位于临时文件夹中,也许过于急切的清理工具会删除一些文件。也许防病毒软件会删除一些文件或阻止对部分缓存的访问。
在这些情况下,Biber 可能不会产生上面显示的警告,而是显示其他神秘消息或根本不产生任何输出或消息。
解决方案与臭名昭著的缓存错误相同:按照说明删除缓存Biblatex/biber 失败,出现有关缺少 recode_data.xml 文件的奇怪错误。然后重新运行 Biber 并让其重新生成缓存。删除缓存后,不要终止第一次运行的 Biber:这将需要很多比平时更长,因为需要重新创建缓存。
如果缓存创建持续出错或被安全软件或权限限制直接阻止,则可能可以按照以下说明重定向缓存位置Biber 未运行 - 位于 PATH 中,编译时无错误消息,biber --help 无输出。
检查您的.bib
文件
在某些方面,对于格式错误的.bib
文件,Biber 的容忍度不如 BibTeX。
畸形文件有两种.bib
表现方式。要么是 Biber 在尝试编译文件时出现问题.bib
,要么.bib
是文件成功编译为所需的格式.bbl
,但当 LaTeX 尝试读取它时,您就会遇到麻烦。
如果 Biber 无法在您的计算机上运行,.bib
它将尽力帮助您找到罪魁祸首。您将看到类似以下内容的警告或错误消息
ERROR - BibTeX subsystem: C:\Users\<User>\AppData\Local\Temp\E5geEvmVXt\<filename>.bib_2040.utf8, line 19, syntax error: found "(", expected ","
虽然错误报告不是在原始文件中<filename>.bib
,而是在某个辅助文件中,但行号通常接近实际文件中的错误位置。请记住,那里指示的行号不一定与导致真正错误的行一致。您应该始终检查上下行,以及.bib
行出现的条目及其周围的条目。有时,左括号或右括号或逗号只会产生连锁效应,并在几行之后显示其影响。与 TeX 错误一样,错误会产生涓滴效应,因此您应该关注日志中的第一个错误/警告。
为了让 Biber 更加健谈,你可以用--debug
或甚至--trace
选项来调用它(另见如何让 Biber 也在日志文件中打印调试信息?)。附加信息将写入.blg
(日志)文件。但是,的输出--trace
信息非常丰富,以至于对于一个小文件来说,很容易迷失在 11K 行的海洋中.bib
。--debug
不过,这些信息对于查找文件中的错误条目非常有用。
但通常,格式错误.bib
实际上并不会造成真正的错误,而只会导致一个(或多个)警告。因此,仔细查看警告也是有益的。
以下文件(@book(bad,
应该是@book{bad,
)
@book{good1,
author = {Uthor, Anne},
title = {No Trouble Here},
date = {2005-10-16},
}
@book(bad,
author = {Uthor, Anne},
title = {Oohhh, the Wrong Bracket Was Used},
date = {2005-10-16},
}
@book{good2,
author = {Uthor, Anne},
title = {Again, No Problem},
date = {2005-10-16},
}
仅产生警告
line 10, warning: entry started with "(", but ends with "}"
如果 Biber.bib
顺利地处理了您的文件并且没有发出任何警告,那么如果写入的输出.bbl
有错误,您仍然会遇到麻烦。通常,未转义的空间字符会导致严重的错误。
如果 Biber 不能指出问题的根源,那么你必须自己尝试找到它。隔离问题根源的一个好方法是二分搜索法(如我刚刚被要求写一个最简单的例子,那是什么?),请记住,由于参考书目涉及中间文件,因此您必须运行完整的循环以pdflatex -> biber -> pdflatex -> pdflatex
确保问题消失(或没有消失)。
写入文件时可能有许多错误原因.bib
,但迄今为止最常见的检查内容是
- 大括号,
- 字段的花括号。大多数字段内容必须用花括号或引号括起来(只
"
允许使用双引号,两个单引号''
可能看起来相似,但会导致错误)。唯一的例外是 BibTeX 宏(不允许使用括号)和纯整数(括号可选,但强烈建议使用biblatex
)。 - entry type 和 entrykey 之间必须有一个左花括号,结尾处必须有一个右花括号。
- 花括号必须匹配。左花括号的数量应始终与右花括号的数量相同。
- 字段的花括号。大多数字段内容必须用花括号或引号括起来(只
- 逗号。
- 字段声明后应始终有一个逗号。(严格来说,最后一个字段后的逗号是可选的,但最好也加上它。)
- 输入键后面也必须有一个逗号。
- 逗号在名称字段中也很特殊:我应该如何在 bib 文件中输入作者姓名?,如何在bibtex文件中正确写入多位作者?。
如果你已经到了这一步,仍然遇到问题,最好的调试方法是尝试想出一个平均能量损失/移动网络,希望您能通过这种方式隔离有问题的条目(或多个条目)。
答案2
像@peschü 一样,我陷入了无声崩溃,biber
没有产生任何错误消息,没有产生任何输出文件,并且在之后停止INFO - Found BibTeX data source ...
。
但是,我没有任何带有 ISBN 的书籍条目来导致问题,而且无论如何我使用的是最新版本 (2.14),因此无法升级。使用biber main --debug
(main.tex
这是我的文件名)会显示消息biber Unicode::UCD: failed to find unicore/version in ...
。
我恢复了之前成功编译的项目版本,但现在也无法编译了。最后,重启 MacBook 解决了这个问题。
答案3
我陷入了一段时间的无声崩溃,biber
没有产生任何错误消息,也没有产生任何输出文件。即使激活--trace
也--debug
无济于事。
biber
输出停止于INFO - Found BibTeX data source ...
我最终strace
发现,有关 Perl 模块和 ISBN 的一些错误消息导致biber
崩溃。(不知道为什么此错误消息会记录到文件中/tmp/
,然后又被删除而不显示。)
这是一个在最近的版本中已经解决的错误,在这里讨论: https://github.com/plk/biber/issues/183
如果可以升级,升级到 2.8 即可解决问题。
如果您无法升级,它可以帮助我安装 perl ISBN 模块(SuSe 上的 perl-business-ISBN,我认为其他发行版也有类似的软件包)。
答案4
我不确定这里的专业用户是否喜欢有关 LaTeX 的视频教程。不过,我认为它们可以很好地帮助初学者了解工作流程。
当我开始使用 BibLaTeX 时,我很难让它运行。我以前也很难使用 BibTeX。我主要从书籍中学习它,并通过这个社区了解更详细的内容。
在过去的几年里,我有时会在工作中为博士生做 LaTeX 介绍,在此之前,我曾在大学里做过。到目前为止,我从未在 LaTeX 介绍中涉及参考书目内容,因为在我看来,对于初学者来说,一个下午讲完这些内容太难了。
后来(2016 年末),我针对我的特定设置即 LaTeX 编辑器 Texmaker 制作了一个视频教程。
第一步
https://www.youtube.com/watch?v=ZYvS52511oQ
超链接和多位书籍作者
https://www.youtube.com/watch?v=t9lyME-Lpak
在本视频中,我使用了 ISO-8859-1 编码,该编码应该适用于欧洲语言。如果您对该编码不满意,则可以根据自己的喜好调整编码。