尽管我删除了导致错误的文本,但我还是不断收到错误

尽管我删除了导致错误的文本,但我还是不断收到错误

我不断收到以下错误:

Illegal parameter number in definition of \reserved@a. ...ck \emph{Revisiting Spacetrack Report #3} 

You can't use `macro parameter character #' in horizontal mode. ...ck \emph{Revisiting Spacetrack Report #3}

第一次出现这种情况是在我向 Bibtex 文件插入/添加新报告时。标题包含一个哈希值(重访 Spacetrack 报告 #3),这显然是不允许的。因此,我更改了标题并删除了哈希值,但我仍然收到相同的错误。

我删除了 bibtex 文件中有问题的段落,并删除了 latex 文件中的引用,但仍然出现错误,无法编译我的文件。保存、重新启动 TeXStudio,甚至计算机本身都无济于事。

是什么导致了这些麻烦?

答案1

重要的是要记住,LaTeX 不一定会每次编译时都从头开始重新生成文档的所有方面。事实上,它通常依赖于多次编译,以便编译过程 #1 中的信息可以用作编译过程 #2 的输入的一部分。

许多现代的 LaTeX 实现(例如 MikTeX 等)都会自动为你进行多遍编译器。如果它确定需要的话。 而后一个条款是关键,这对新用户来说可能是一个诅咒,因为它会给人一种印象,即每次编译时所有内容都会一次性重新生成。

在 OP 的案例中,.bib 文件中存在语法错误,使用#而不是 井号的文本版本,而井号的文本版本是正确的\#。在添加新的错误格式的参考文献后进行初始编译时,BibTex 编译阶段成功运行并将错误存储#在 .bbl 文件中,该文件存储了所有 bib 项信息以供下一次编译器传递。当重新运行 LaTeX 编译阶段时,它会抱怨错误,指出使用#而不是不正确\#

问题就在这里:自动多遍 LaTeX 实现不会自动重新运行 BibTeX 重新编译阶段,除非 LaTeX 编译阶段告诉它\cite已将新标签添加到您的文档中,需要为您的文档的参考列表生成额外的书目信息。

因此,即使您#从 bib 文件中删除了违规内容,或者\cite从文档中删除了该项目,也不会要求 BibTeX 重新编译阶段修改存储在 .bbl 文件中的 bib 项目信息。

您实际上必须删除 .bbl 文件,这将强制 LaTeX 实现(例如,MikTeX)理解您需要一个新的 BibTeX 编译器来生成参考书目信息,并使用更正的 bib 文件重新生成正确的 .bbl 文件。


补充一下,这类问题也经常发生在非参考书目问题中,需要删除一些编译过程 #1 文件。最常见的是,.aux 文件存储了信息,如果不正确,可能会影响编译。

因此,教训是,在纠正文档中的某些类型的错误后,如有必要,准备删除这些辅助文件。

相关内容