TeXbook - 第 12 章:胶水 - 练习 12.13

TeXbook - 第 12 章:胶水 - 练习 12.13

练习12.13(第 81 页)做出以下假设:

  • \box11pt1pt又深又1pt
  • \box22pt2pt又深又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

相关内容