我正在写一篇大型文档,最近出现了一个与参考文献顺序有关的奇怪错误。我现在已经解决了这个问题,但我不知道它是怎么发生的,或者为什么我的解决方案有效。我想了解这一点,这样我就可以找到其他类似的错误(如果存在的话),或者至少可以确信我的参考文献顺序正确,而不必仔细检查 200 多页。
我的文档大致是这样的:
\documentclass{book}
\usepackage{cleveref}
\usepackage{cite}
\usepackage[nottoc]{tocbibind}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\include{Chapter1}
\include{Chapter2}
\include{Chapter3}
\backmatter
\bibliographystyle{unsrt}
\bibliography{bibfile}
\end{document}
输出结果如下:
“Lorem ipsum dolor sit amet,consectetur adipiscing elit。[1] Duis cursus dictum purus,[2] sit amet malesuada diam viverra vel。[3] Donec et velit sit amet lorem lobortis vulputate。[20] Aenean vel leo tempor,[4] fringilla nisl eget,mollis arcu。[5]
参考书目
虚拟参考 A,Foo Bar 杂志,第 1 卷,1999 年。
虚拟参考 B,Bar Foo 杂志,第 12 卷,2000 年。
ETC”
由于某种我无法确定的原因,参考文献 20 的编号不正确。它是文档中引用的第 4 个参考文献(包括标题、目录等),但为其分配的编号是 20 而不是 4。在我明确检查的参考文献中,没有其他类似问题。多次编译文档并没有更正顺序。在某个时候,我打开 .bib 文件并将有问题的参考文献移动到 .bib 文件中的另一个随机点,突然一切都正常了。主文档中的代码没有区别,并且理论上 .bib 文件应该无论参考文献的顺序如何都应该给出相同的结果,然而这个看似无关紧要的更改却使其从不起作用变成了起作用。附带说明一下,编译文档时从未出现过问题,无论是修复之前还是修复之后都从未出现过任何错误消息。
有人能解释一下这里发生了什么吗?或者我以后如何避免类似的问题?
答案1
仅总结评论中的讨论:
我们发现问题出在编译方式上(或者说没有编译),而不是代码本身的问题。无论使用哪种编辑器,参考文献的顺序只会在编译参考书目时更新,这与主文档的编译是分开的。因此,如果对文档进行编辑,使得第 20 个参考文献现在是第 4 个被引用的参考文献,那么在编译文档时,它仍会以 [20] 的形式出现在文本中,直到再次编译参考书目。解决方案是简单地强制编辑器编译参考书目,然后以通常的方式编译主文档。如果仍然存在一些排序问题,可能需要重复此操作几次,原因在主答案中详细说明这里。
在 TeXstudio 中,可以通过转到工具 --> 参考书目或按 F8 手动运行参考书目编译器,然后主文档将在下次编译时显示正确的参考资料,即按构建或 F5。还可以将 TeXstudio 设置为在编辑 .bib 文件时也将自动编译参考书目,这就是为什么我在对 .bib 文件进行不相关的更改后问题得到解决的原因。仅仅更改文本中引用内容的顺序不会触发它重新编译。