我正在使用ACM SIG 模板并尝试创建一个包含 4 列的表格。
我遇到了问题标题中提到的错误。我知道发生此错误的标准原因。
但我的问题是:模板或文件是否可能.cls
控制表中的最大列数? 如果是的话,我会得到与此不同的错误吗?
答案1
该错误可以通过以下方式重现:
\documentclass{article}
\begin{document}
\begin{tabular}{c|c}
one & two & three \\
\hline
one & two
\end{tabular}
\end{document}
问题是由您尝试插入的额外列引起的。表格环境需要两列,但插入了三列。
答案2
并非所有extra alignment tab has been changed to \cr
错误都是通过 Google 或 Bing 发现的。一些简单的事情,例如定义带有参数的宏并忘记第一个参数之前的参数,\\
都会重现错误。
与 也一样\newcommand
。
例如,
\def\test#1#2{$\hbox to 4cm{#1}}$}
\begin{tabular}{cccc}
Oh & \test{tested}{} & Oh & \test{Oh} \\
& \test{testing}{} & & \test{Ohh}{} \\
\end{tabular}
答案3
另一种获取! Extra alignment tab has been changed to \cr
错误的方法是使用对齐命令(\centering
,\raggedleft
,\raggedright
)在环境的最后一行tabular
(p{}
当然,使用格式化时)。
例如,此代码将会出现错误:
\begin{tabular}{|p{0.2\textwidth}|p{0.2\textwidth}|}
A & \centering B \\
C & D \\
\end{tabular}
但是此代码不会:
\begin{tabular}{|p{0.2\textwidth}|p{0.2\textwidth}|}
\centering A & B \\
\centering C & D \\
\end{tabular}
我们可以使用环境center
来克服这个问题,但需要注意的是,我们将有额外的垂直空间。(不用说,c
如果您愿意放弃宽度控制,您可以更改为列格式;))
解决这个问题的快速方法是添加一个零宽度列例如,p{0pt}
快速修复解决方案:
\begin{tabular}{|p{0.2\textwidth}|p{0.2\textwidth}|p{0pt}}
\centering A & \centering B &\\
\raggedleft C & \raggedright D &\\
\end{tabular}
答案4
这是您可能收到此错误的另一种方式(错误仍然是列太多,但如果您像我一样愚蠢,这并不明显):
由于某种原因,我使用的是&&
而不是&
。所以我的列数是我想的两倍。我很长时间都搞不清楚哪里出了问题,因为这里的所有答案都说“这个错误是由于列太多造成的!”而我当时想,“我的列数并不太多!”。
因此,如果有人和我一样有&&
残疾,希望这个答案能够对你有所帮助:)