![Como definir a largura de uma coluna 'p' como a largura restante de uma tabela?](https://rvso.com/image/391731/Como%20definir%20a%20largura%20de%20uma%20coluna%20'p'%20como%20a%20largura%20restante%20de%20uma%20tabela%3F.png)
Estou tentando criar uma tabela de duas colunas onde a segunda coluna preenche toda a largura restante da tabela até \columnwidth. Aqui está um exemplo simplificado de onde estou tentando começar:
\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*}
Quando isso é renderizado, a segunda linha da tabela ultrapassa o lado direito da tabela. O que eu gostaria de fazer idealmente é definir a coluna da direita que atualmente é do tipo 'l' como do tipo 'p', mas preciso fornecer explicitamente uma largura e não sei qual é essa largura. No caso da célula de notas de rodapé na parte inferior, é fácil, porque sei que ela abrange toda a tabela, que já sei que é \columnwidth, então apenas subtraio as margens tabcolsep que todas as outras linhas têm no meio, e é exatamente a largura certa.
Em última análise, não sei a largura da primeira coluna, porque ela pode conter muito mais linhas e não sei qual linha é necessariamente a entrada mais larga.
Como posso evitar que o texto da segunda linha ultrapasse o lado direito da tabela e seja agrupado corretamente, como faria uma coluna 'p'?
Responder1
Uma maneira de fazer isso é medir a largura da primeira coluna usando um savebox. Isso significa inserir a primeira coluna duas vezes.
Eu configurei o tabular para se estender por toda a coluna. Observe que as cores se estendem ainda mais.
\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}