Я пытаюсь создать таблицу из двух столбцов, где второй столбец заполняет всю оставшуюся ширину таблицы до \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
Один из способов сделать это — измерить ширину первого столбца с помощью savebox. Это означает, что нужно ввести первый столбец дважды.
Я установил табличную часть так, чтобы она простиралась по всему столбцу. Обратите внимание, что цвета простираются еще дальше.
\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}