如何设置 \settabs 中最后一列的宽度?

如何设置 \settabs 中最后一列的宽度?

制表符对齐中样本行的最后一列没有任何用处。如果我们在 中使用样本行\settabs,我们必须将相应列(可能不是第一个)的最宽单元格放在那里。但对于最后一列,这不起作用。最后一列的宽度由第一行的最后一个单元格的宽度决定。

为什么示例 1 中最后一列的宽度不存在YY?如何将其Y置于单元格中央?

示例 1:

\tt
\vrule\vbox{\hrule\settabs\+ \ XX \vrule&\cr
\+ \hfill\ X \hfill\strut\vrule& \ Y \hfill&\cr
\hrule
\+ \ XX \strut\vrule& \ YY \hfill&\cr
\hrule}\vrule
\bye

在此处输入图片描述

示例 2:

\tt
\vrule\vbox{\hrule\settabs\+ \ XX \vrule&\cr
\+ \hfill\ X \hfill\strut\vrule& \ Y \hfill&\cr
\hrule
\+ \ XX \strut\vrule& \ YY \cr
\hrule}\vrule
\bye

在此处输入图片描述

(当然最好用 来完成\halign,但我只是好奇是否可以在 中完成\settabs

答案1

行中的每个字段都是固定大小,\hbox但最后一个字段除外,因为没有标签来限制它,所以它是可变的。因此只需添加另一个标签:

\settabs\+\ XX \vrule&\ YY &\cr

编辑:

在对您的示例进行了一些试验后,我明白了发生了什么。\settabs但我以前从未使用过。

\hfill不会占用前面的空间。这不是\hfill造成差异的原因。如果你仔细观察,就会发现这不是两个示例之间的唯一差异。第一个例子添加了,而造成差异的\hfill&是。&

\settabs(定义列但不打印)的第一行只有一个&,因此 XXX 列具有固定宽度,但没有&后面的 YYY 列是可变的。下一行,一行有 X 和 Y,有第二个&;将第二列的宽度固定为指定的大小,即一个 Y 和两个空格(后跟不包含任何内容的第三列)。

现在转到包含 XX 和 YY 的行。示例 1 也使用第二个&,因此框会缩小以匹配由包含 X 和 Y 的行定义的框,因此行会在您看到它结束的位置结束。示例 2 没有第二个&,因此 YY 字段的大小不固定,因此它的宽度与其自然大小(两个 Y 和两个空格)一样宽。两行(它们是\hbox-es)堆叠在 中\vbox,它们使 的\vbox宽度与较宽的行(即底部的行)一样宽。

相关内容