为什么会打印“箱子未满”的消息?

为什么会打印“箱子未满”的消息?

在 TeXbook 第 27 页中写道:

在此处输入图片描述

并进一步:

如果没有办法满足这些限制,您就会得到一个满满的箱子。

方法如下复制本文:

\input manmac
\begindisplay
\hbox spread-1em{You don't get spaces between words narrower than this,\ and}\cr
\hbox spread+1.679895em{you don't get spaces between words wider than this.}\cr
\enddisplay
\end

问题是:

1)spread价值观来自哪里

2)为什么如果我们使用,则spread+1.7em不会打印警告

3)仅当我们说警告时才会开始出现spread+2.9em- 为什么警告是Underfull \hbox ...- 不是“盒子过满”(正如书中所说)?

答案1

Knuth 中的语句是关于将段落分成行的。TeX可以在执行此操作的同时使空格变窄或变宽,但它本身永远不会产生未满的框,只会产生过满的框。要制作未满的框,您必须手动执行某些操作,例如插入手动\break(或使用\hbox具有更大跨度的)。

至于 的值spread,我猜它们是通过反复试验找到的,以达到 Plain TeX 仍然可以接受的最大 badness 值(值为 200)。


您可以使用此代码片段查看r每个的比例\hbox

\tracingonline=1
\showboxdepth=0
\input manmac
\begindisplay
\setbox0=\hbox spread-1em{You don't get spaces between words narrower than this,\ and}%
\showbox0
\box0 \cr
\setbox0=\hbox spread+1.679895em{you don't get spaces between words wider than this.}%
\showbox0
\box0 \cr
\enddisplay
\end

相关内容