我该如何正确地使用多列 tabularx?

我该如何正确地使用多列 tabularx?

如何在保持正确宽度的同时正确地对 tabularx 进行多列处理?

当将相对较短的内容插入 时\multicolumn,可以使用lc或来完成r。但是,如果内容不适合多列的宽度,则需要 或Xp并且必须计算正确的宽度。这个问题问如何做到这一点。

平均能量损失

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\pagestyle{empty}

\newcommand{\sbl}{\tiny Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Etiam lobortis facilisis sem.  Nullam nec mi et neque pharetra sollicitudin.  Praesent imperdiet mi nec ante.}

\begin{tabularx}{0.95\textwidth}{X|X|X|X|X}
  \hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & c\hfill 5\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & \sbl\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & \multicolumn{1}{X}{\sbl}\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & \multicolumn{2}{X}{\sbl}\\\hline
  c\hfill 1 & c\hfill 2 & \multicolumn{3}{X}{\sbl}\\\hline
  c\hfill 1 & \multicolumn{4}{X}{\sbl}\\\hline
  \multicolumn{5}{X}{\sbl}\\\hline
\end{tabularx}

\end{document}

mwe 的渲染

2\hsize正如许多地方所建议的那样,使用并没有起到作用。

c\hfill 1 & c\hfill 2 & c\hfill 3 &
\multicolumn{2}{>{\hsize=2\hsize}X}{\sbl}\\\hline % <--- does not work

正确的方法是什么?

答案1

从我找到的各种信息中,我能想到的最好的办法是引入一个新的宏(\Xwdth)来预先计算大小,同时考虑额外的宽度变量。然后我创建了一个多列包装器\multiX以方便使用。

\documentclass{article}
\usepackage{tabularx}
\begin{document}

\pagestyle{empty}

\newcommand{\Xwdth}[1]{\dimexpr#1\hsize+#1\tabcolsep+#1\tabcolsep+#1\arrayrulewidth-2\tabcolsep-\arrayrulewidth\relax}

\newcommand{\multiX}[2]{\multicolumn{#1}{>{\hsize=\Xwdth{#1}}X}{#2}}
\newcommand{\multiXr}[2][1]{\multicolumn{#1}{>{\hsize=\Xwdth{#1}\raggedright\arraybackslash}X}{#2}}

\newcommand{\sbl}{\tiny Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Etiam lobortis facilisis sem.  Nullam nec mi et neque pharetra sollicitudin.  Praesent imperdiet mi nec ante.}

\begin{tabularx}{0.95\textwidth}{X|X|X|X|X}
  \hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & c\hfill 5\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & \sbl\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & c\hfill 4 & \multiX{1}{\sbl}\\\hline
  c\hfill 1 & c\hfill 2 & c\hfill 3 & \multiX{2}{\sbl}\\\hline
  c\hfill 1 & c\hfill 2 & \multiX{3}{\sbl}\\\hline
  c\hfill 1 & \multiX{4}{\sbl}\\\hline
  \multiX{5}{\sbl}\\\hline
\end{tabularx}

\end{document}

解决方案渲染

相关内容