biblatex 调试

biblatex 调试

背景:

最近我做了一些事情,导致我在运行 biber 后编译时出现大量"missing { inserted"错误,因为 pdflatex 排版了参考书目。它不像每个条目一个错误那样多,甚至不像每页输出一个错误那样多。命令行上给出的错误行始终是 后面的一行\printbibliography,如果我在每次出错后按 Enter,输出就没问题。

问题:

(我的意思是,在一般情况下,如果我通过剥离和构建生成 MWE,我会发布一些更具体的内容)

如果错误是由 pdflatex 而不是 biber 给出的,那么如何找到 .bib 文件中发生错误的位置? 在我的例子中,biber 运行正常,没有错误或警告,并且我的项目中的每个文件都有匹配的 {s 和 } 数量

答案1

回答我的问题中的问题的调试技巧:

  1. 注释掉\printbibliography可以快速检查错误实际上是由参考书目而不是周围的代码引起的。
  2. 在序言中添加\errorcontextlines=3(或类似)内容显示了错误发生时的情况,在 biblatex 的情况下意味着显示实际问题。
  3. A上一个答案(对于 bibtex)建议在\nocite{*}其中创建一个空文档(本质上是 MWE)。这必须小心使用,尤其是使用 biblatex 时,其中一些更复杂的代码可能会或可能不会运行,具体取决于序言中与 biblatex 相关的部分。如果过于字面化,这将表明您的 .bib 文件没有问题。
  4. 添加\AtEveryBibitem{\clearpage}会导致每个参考书目条目打印在其自己的页面上。.log 文件中发生错误的页码将唯一地标识一个条目。但实际上会打印参考编号(用于编号样式),然后发出\clearpage后,将输出书目数据。.log 中的页码(以及命令行中的页码)指的是参考文献所在的页面数字出现;有问题的钥匙在下一页。

回答我的问题的背景,根本问题是标题中的数学模式文章等。在我的情况下,它是Al$_x$Ga$_{1-x}N和类似的。如果这是在 .bib 文件中的格式:{Al}{$_{x}}${Ga}{$_{1-x}$}{N}它排版正确,但我仍然收到错误 - 我曾在这本身就是一个问题。

相关内容