将引线与封闭水平盒子的右端对齐吗?

将引线与封闭水平盒子的右端对齐吗?

假设我有一个对齐方式,其中两列文本居中。如何\dotfill在这两列之间添加?如果我这样做

\vbox{\halign{%
  \hfil#\leaders\hbox to 5pt{\hfil.\hfil}\hskip 20pt plus 1 fil%
    &\leaders\hbox to 5pt{\hfil.\hfil}\hfil#\hfil\cr%
  abc&defgh\cr%
  a&b\cr%
  abc&d\cr%
}}

我将在两列边界的点之间获得一个随机的额外空间,因为两个相邻的\leaders命令分别与它们封闭的水平盒子的左端对齐。

有没有办法

  • 让 halign 使用指定单位的倍数作为列宽,
  • \leaders(或者可能\cleaders)与封闭水平盒子的右端对齐,或者
  • 将引线与外部水平盒子对齐,而不是直接与封闭的水平盒子对齐?

我知道我可以通过使用固定宽度的列而不是对齐来解决该问题。

答案1

一种方法是设置两次数据,第一次设置后测量第一列的宽度,然后重新设置强制第一列为 5pt 宽度的倍数,并将自然宽度向上舍入。我,在您的示例中添加了一个,因为它最大化了单元格边界处的间隙,如第一个对齐所示。

在此处输入图片描述

\vbox{\halign{%
  \hfil#\leaders\hbox to 5pt{\hfil.\hfil}\hskip 20pt plus 1 fil%
    &\leaders\hbox to 5pt{\hfil.\hfil}\hfil#\hfil\cr%
  abc&defgh\cr%
  a&b\cr%
  ab,c&d\cr%
}}

\bigskip
\tracingonline1

\setbox0\vbox{%
\global\setbox1\vbox{}%
\halign{%
  \hfil#\hskip 20pt plus 1 fil%
    &\hfil#\hfil\cr%
  abc&defgh\cr%
  a&b\cr%
  ab,c&d\cr%
}
\setbox0\lastbox
\setbox0\hbox{\unhbox0\unskip\setbox0\lastbox\unskip}%
\count0=\wd0
\divide\count0 327680
\multiply\count0 5
\ifdim\count0 pt<\wd0
\advance\count0 5
\fi
\xdef\colwidth{\the\count0 pt}%
}
\vbox{
\halign{%
  \hbox to\colwidth{\hfil#\leaders\hbox to 5pt{\hfil.\hfil}\hskip 20pt plus 1 fil}%
    &\leaders\hbox to 5pt{\hfil.\hfil}\hfil#\hfil\cr%
  abc&defgh\cr%
  a&b\cr%
  ab,c&d\cr%
}
}

\bye

相关内容