目前,我从该代码(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}
}
\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