\hbadness 和 \hfuzz 如何影响“Overfull \hbox”警告?

\hbadness 和 \hfuzz 如何影响“Overfull \hbox”警告?

TeXbook (第 302 页) 说:

如果非空水平盒子的粘连不能收缩到指定的大小,并且 \hbadness 小于 100 或者超出的宽度(收缩到最大量之后)大于 \hfuzz,则认为该水平盒子“过满”。如果其粘连收缩并且 badness 超过 \hbadness,则认为该水平盒子“紧”;如果其粘连伸展并且 badness 超过 \hbadness 但不大于 100,则认为该水平盒子“松”;如果其粘连伸展并且 badness 大于 \hbadness 且大于 100,则认为该水平盒子“不满”。

我对案例 1 有疑问。让我们使用以下模板来考虑一下:

\hbadness=-1 % to report the badness
\spaceskip.3333em \rightskip0pt plus20pt % allow only 20pt of stretchability
\def\text{The badness of this line is 1000.}
\setbox0=\hbox{\text}
\hsize=\wd0 \advance\hsize by Xpt \noindent\text\break
\end

1)

如果非空的水平盒子的粘合部分无法收缩到指定的大小,则认为它“过满” ⟨quote proven⟩ ... 当发现此类异常时,TeX 会打印一条警告消息并显示有问题的盒子。

在模板中替换Xpt-0.1pt,我们确认语句(1):

Overfull \hbox (0.1pt too wide) in paragraph at lines 6--7
\tenrm The bad-ness of this line is 1000. 

但我不明白以下短语(上面标记为“⟨引用省略⟩”)是什么意思:

前提是 \hbadness 小于 100,或者超出的宽度(在最大程度缩小之后)大于 \hfuzz

因为“ Overfull \hbox”消息总是被打印。


这不是问题的一部分 - 它只是一个通知:以下情况使用相同的模板来考虑

2)

如果其胶合收缩并且坏度超过 \hbadness,则它为“紧”...每当发现此类异常时,TeX 都会打印一条警告消息并显示有问题的框。

在模板中将 改为plusminus并将Xpt改为-10pt,我们确认语句 (2):

Tight \hbox (badness 12) in paragraph at lines 6--7
\tenrm The bad-ness of this line is 1000. 

3)

如果其胶水伸展并且 badness 超过 \hbadness 但不大于 100,则它为“松散”...每当发现此类异常时,TeX 都会打印一条警告消息并显示有问题的框。

我们通过在模板中替换0.1pt20pt来确认这一点:Xpt

Loose \hbox (badness 0) in paragraph at lines 6--7
\tenrm The bad-ness of this line is 1000. 
Loose \hbox (badness 100) in paragraph at lines 6--7
\tenrm The bad-ness of this line is 1000. 

4)

如果其胶水伸展并且 badness 大于 \hbadness 并且大于 100... 则为“未满”...每当发现此类异常时,TeX 都会打印一条警告消息并显示有问题的框。

可以使用20.1pt而不是 来确认Xpt

Underfull \hbox (badness 101) in paragraph at lines 6--7
\tenrm The bad-ness of this line is 1000. 

答案1

如果你读这个句子50次,那么

假设\hbadness小于 100 或超出宽度(缩小最大量后)大于\hfuzz

意思是如果(像这里)你设置\hbadness为小于 100,那么任何超满的箱子都会被报告,并且\hfuzz没有影响。

鉴于我经常在 TeXBook 中阅读该段落,我不能说我曾经这样读过它,直到您提供了这个示例。如果您问过,我会说设置\hfuzz为非零值会抑制对过满的框发出的警告,而无需考虑这个额外的条件\hbadness,所以这是一个很好的例子:-)

相关内容