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

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

练习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?(尝试突出显示并询问组件对负跳过和正跳过的影响)\box2plus1fil

答案1

使用\lower3pt\box1,原始参考点向下移动 3pt;该框的高度为 0pt,深度为 4pt,宽度为 1pt。

因此参考点的垂直位置就很清楚了。

我们来分析一下水平位置。

需要填充的空间为 3pt,我们得到

  1. 无限粘合,自然宽度为 0pt,可拉伸性为 1fil;
  2. 一个 1pt 宽的盒子;
  3. 柔性胶水,自然宽度为-3pt,可拉伸性为3fil;
  4. 一个 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单位是隐含的)。

相关内容