\span 如何影响 \halign 中“&”的数量?

\span 如何影响 \halign 中“&”的数量?

考虑一下这个序言:

\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_1w_11= 50。是-( + )w_2的最大值,且.是负无穷,所以是= 50。w_12w_11t_1w_22w_12w_2w_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- 50
  • w_33

值“-50”只出现在这些表达式中的第一个中,因此它一定是 的值w_3。因为这w_33一定是负无穷大。因此w_23为零。

总结一下:如果跨度的列数比其他行多,则 TeX 认为缺失列的宽度为负无穷大,而跨越缺失列的条目的宽度为零。

总结一下:如果您使用\span,请确保至少有一行具有相应数量的&

相关内容