两个表格环境,其中第一列应该具有相同的宽度

两个表格环境,其中第一列应该具有相同的宽度

现在我正在使用以下tabular环境(从这里获得),以便compactitem表格内部看起来不错。

\begin{tabular}{@{}l p{10cm}}
  blub & \textbf{longer longer longer text}
  .
  .
  .
\end{tabular}

但是在这个表格下方和另一个标题下方,我想tabular再次使用相同类型的环境。如果我天真地这样做,当然它不会具有与第一个表格相同的列宽,因为第一列中最宽的文本似乎决定了它的宽度。如果有任何方法,我该如何让第二个表格环境复制第一个表格环境的宽度比率?

答案1

对于这个特殊情况,这里有一个技巧:

\documentclass{article}
\usepackage{environ}
\newdimen\nexttablewd
\newbox\nexttablebox
\NewEnviron{rtabular}[2][c]{%
  \setbox\nexttablebox=\vbox{
    \renewcommand\\[1][]{\cr}
    \halign{##\unskip\hfil&\vbox{##}\cr\BODY\crcr}
    \setbox\nexttablebox=\lastbox
    \setbox\nexttablebox=\hbox{\unhbox\nexttablebox\setbox\nexttablebox=\lastbox\unskip\setbox\nexttablebox=\lastbox}
    \global\nexttablewd=\wd\nexttablebox
  }%
  \begin{tabular}[#1]{#2}\BODY\end{tabular}
}

\def\zz{some text }\def\zzz{\zz\zz\zz\zz\zz}

\begin{document}
\begin{rtabular}{lp{5cm}}
something & \zzz \\
else & \zzz
\end{rtabular}

\bigskip

\begin{tabular}{p{\nexttablewd}p{5cm}}
what  & \zzz \\
is    & \zzz \\
this? & \zzz
\end{tabular}

\end{document}

一旦设置了两列rtabular环境,其第一列的宽度就可以在参数中使用\nexttablewd

这是通过在受保护的环境中构建第一个表,然后拆解其最后一行并获取其中第一个框的宽度来获得的。它可以推广到具有更多列的表。

在此处输入图片描述

相关内容