现在我正在使用以下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
。
这是通过在受保护的环境中构建第一个表,然后拆解其最后一行并获取其中第一个框的宽度来获得的。它可以推广到具有更多列的表。