练习 6.5 Knuth 的 TeXbook

练习 6.5 Knuth 的 TeXbook

根据附录 B 中答案的建议运行此练习,我得到以下结果:

在此处输入图片描述

在日志中可以看到以下几行:

Loose \hbox <badness 4>... 对应于以下行曾几何时

Underfull \hbox <badness 230>... 对应于以下行在遥远的星系中

Loose \hbox <badness 15>... 对应于以下行名为 Ööç,那里住着

Loose \hbox <badness 0>... 对应于以下行名为 RJ 的计算机

LooseQ1)盒子和箱子有什么区别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 有时候非常挑剔。

相关内容