考虑一下这个序言:
\tabskip=0pt plus1fil#&#&#\tabskip=0pt
最后一个模板是,因此一行是或#
应该无关紧要。但事实证明,这确实很重要,但只有当一行带有 时才重要。我想了解为什么之前很重要。例如:\BOX&\BOX&\cr
\BOX&\BOX\cr
\span
&
\cr
\def\BOX{\vrule width50pt height8.5pt depth3.5pt}
\vbox{\offinterlineskip
\halign to 16em{\tabskip=0pt plus1fil#&#&#\tabskip=0pt\cr
\BOX&\BOX&\cr
&\span\leaders\vrule height8.5pt depth3.5pt\hfill\cr
}}
\vbox{\offinterlineskip
\halign to 16em{\tabskip=0pt plus1fil#&#&#\tabskip=0pt\cr
\BOX&\BOX\cr
&\span\leaders\vrule height8.5pt depth3.5pt\hfill\cr
}}
为了方便起见,有一个标尺。我们可以很容易地看到,当删除&
之前的内容时,第二列移动了 25pt:\cr
% ruler:
\vskip5pt
\def\\#1{\hbox to 10pt{\hfil#1}}
\def\1{\vrule height 0pt depth 2pt}
\def\2{\vrule height 0pt depth 4pt}
\def\3{\vrule height 0pt depth 8pt}
\def\4{\\\1\\\1\\\1\\\1\\\2\\\1\\\1\\\1\\\1\\\3}
\hbox to160pt{\hrulefill} \nointerlineskip
\hbox{\3\4\\\1\\\1\\\1\\\1\\\2\\\1} \nointerlineskip
\font\7=cmr7 \font\5=cmr5
\hbox to360pt{\rlap{\70}\kern50pt\rlap{\550}\kern50pt\rlap{\7100}\kern50pt
\rlap{\5150}\hss}
答案1
让我们考虑一下不使用 的情况&
。当第二行(带有\span
)出现时,我们得到第一行的以下内容:
g0 w50 g55 w50 g55
当它不存在时,我们得到第一行:
g0 w50 g30 w50 g30
由此我们可以得出结论,粘连的设置受到带有 的线的影响\span
。也就是说,为第二条线计算粘连,然后将该粘连用于第一条线。
这是第二行:
...\hbox(8.5+3.5)x160.00024, glue set 55.00012fil
....\glue(\tabskip) 0.0
....\hbox(8.5+3.5)x50.0
....\glue(\tabskip) 0.0 plus 1.0fil
....\hbox(8.5+3.5)x50.0, glue set 55.00012fill
.....\leaders 0.0 plus 1.0fill
......\rule(8.5+3.5)x0.4
....\glue(\tabskip) 0.0 plus 1.0fil
....\hbox(0.0+0.0)x-50.0
....\glue(\tabskip) 0.0
让我们使用第 245 页的公式电子书了解为什么宽度分别为 50、50 和 -50:
w_1
是w_11
= 50。是-( + )w_2
的最大值,且.是负无穷,所以是= 50。w_12
w_11
t_1
w_22
w_12
w_2
w_22
必须要弄清楚的是为什么第三列的宽度为 -50。
w_3
是最大值
w_13
- (w_1
+t_1
) - (w_2
+t_2
)w_23
- (w_2
+t_2
)w_33
标签跳过粘连的自然宽度为零,因此t_k
为零。因此,w_3
最大值为
w_13
-w_1
-w_2
w_23
-w_2
w_33
从 1 到 3 没有跨度,所以w_13
-infinity 也是。所以,w_3
最大值是从
w_23
-w_2
w_33
w_2
是 50,所以w_3
最大
w_23
- 50w_33
值“-50”只出现在这些表达式中的第一个中,因此它一定是 的值w_3
。因为这w_33
一定是负无穷大。因此w_23
为零。
总结一下:如果跨度的列数比其他行多,则 TeX 认为缺失列的宽度为负无穷大,而跨越缺失列的条目的宽度为零。
总结一下:如果您使用\span
,请确保至少有一行具有相应数量的&
。