我有下表:
\documentclass{article}
\usepackage{tabu, longtable}
\begin{document}
\begin{longtabu} to \textwidth {|l|l|l|lX|}
1 & Column 2 & 3 & \multicolumn{2}{l|}{Description} \\ \hline
1 & 2 & 3 & A: & Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget est id enim vehicula sodales et quis ipsum. \\ \hline
& & & \multicolumn{2}{p{8cm}|}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget est id enim vehicula sodales et quis ipsum.} \\ \hline
\end{longtabu}
\end{document}
最后一行使用固定的段落宽度(8cm)。虽然不太合适,但显示了结果应该是什么样子。
我的问题是:是否可以用其他值替换固定值,以便 Latex 为我计算最后两列的正确宽度?
答案1
实际上我在评论中所说的并不完全正确,tabularx
只真正知道列的宽度X
和总表格宽度。longtable
另一方面知道(并记录在辅助文件中)所有列的宽度,tabu
是使用两者的混合,因此我们可以使用数据longtable
:
这可以包含在一个更好的界面中,但基本上你需要做的是:
\documentclass{article}
\usepackage{tabu, longtable}
\begin{document}
\makeatletter
\newdimen\zzz
\ifx\LT@i\@undefined
\zzz=8cm
\else
\global\zzz\z@
\begingroup
\@tempcnta\z@
\def\LT@entry#1#2{%
\advance\@tempcnta\@ne
\ifnum\@tempcnta=4 \global\advance\zzz#2\relax\fi
\ifnum\@tempcnta=5 \global\advance\zzz#2\relax\fi
}
\LT@i
\endgroup
\advance\zzz-2\tabcolsep
\advance\zzz-\arrayrulewidth
\begin{longtabu} to \textwidth {|l|l|l|lX|}
1 & Column 2 & 3 & \multicolumn{2}{l|}{Description} \\ \hline
1 & 2 & 3 & A: & Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget est id enim vehicula sodales et quis ipsum. \\ \hline
& & & \multicolumn{2}{l|}{%
\rlap{\parbox[t]{\zzz}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget est id enim vehicula sodales et quis ipsum.}}}\\ \hline
\end{longtabu}
\end{document}