我收到了来自 Biblatex 的此警告消息,运行几次后,此消息仍然出现。
由于我的 bib 文件有大约 100 个条目,并且我找不到任何故障,我想知道哪些行为会导致这样的错误?
每个条目都定义了一个“关键字”,我正在按关键字对参考书目进行排序。我今天才看到这个错误,我不知道它第一次出现是什么时候。所以我对要检查的要点列表很感兴趣,想知道这个错误是如何发生的。我在其上运行了 bibtex [1] 的 py-parser,但它没有显示错误。
编辑
我把所有的序言都复制到一个新文件中,也复制了书目打印部分。结果打印得很好。所以我的问题可以归结为:
我在内容部分可能犯了什么错误,导致出现此警告,并且参考书目中每个条目都带有“[0]”,而不是其真实条目。
有人提到,我可能会遇到拼写错误或缺少链接。还有其他故障源吗?
編輯2
我的实验表明,获得这种行为的最有效方法是使用任何带有未定义引用的 cite 命令,即使它只是一个拼写错误或实际上没有定义。(好吧,biblatex 正是按照它的意图做的:如果字符串不是条目,就会出现错误。所以即使是拼写错误也不是定义的条目 ;))
解决方案
如果有人最终遇到这样的问题,只需将问题缩小到最小即可。这意味着:首先:检查是否设置了任何“关键字”(如果使用)。然后:使用整个序言并打印完整的参考书目。如果这最终导致相同的错误,则问题可能出在您的序言中。-> 减少序言,直到打印出您的书目。慢慢地将部分添加回序言,直到再次出现错误。这可能会向您展示导致警告的原因。
否则输入小部分直到出现错误行为。->减少部分,直到您的问题不再出现。
因此,您的方法是一种重现方法。设置“后端”,包括“前端”(内容)的步骤并查找导致错误的文件。
[1]https://github.com/Pezmc/BibLatex-Check<-- 这只是使用的检查软件
答案1
警告信息
There were undefined references
是通用的 LaTeX 警告。biblatex
在需要重新运行 LaTeX 和/或 Biber 的几种情况下会发出此警告。
如果没有找到具体参考,这些参考也会在.log
文件中列出
Package biblatex Warning: The following entry could not be found (biblatex) in the database: (biblatex) ysbrand (biblatex) Please verify the spelling and rerun (biblatex) LaTeX afterwards.
和
LaTeX Warning: Citation 'ysbrand' on page 1 undefined on input line 11.
精确定位缺失参考的实际位置。
一般来说,如果您有参考书目问题,您不仅应该检查.log
LaTeX 编写的文件,还应该查看.blg
Biber 编写的文件。(如果不存在,则 Biber 未被调用或很早就无法运行。)
造成此类问题的原因可能有多种。
没有任何参考书目/引文
如果您根本没有得到参考书目,而只得到所有条目的引文中的粗体条目键,则很可能 Biber 根本没有完成运行。同样,这可能有几个原因,可能是您没有运行 Biber,可能是 Biber 和 版本不匹配biblatex
,也可能是.bib
文件格式错误,格式非常严重,导致 Biber 运行中止。您可以在biber 故障排除。关于为什么需要 Biber 运行的一个很好的解释可以在使用问号或粗体引用关键字代替引用编号(关于 BibTeX 的说法也适用于 Biber)。
仅缺少某些来源
如果只有少数条目未按预期显示,而其他条目则有效,这是因为在文件中找不到这些条目.bib
。同样,这可能有几个原因
- 输入键中的拼写错误。您可能输入了
\cite{sifgridsson}
,但该条目名为。Biber 可以识别大小写不匹配,因此当您输入 时,sigfridsson
它会明确询问您是否是故意输入。但它无法检测更复杂的拼写错误。sigfridsson
Sigfridsson
.bib
使用 添加的文件中不存在该条目\addbibresource
。- 文件中存在该条目
.bib
,但 Biber 必须跳过它,因为它格式不正确。在这种情况下,Biber 会在文件中向您发出警告.blg
。 - 条目存在,但 Biber 无法在您的
.bib
文件上运行,因此您只能使用旧数据。在这些情况下,遵循上述无条目步骤会有所帮助。
其他技术原因
There were undefined references
当后端找到所有条目时,在某些情况下也会打印通用消息.bib
,但仍然需要重新运行 LaTeX。
- 如果引用被删除,则会出现这种情况(即之前引用的引用不再被引用)。在这种情况下,可能需要重新运行才能正确进行标签编号或消除歧义。
- 使用排序模板时,
none
如果引用顺序发生变化,也需要重新运行 LaTeX。 refcontext
如果s 被更改或者\printbibliography
s 被添加或删除,也需要重新运行后端。- 如果分页符可能发生变化,则需要重新运行 LaTeX。
在大多数情况下,如果您重新运行 LaTeX(和 Biber)而不更改文档,重新运行消息将会消失。
如果警告仍然存在,最好删除临时文件(.aux
、、、...)并重新编译。有问题的设置可能会保留在辅助文件中,并导致.bcf
认为出了问题,在某些情况下,无论多少次重新运行都没有用,只有干净的重启才能让您摆脱困境。.bbl
biblatex
sorting
如果您更改该选项或影响它的其他选项(defernumbers
想到),则可能需要删除临时文件,特别是当您使用numeric
样式时。