tabularx 和 textwidth

tabularx 和 textwidth

我想在我的项目中插入一个 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}

相关内容