![TeXbook - 第 12 章:胶水 - 练习 12.8](https://linux22.com/image/375083/TeXbook%20-%20%E7%AC%AC%2012%20%E7%AB%A0%EF%BC%9A%E8%83%B6%E6%B0%B4%20-%20%E7%BB%83%E4%B9%A0%2012.8.png)
练习12.8
假设\box1
高 1 pt,深 1 pt,宽 1 pt;\box2
高 2 pt,深 2 pt,宽 2 pt。第三个框由以下公式构成:
\setbox3=\hbox to3pt{\hfil\lower3pt\box1\hskip-3pt plus3fil\box2}
的高度、深度和宽度是多少\box3
?描述盒子 1 和 2 的参考点相对于盒子 3 的参考点的位置。
回答
\box3
高 2 pt,深 4 pt,宽 3 pt。从 的参考点开始\box3
,向右移动 0.75 pt 并向下移动 3 pt 到达 的参考点\box1
;或者向右移动 1 pt 到达 的参考点\box2
。
我不明白这个问题的参考点部分,需要解释。我期望得到不同的答案:“向下走 3 pt 到达参考点\box1
;或向左走 2 pt 到达参考点\box2
”。我认为负胶水\hskip-3pt plus1fil
是我感到困惑的原因。
为什么\hbox to3pt{\box1\box2}
和\hbox to3pt{\box1\hskip-3pt plus1fil\box2}
产生相同的结果,但\hbox to3pt{\box1\hskip-3pt\box2}
将其向左移动 3 pt 并向右\hbox to3pt{\box1\hskip3pt plus1fil\box2}
移动3 pt?(尝试突出显示并询问组件对负跳过和正跳过的影响)\box2
plus1fil
答案1
使用\lower3pt\box1
,原始参考点向下移动 3pt;该框的高度为 0pt,深度为 4pt,宽度为 1pt。
因此参考点的垂直位置就很清楚了。
我们来分析一下水平位置。
需要填充的空间为 3pt,我们得到
- 无限粘合,自然宽度为 0pt,可拉伸性为 1fil;
- 一个 1pt 宽的盒子;
- 柔性胶水,自然宽度为-3pt,可拉伸性为3fil;
- 一个 2pt 宽的盒子。
计算出的自然宽度为 0pt,因此小于要填充的规定宽度。总拉伸量为 4fil,因此拉伸比计算为 0.75(对于fil
)。但仍会考虑自然宽度的 -3pt。
自然宽度为 0pt,因此无限胶水必须参与其中。3pt 被分成四部分,一部分分配给第一个胶水,三部分分配给第二个胶水。由于 3/4=0.75,第一个框的参考点将位于外框参考点右侧 0.75pt 处。
然后是第二个胶水,其 -3pt 加上 3fil,变成胶水
-3pt + 0.75*3pt = -0.75pt
(见第 77 页顶部的危险弯曲)。我们移动了 (0.75+1)pt,因此的参考点距离\box2
外框的参考点 1pt。
如果你这样做\showbox3
,其中\box1
和\box2
是手动设置为所需尺寸的空框,你会得到
> \box3=
\hbox(2.0+4.0)x3.0, glue set 0.75fil
.\glue 0.0 plus 1.0fil
.\hbox(1.0+1.0)x1.0, shifted 3.0
.\glue -3.0 plus 3.0fil
.\hbox(2.0+2.0)x2.0
(如果\raise3pt
已使用,则将得到shifted -3.0
)。可以使用拉伸比率 0.75(单位)来计算粘合fil
:第一个 glob 变为 0.75,第二个 glob 变为 -3+3*0.75(pt
单位是隐含的)。