如何使用 silent 包来消除“underfull”和“overfull”警告?

如何使用 silent 包来消除“underfull”和“overfull”警告?

我不知道如何使用 silent 包消除“underfull”和“overfull”警告(我可以用它来隐藏其他一些警告,但不能隐藏这些警告)。正确的语法应该是什么?目前,这是我在序言中的内容:

\usepackage{silence}
\WarningFilter{latex}{Underfull}
\WarningFilter{latex}{Overfull}
\WarningFilter{latex}{Text page}
\WarningFilter{pdfcolmk}{Nothing to fix}

但我仍然收到如下警告:

Underfull \hbox (badness 4940) in paragraph at lines 150--170
Overfull \hbox (3.50006pt too wide) in paragraph at lines 196--197
Underfull \vbox (badness 3690) has occurred while \output is active []
Underfull \vbox (badness 10000) has occurred while \output is active []
Underfull \vbox (badness 3039) has occurred while \output is active []
Underfull \hbox (badness 5490) in paragraph at lines 222--2
Underfull \vbox (badness 3039) has occurred while \output is active []
Underfull \vbox (badness 10000) has occurred while \output is active []

谢谢,豪尔赫。

答案1

框过满/未满警告来自 TeX - 而不是 LaTeX。正如silence手册所述,

TeX 的消息保持不变。(第 1 页)

您可以判断它们不是 LaTeX 警告,因为 LaTeX 会告诉您它何时是警告的来源。

LaTeX Warning: Float too large for page by 1056.17519pt on input line 28.

[将康德《第一批判》(译文)10段文字放入浮动框的效果。]

相比之下,TeX 警告并未提及这一点。

Overfull \hbox (0.79013pt too wide) in paragraph at lines 25--25

答案2

正如其他人所说,silence 包无法做到这一点。但是,如果您想首先关注其他警告,最简单的方法是查看文件.log

grep -v Underfull my-document.log

.log文件由 TeX 在运行时创建,包含它打印到终端的所有输出的副本。事实上,你可以运行latex my-document.tex >/dev/null以抑制输出到终端,然后只是查看.log文件。例如,如果使用 TeX 并行处理多个文档,这可能会很有用make -j(我有一个设置,当在多核机器上生成大型文档的几种不同格式时会这样做,如果其中一个进程因latex错误而停止,而其他进程继续运行,则很难弄清楚终端输出,所以我只依赖.log文件)。

答案3

和楼主有同样的问题,我不想在起草过程中被未满/过满警告所困扰。对我有用的方法是将以下内容放在序言中:

\hfuzz=1000pt
\tolerance=20000
\hbadness=19999

来源及解释:https://www.tug.org/TUGboat/tb14-2/tb39taylor-para.pdf

答案4

您可以使用突破线者使用 LuaLaTeX 包来修复过满和未满的框。它会尝试重新排版坏段落,直到它们消失。这些段落中的单词间距可能会大一些。不过,它们在其他段落中仍将保持正常,而不是使用\sloppy或全局增加\tollerance和其他参数时。

下面的示例左侧显示了默认换行符,右侧显示了使用换行符排版的段落。

在此处输入图片描述

相关内容