私は 2 列の表を作成しようとしています。2 列目は \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*}
これをレンダリングすると、表の 2 行目が表の右側を超えて拡張されます。理想的には、現在タイプ 'l' である右側の列をタイプ 'p' に設定するのですが、そのためには明示的に幅を指定する必要がありますが、この幅が何であるかはわかりません。下部の脚注セルの場合は簡単です。テーブル全体にまたがることがわかっており、\columnwidth であることがわかっているので、他のすべての行の中央にある tabcolsep マージンを減算するだけで、ちょうど適切な幅になります。
結局のところ、最初の列の幅はわかりません。そこにはさらに多くの行が含まれている可能性があり、どの行が必ずしも最も幅の広いエントリであるかわからないためです。
2 行目のテキストが表の右側からはみ出さず、'p' 列のように正しく折り返されるようにするにはどうすればよいでしょうか。
答え1
これを行う 1 つの方法は、セーブボックスを使用して最初の列の幅を測定することです。つまり、最初の列を 2 回入力することになります。
表を列全体に拡張するように設定しました。色がさらに拡張されていることに注意してください。
\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}