我想在我的项目中插入一个 3 列表格,但在尝试将文本放入多列单元格时遇到了问题。这是我的代码:
\begin{center}
\begin{tabularx}{\textwidth}{|c X c|}
\hline
\multicolumn{1}{|c}{} &
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{ cell0: text text text text text text text text text text text text text text text text }\\
\hline
cell1 & cell2: text text text text text text text text & cell3\\
\hline
\end{tabularx}
\end{center}
问题是,每当我使用 hsize 命令使文本正确适合单元格 0 时,下一行中的单元格 2 就会失去对文本的自动调整并获得固定宽度(这是我不想要的)。那么,如何才能在单元格 2 保持对文本的自动调整的同时调整单元格 0 中的文本?
答案1
您对“cell0”对象可用宽度的计算不正确。如果两个基础列都是 类型,则该计算(几乎)正确X
;然而,事实并非如此,不是吗?
为了正确计算第 2 列和第 3 列的可用组合宽度,我建议您按以下步骤操作。
首先,找到第 3 列中决定该列自然宽度的单元格。这通常可以通过目视检查轻松可靠地完成。
假设定义第 3 列自然宽度的单元格由字符串组成
aratherlongword
。其宽度可以通过运行
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- 然后可以计算第 2 列和第 3 列的可用组合宽度
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
完整的 MWE(请注意,\multicolumn{1}{|c}{}
由于它是多余的,我已经将其丢弃了。)
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{center}
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
\begin{tabularx}{\textwidth}{|c X c|}
\hline
& \multicolumn{2}{>{\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax}X|}{%
cell0: text text text text text text text text text text text text text text text text }\\
\hline
cell1 & cell2: text text text text text text text text & aratherlongword\\
\hline
\end{tabularx}
\end{center}
\end{document}