练习12.13(第 81 页)做出以下假设:
\box1
又1pt
高1pt
又深又1pt
宽\box2
又2pt
高2pt
又深又2pt
宽\baselineskip=9pt minus3fil
\boxmaxdepth=-4pt
练习后将描述\box4
:
\setbox4=\vbox to4pt{\vss\box1\moveleft4pt\box2\vss}
第 312 页所示的答案如下:现在\box4
将是4 pt
高、4 pt
深、1 pt
宽,并且它将包含
\vskip-2.4pt, \box1, \vskip-1.2pt, \moveleft4pt\box2, \vskip-2.4pt.
从 的基线向上\box4
精确移动 5.4 pt 到达 的基线\box1
,或者精确移动 3.6 pt 到达 的基线\box2.
我不明白胶水是如何计算的。盒子的期望高度是 4 pt。自然高度是多少?如何计算胶水设置比率?
我不明白的另一件事是负值的影响\boxmaxdepth
。在第 81 页上,Knuth 说:当规则 (4) 确实减小了深度时,TEX 会将多余的深度添加到盒子的自然高度上,本质上就是将参考点向下移动直到深度减小到规定的最大值。)
在示例中,规则 2 适用,因为最后一个框 ( \box2
) 后面是粘连。因此深度必须是 0pt。现在规则 4 规定,如果计算出的深度 (0) 超过\boxmaxdepth
(-4pt),则深度将是当前值\boxmaxdepth
(即 -4)。这与上面引用的句子有何关系?
答案1
\tracingonline2
\showboxdepth100
\showboxbreadth100
\setbox1=\hbox{}\dp1=1pt\ht1=1pt\wd1=1pt
\setbox2=\hbox{}\dp2=2pt\ht2=2pt\wd2=2pt
\baselineskip=9pt minus3fil
\setbox4\vbox{\vss\copy1\copy2\vss}
\showbox4
\boxmaxdepth=-4pt
\setbox4\vbox{\vss\copy1\copy2\vss}
\showbox4
\setbox4\vbox to 4pt{\vss\copy1\copy2\vss}
\showbox4
\bye
只看高度所以我省略了\moveleft
。
第一个展示盒生产
\vbox(12.0+0.0)x2.0
.\glue 0.0 plus 1.0fil minus 1.0fil
.\hbox(1.0+1.0)x1.0
.\glue(\baselineskip) 6.0 minus 3.0fil
.\hbox(2.0+2.0)x2.0
.\glue 0.0 plus 1.0fil minus 1.0fil
显示自然高度为 12pt。
当你设置时,\boxmaxdepth
它需要从深度移动到高度,第二个\showbox
是
> \box4=
\vbox(16.0+-4.0)x2.0
.\glue 0.0 plus 1.0fil minus 1.0fil
.\hbox(1.0+1.0)x1.0
.\glue(\baselineskip) 6.0 minus 3.0fil
.\hbox(2.0+2.0)x2.0
.\glue 0.0 plus 1.0fil minus 1.0fil
所以现在高度为 16pt,深度为 -4pt
因此,在第三种情况下,您指定\vbox to 4pt
高度需要从 16pt 强制为 4pt,因此您需要缩小 12pt。5fil
缩小的单位有(每个单位缩小一个,每个\vss
单位缩小 3 个\baselineskip
),因此每个单位都变成 2.4pt,因此粘连集为 -2.4fil`
> \box4=
\vbox(4.0+-4.0)x2.0, glue set - 2.4fil
.\glue 0.0 plus 1.0fil minus 1.0fil
.\hbox(1.0+1.0)x1.0
.\glue(\baselineskip) 6.0 minus 3.0fil
.\hbox(2.0+2.0)x2.0
.\glue 0.0 plus 1.0fil minus 1.0fil