未微调列宽的情况下将文本居中对齐

未微调列宽的情况下将文本居中对齐

目前,我从该代码(Plain TeX)获得了以下 valign 输出:

\def\make#1{{\hsize1.5in\vfil\centerline{\strut #1}\vfil\hrule}}
\valign{\hrule\make{#}&&\make{#}\cr\noalign{\vrule}
    Dimensions (in)&\multispan{9}\make{33$\times$32}&\multispan{7}\make{24$\times$24}&\multispan{7}\make{17$\times$16}&\multispan{3}\make{17$\times$16}&\multispan{3}\make{8$\times$7}&\multispan{4}\make{8$\times$7}\cr\noalign{\vrule}
    Pit Depth (cm)&1.3&1.4&1.1&1.8&2.2&1.4&1.2&2.4&1.8&2.0&2.5&0.5&1.2&1.2&1.0&1.5&1.3&1.2&0.9&2.2&1.2&2.0&1.8&1.3&1.5&1.4&0.8&0.9&2.0&0.8&0.8&0.8&0.8\cr\noalign{\vrule}
    Pit Width (cm)&4.2&3.7&3.0&2.3&3.1&2.5&2.1&3.9&3.6&7.0&4.1&2.0&2.5&3.0&3.0&4.0&4.1&3.8&3.2&3.8&2.5&5.0&3.6&3.1&3.1&2.9&0.9&0.8&3.0&0.8&0.8&0.8&0.8\cr\noalign{\vrule}
    Nearest Neighbor (cm)&6.00&12.04&6.00&10.63&3.16&2.24&2.24&3.16&3.16&3.16&3.16&10.20&6.40&7.00&8.00&9.06&3.61&3.61&7.07&3.00&3.00&5.00&6.00&5.10&7.00&5.10&2.24&2.24&5.83&2.24&6.40&2.24&4.47\cr\noalign{\vrule}
}

当前(接近期望)valign 我希望能够删除该\hsize1.5in条款。我尝试使用:

\def\make#1{{\vfil\hbox{\strut #1}\vfil\hrule}}

但这还不够,因为文本没有居中(并且任何段落排版工具都\leftskip不能\rightskip使用,因为段落设置使用\hsize来开发其框)。

我考虑过的另一种方法是使用\halign。这变得更加棘手,我甚至还没有找到一种一致/自动的方法来实现\multirow\cline等效(借鉴 LaTeX 术语),因为据我所知,它们需要更复杂的表格基础结构。但如果我能让它工作,\hfil$\vcenter{#1}$\hfil就可以在两个轴上居中。

这种风格显然可能的鉴于 LaTeX 能够实现这一点(使用tabular+multirow)。相关基础结构是否足够简单,可以部分重新实现,还是我应该尝试使用不太通用的方法(例如将列标题装箱并根据此预设每列)?或者也许我只是缺少一些(或与 相关的原语)能够提供的\hsize关键信息。\halign\valign

答案1

因为您想要正常的表格行为,即列宽基于内容的宽度,所以您\halign不希望\valign这样(或者更简单地使用 latex tabular,它基本上是相同的)

在此处输入图片描述



{\offinterlineskip
\setbox\strutbox=\hbox{\vrule height12pt depth3pt width0pt }
\def\cline{\omit\vrule\hfill\vrule&\multispan{3}{\kern-2pt\leaders\hrule\hfill}\cr}
%etex or use \addvance etc, 15.4 = height of large strut + one \hrule
\def\multirow#1#2{\smash{\lower0.5\dimexpr\numexpr#1-1\relax
\dimexpr15.4pt\relax\relax\hbox{\hss#2\hss}}}
\halign{%
\vrule\kern2pt\strut\hfill\ignorespaces#\unskip\hfill\kern4pt\vrule\kern2pt&%
\kern2pt\hfill\ignorespaces#\unskip\hfill\kern2pt\vrule\kern2pt&
\kern2pt\hfill\ignorespaces#\unskip\hfill\kern2pt\vrule\kern2pt&
\kern2pt\hfill\ignorespaces#\unskip\hfill\kern2pt\vrule\cr
\noalign{\hrule}
Dimensions (in)& Pit Depth (cm)& Pit Width (cm)&Nearest Neighbor (cm)\cr
\noalign{\hrule}
\multirow{9}{33$\times$32}
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\cline
&1.2&4.5&2.8\cr
\noalign{\hrule}
\multirow{7}{24$\times$24}
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\cline
&2.3&4.5&3.8\cr
\noalign{\hrule}
}

}
\bye

相关内容