根据附录 B 中答案的建议运行此练习,我得到以下结果:
在日志中可以看到以下几行:
Loose \hbox <badness 4>
... 对应于以下行曾几何时
Underfull \hbox <badness 230>
... 对应于以下行在遥远的星系中
Loose \hbox <badness 15>
... 对应于以下行名为 Ööç,那里住着
Loose \hbox <badness 0>
... 对应于以下行名为 RJ 的计算机
Loose
Q1)盒子和箱子有什么区别Underfull
?
Q2) 上面的第四条消息有badness = 0
。那么,为什么会有警告?
答案1
TeX 根据胶合拉伸或收缩量来为其构建的框分配坏度。可以在 TeXbook 或 TeX by Topic 中找到该规则。
如果一个盒子的不良程度 b<13,则将其归类为体面的;如果 13 ≤ b < 100,则盒子紧的如果胶水收缩或松动的如果胶水必须拉伸。如果 100 ≤ b < 10000,盒子很宽松(这种情况不会在缩小时发生)。 badness 永远不会超过 10000,在这种情况下,盒子是未满. 盒子也可以过满,当 TeX 无法收缩粘合部分以将文本放入可用空间时;不良率再次达到 10000。
当框的坏度超过阈值时,TeX 会报告该框,该阈值的值位于内部参数中\hbadness
(对于水平框)和\vbadness
(对于垂直框)。在此报告中,术语紧的,松动的,未满和过满用法与以前略有不同(在评估段落排版的缺点时,以前的含义很重要):
- 松动的意味着正坏度但小于 10000,胶水必须拉伸
- 紧的意味着正坏度但小于10000,胶水必须收缩
- 未满意味着坏度 10000,胶水必须拉伸
- 过满意味着坏处 10000,胶水必须收缩
在示例中,\hbadness
已设置为 -1,因此 TeX 会报告所有不合适的框(不良度永远不会为负数)。段落的最后几行没有被报告,因为其中的无限粘连(来自 \parfillskip)使它们始终是合适的。即使将不良度计算为 0,其中一些也是松散的(将不良度计算为非零,然后截断)。
我们可以通过以下示例看到这一点:
\hbadness=-1
\hbox spread 1sp{a b}
\hbox spread -1sp{a b}
导致以下报告
Loose \hbox (badness 0) detected at line 2
\tenrm a b
Tight \hbox (badness 0) detected at line 3
\tenrm a b
是的,TeX 有时候非常挑剔。