![如何將「p」列的寬度設定為表格的剩餘寬度?](https://rvso.com/image/391731/%E5%A6%82%E4%BD%95%E5%B0%87%E3%80%8Cp%E3%80%8D%E5%88%97%E7%9A%84%E5%AF%AC%E5%BA%A6%E8%A8%AD%E5%AE%9A%E7%82%BA%E8%A1%A8%E6%A0%BC%E7%9A%84%E5%89%A9%E9%A4%98%E5%AF%AC%E5%BA%A6%EF%BC%9F.png)
我正在嘗試創建一個兩列表,其中第二列填充表的所有剩餘寬度,直到 \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}