![TeX 中的“Underfull”或“Loose”框?](https://linux22.com/image/470956/TeX%20%E4%B8%AD%E7%9A%84%E2%80%9CUnderfull%E2%80%9D%E6%88%96%E2%80%9CLoose%E2%80%9D%E6%A1%86%EF%BC%9F.png)
当 badness 超过时\hbadness
,应该有Underfull
。当 badness 超过时\tolerance
,应该有Overfull
。Originstory.tex
文件是
\hrule
\vskip 1in
\centerline{\bf A SHORT STORY}
\vskip 6pt
\centerline{\sl by A. U. Thor}
\vskip .5cm
Once upon a time, in a distant
galaxy called \"O\"o\c c,
there lived a computer
named R.~J. Drofnats.
Mr.~Drofnats---or ``R. J.,'' as
he preferred to be called---% error has been fixed!
was happiest when he was at work
typesetting beautiful documents.
\vskip 1in
\hrule
\vfill\eject
输入tex
命令后,但日志文件显示\hsize=1.5in \tolerance=10000\raggedright\hbadness=-1 \input story
\end
Underfull \hbox (badness 230) in paragraph at lines 7--11
\tenrm in a dis-tant galaxy
\hbox(6.94444+1.94444)x108.405, glue set 1.3203
.\tenrm i
.\tenrm n
.\glue(\spaceskip) 3.33298
.\tenrm a
.\glue(\spaceskip) 3.33298
.etc.
Loose \hbox (badness 15) in paragraph at lines 7--11
\tenrm called []O^^?o^^Xc, there lived
\hbox(9.20636+1.94444)x108.405, glue set 0.53001
.\tenrm c
.\tenrm a
.\tenrm l
.\tenrm l
.\tenrm e
.etc.
上面的代码只是全部代码的一部分。由于\hbadness=-1
,所以应该有Underfull
每一行,但是为什么会有这些行Loose
,以及这里是什么Loose
意思?
答案1
正如你所说,\hbadness=-1
负责分类
未满和松动的。如果胶合拉伸且 badness 为 100 或更高,则水平盒子为未满。如果胶合拉伸且 badness 小于 100,则 TeX 称水平盒子为松散。
如果胶水收缩,TeX 会区分过满和紧的。
请参阅 The TeXbook 第 302 页。
当 TeX 将列表打包到盒子中时就会发生分类:水平列表转换为 hbox,而垂直列表转换为 vbox。
计算构造的 hbox 的坏度。如果它大于,
\hbadness
TeX 会根据与硬编码值 100 的比较结果向日志文件写入一条消息;该消息取决于胶合剂的更改方式。
如果胶水必须拉伸,则写为:如果 badness 大于 100未满, 否则松动的。
如果胶水收缩,它会写入:如果不良程度大于 100过满, 否则紧的。
(对 vbox 和参数也做了类似的事情\vbadness
。)
第二次分类发生在断线算法中。在此过程中,每条线都会根据其不良程度和胶水的变化(即拉伸或收缩)分配一个适应度等级:紧、不错、松、非常松。
坏度大于 12 且收缩的胶水线是紧的;具有可拉伸的胶水,并且 badness 大于 99 的线被称为很宽松,不良程度大于 12 且小于 100 松动的。 A体面的线的坏度小于 13,并且其胶水可能会拉伸或收缩或保持在自然宽度。
因此,“紧”和“松”这两个词在两种不同的语境中使用。健身课体面的或者紧的包装可能太紧或太满;健身课程体面的, 松动的, 或者很宽松松散或不够饱满。