我经常在 tex 文件的编译日志中看到警告。我在互联网上搜索,没有找到这个问题的好答案。我认为 tex 警告我某事一定是有原因的。
那么,我为什么要注意警告?当出现警告时,我应该更加注意或不太注意哪些警告?
我希望这个问题不是太模糊,但它已经困扰了我好几个星期了。
答案1
LaTeX 系统有 3 个级别的消息,而 TeX 本身还有另外 2 个。
- LaTeX 错误...由于出现严重问题而停止处理。有时可以继续,但在大多数情况下,最好直接更正错误并重新处理文档
- LaTeX 警告...仅显示在终端和记录文件中,处理继续。文档有问题,需要一定程度的关注。问题可能是暂时的,最好的例子是“重新运行以获得正确的交叉引用”,或者可能是您决定忽略的东西,因为它在视觉上并不重要(例如,“浮动太大 3pt”),但最好是有意识的决定。一些 LaTeX 警告与过时的语法有关。在所有情况下(至少在理论上),警告都是您可以并且应该忽略的东西,直到您几乎完成文档编写。否则,您可能最终会修复由于重写文本而自行消失的东西。
- LaTeX 信息...这是一条信息性消息(有时有助于调试),仅写入转录文件。您通常可以忽略它们。
如果消息是由包或类文件生成的,它可能会显示“包...”或“类...”,而不是“LaTeX 错误/警告/信息”。
由于 LaTeX 是一个由不同开发人员构建的具有大量软件包的系统,因此上述分类可能并不总是 100% 被遵守,因为不同的人可能对什么是警告(可以等待解决)以及什么是需要立即注意的错误有不同的看法,但总体上(对于内核和核心软件包)这种分类是有效的。
此外,TeX 还会生成错误和警告信息,其思路与上述大体相同。主要区别在于错误/警告信息的格式略有不同,即没有“LaTeX 警告:”之类的前缀。TeX 程序没有方法捕获这些消息并将其显示为“LaTeX...”,这有点不幸,但大多数消息都是在您无法控制处理时生成的,因此这就是两种消息都存在的原因。
总结一下:
- 立即解决错误
- 仅在您真正完成文档编写后才解决警告,然后有意识地决定是否忽略警告(例如“Overfull hbox 0.3pt”或修复它,因为即使印刷错误很小,您也会感到不快)。此时您最好修复几个(如果不是大多数)警告,因为它们实际上意味着您的文档在印刷或语义上仍然存在错误。
为了LaTeX 伴侣,第二版我写了一个附录,解释了 LaTeX 内核及其主要软件包的所有错误和警告消息。我最终写了大约 60 页的内容来解释可能的原因以及如何修复它们。对于那些能读懂法语的人来说,有一个 本附录的法语在线版本可用的。
答案2
我的理解是,当输出文件(PDF)可用但无法强制执行某些约束时,会发出警告,即它不符合实际代码。
一些(常见)示例:
箱子过满/不足:显然,文档最终可以打开,但它不符合代码,例如,它将与
badness
编译前指定的设置相冲突。(这就是为什么通过设置这些限制,此类警告就会消失。)在极端情况下,您输入的文本会真正偏离页面(例如太长的方程式)。重复标签:通常输出不会发生太大变化,如果没有发出警告,则可能完全不会被注意到,在其他情况下,交叉引用可能会失控。
所以恕我直言,警告应该被视为错误。有时你可以置之不理,但这表明输出不再是所见即所得,而是其他东西。严重程度确实是随机的,这意味着它可能非常严重,所以要处理它!
答案3
就我个人而言,我将警告视为“不会阻止文档编译的错误”。考虑到这一点,您应该考虑所有警告。
警告通常意味着某些内容在语义上是错误的(但不是语法上的错误,语法错误才是真正的错误)或者某些内容已经过时或处于“错误”的位置。
结论:如果您希望文档看起来不错,请考虑所有警告并解决它们!
附言:如果您还提到了未满或过满的框(LaTeX 未明确将其标记为“警告”),您会在此网站上找到很多有关它们的问题和答案。必须注意并逐一阅读这些消息,但有时不需要真正解决它们,因为有时它们不会影响可见的输出。