在表格中包装多列

在表格中包装多列

我正在尝试让multicolumn单元格包装tabulary表格内的内容。表格是动态生成的,因此我无法手动设置要包装的多列单元格的宽度。相反,我希望它以它跨越的组合列的宽度进行包装。

这是 MWE。我给单元格着色,这样你就能看到多列如何溢出它们跨越的单元格。我的真实表格要复杂得多,在环境中呈现效果最好tabulary,这就是我使用它而不是tabular或的原因tabularx

\documentclass{article}
\usepackage{lipsum, multirow, tabulary, color, colortbl}
\newcommand\cc[1]{\cellcolor{yellow}#1}
\begin{document}

\begin{tabulary}{\linewidth}{|C|C|C|C|}
  \multicolumn{2}{c|}{\cc{\lipsum[1][1]}} &  \multicolumn{2}{c|}{\cc{\lipsum[1][1]}} \\
  \cc{One} & \cc{Two} & \cc{Three} & \cc{Four}
\end{tabulary}

\end{document}

在此处输入图片描述

我尝试过以下方法:

  • 将内容包装在 minpage 或 parbox 中。如果我指定宽度,这种方法有效,但我需要如上所述动态设置宽度。
  • 我已经尝试过这里的建议,但它们似乎不适用于环境tabulary

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum, multirow, tabulary, color, colortbl}
\newcommand\cc[1]{\cellcolor{yellow}#1}
\begin{document}


\begin{tabulary}{\linewidth}{|C|C|C|C|}
  \multicolumn{2}{p{
\dimexpr
\csname TY@F1\endcsname +
\csname TY@F2\endcsname +
2\tabcolsep +
\arrayrulewidth
\relax
}|}{\cc{\lipsum[1][1]}} &  
\multicolumn{2}{p{
\dimexpr
\csname TY@F3\endcsname +
\csname TY@F4\endcsname +
2\tabcolsep +
\arrayrulewidth
\relax
}|}{\cc{\lipsum[1][1]}} \\
  \cc{One} & \cc{Two} & \cc{Three} & \cc{Four}
\end{tabulary}

\end{document}

相关内容