如何将“p”列的宽度设置为表格的剩余宽度?

如何将“p”列的宽度设置为表格的剩余宽度?

我正在尝试创建一个两列表格,其中第二列填充表格的所有剩余宽度,直到 \columnwidth。下面是我要尝试从哪里开始的一个简化示例:

\noindent \rowcolors[]{1}{}{gray!20}%
\begin{tabular*}{1\columnwidth}{@{\extracolsep{\fill}}cl}
column 1 header & \multicolumn{1}{c}{column 2 header}\tabularnewline
autosized column & This column should contain justified text, wrapping at the width of
the table instead of going past it\tabularnewline
some additional rows... & some additional justified text\global\rownum=0\relax\tabularnewline
\multicolumn{2}{p{1\columnwidth-2\tabcolsep}}{Justified footnotes

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ornare
sapien vel tellus rhoncus, placerat rutrum ipsum pretium. 

Maecenas vel convallis erat. Morbi facilisis, nunc molestie consequat
consectetur, velit turpis facilisis dolor, non tempor mauris nunc
vitae risus. Nullam ante mauris, volutpat ut molestie eget, congue
non velit. Nullam id maximus ligula. }\tabularnewline
\end{tabular*}

呈现此内容时,表格的第二行会延伸到表格的右侧。我理想情况下想要做的是将当前类型为“l”的右侧列设置为“p”类型,但随后我需要明确指定其宽度,但我不知道该宽度是多少。对于底部的脚注单元格,这很容易,因为我知道它跨越整个表格,我已经知道它是 \columnwidth,因此我只需减去其他行都在中间的 tabcolsep 边距,它就是正确的宽度。

最终,我不知道第一列的宽度,因为它可能包含更多行,而且我不知道哪一行一定是最宽的条目。

如何才能防止第二行的文本溢出表格的右侧,并像“p”列一样正确换行?

答案1

一种方法是使用保存框测量第一列的宽度。这意味着输入第一列两次。

我将表格设置为延伸至整个列。请注意,颜色延伸得更远。

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{showframe}% MWE only
\newlength{\mywidth}
\begin{document}

\sbox0{\begin{tabular}{c}% measure first column + 2\tabcolsep
column 1 header \\
autosized column \\
some additional rows... 
\end{tabular}}%
\setlength{\mywidth}{\dimexpr \columnwidth - \wd0}% do once

\noindent \rowcolors[]{1}{}{gray!20}%
\begin{tabular}{@{}cp{\mywidth}@{}}
column 1 header & \multicolumn{1}{c}{column 2 header}\\
autosized column & This column should contain justified text, wrapping at the width of
the table instead of going past it\\
some additional rows... & some additional justified text\global\rownum=0\relax\\
\multicolumn{2}{@{}p{\columnwidth}@{}}{Justified footnotes

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ornare
sapien vel tellus rhoncus, placerat rutrum ipsum pretium. 

Maecenas vel convallis erat. Morbi facilisis, nunc molestie consequat
consectetur, velit turpis facilisis dolor, non tempor mauris nunc
vitae risus. Nullam ante mauris, volutpat ut molestie eget, congue
non velit. Nullam id maximus ligula. }\\
\end{tabular}
\end{document}

演示

相关内容