多列 3/6 不起作用

多列 3/6 不起作用

我正在尝试在 7 列表格中创建多列。

\documentclass{article}
\begin{document}
\begin{tabular}{|l|l|l|l|l|l|l|}
\hline
& \multicolumn{6}{c|}{Parameters}\\
\hline
We don't care * & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test}\\
\hline
Punctuation ? & \multicolumn{3}{c|}{yes+} & empty & empty & empty \\ %& \multicolumn{3}{c|}{no}\\
\hline
\end{tabular}
\end{document}

“是”单元格不起作用,我有一个小单元格(1 列)和紧跟其后的大“空”。最后两个空单元格没问题。

答案1

当您有跨越每一行的列时,底层\halign基元基本上会从计算中删除该列:

在此处输入图片描述

\documentclass{article}

\begin{document}

\begin{tabular}{|l|l|l|l|l|l|l|}
\hline
& \multicolumn{6}{c|}{Parameters}\\
\hline
We don't care * & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test}\\
\hline
Punctuation ? & \multicolumn{3}{c|}{yes+} & empty & empty & empty \\ %& \multicolumn{3}{c|}{no}\\
\hline
 1&2&3&4&5&6&7
\end{tabular}


\end{document}

答案2

问题在于,在表格中,编译器不会单独使用所有列来计算它们。这就是为什么@david-carlisle 的答案是,只要他添加一行,所有单元格都单独使用,布局就会改变。

如果您想要对表格有更多的控制权,您可以使用一个允许您设置表格宽度的环境,例如tabutabularx。但即使在那里,如果没有帮助,环境也不知道该做什么。

\documentclass[a4paper,12pt]{standalone}
\usepackage{tabu}
\begin{document}
\begin{tabu}{|l|X|X|X|X|X|X|}
\hline
& \multicolumn{6}{c|}{Parameters}\\
\hline
We don't care * & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test}\\
\hline
Punctuation ? & \multicolumn{3}{c|}{yes+} & empty & empty & empty \\ %& \multicolumn{3}{c|}{no}\\
\hline
\end{tabu}

\end{document}

会给你

在此处输入图片描述

tabu包为您提供了\tabuphantomline可以正确计算单元格宽度而无需打印任何内容的功能:

\documentclass[a4paper,12pt]{standalone}
\usepackage{tabu}
\begin{document}
\begin{tabu}{|l|X|X|X|X|X|X|}
\hline
\tabuphantomline
& \multicolumn{6}{c|}{Parameters}\\
\hline
We don't care * & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test} & \multicolumn{2}{l|}{cause it's a test}\\
\hline
Punctuation ? & \multicolumn{3}{c|}{yes+} & empty & empty & empty \\ %& \multicolumn{3}{c|}{no}\\
\hline
\end{tabu}

\end{document}

然后它会给你一些可能更接近你所期望的东西:

在此处输入图片描述

tabutabularx添加X计算列宽的列类型,以便所有X单元格具有相同的尺寸(尽管乘数也是可能的)。因此,对于您的示例,将最后 6 列作为X列可能有意义。

答案3

该示例抛出错误的原因tabular是其基本设置过度指定:它总共设置为 7 列,但这两行分别只包含 4 列和 5 列。深入挖掘后,人们很快发现,尽管第一列和最后两列由您提供的设置唯一标识,第 2 列至第 5 列为不是。目前自由度太多;你发现 LaTeX 无法对如何希望将列分组为多列。

可以通过添加“简单”的行来验证这一点,例如

a & b & c & d & e & f & g\\

以你的例子来说。

附录-- 在我发布这个答案后,我注意到 David Carlisle 已经给出了答案。它包含更精确的信息,说明 LaTeX 如何处理我所说的自由度过大问题,这个问题导致基本设置无法识别。

相关内容