表格右对齐错误

表格右对齐错误

我的主要目标是禁用表格中的文本对齐,只保留左对齐文本。我已加载包array并定义了一个自定义包,\newcolumntype如下所示:

\usepackage{array}
\newcolumntype{x}[1]{>{\raggedright}p{#1}}

当在环境中使用它时tabular,一切都正常,直到最后一列,它抛出这个错误:

./temp.tex:96: Misplaced \noalign.
\midrule ->\noalign 
                     {\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global \@...
l.96     \midrule

?

使用\begin{tabular}{@{} x{28mm} x{20mm} x{20mm} p{25mm} @{}}可以正常工作(但会引发 \hbox 未满警告),但使用\begin{tabular}{@{} x{28mm} x{20mm} x{20mm} x{25mm} @{}}会引发上述错误。

为什么不允许我在最后一列上使用自定义列类型?似乎我遗漏了一些显而易见的简单解决方案。

\begin{tabular}{@{} x{28mm} x{20mm} x{20mm} p{25mm} @{}}

表格的 \hbox 未满

答案1

这是一个已知问题。当您说 时\raggedright,命令\\被重新定义。这不会造成任何损害,直到您想要终止表格行:LaTeX 发现 的\\定义\raggedright与 中的含义不同tabular。写

\newcolumntype{x}[1]{>{\raggedright\arraybackslash}p{#1}}

\newline如果您想在某个单元格中终止一行,请使用。或者使用您的定义并使用 终止表格行\tabularnewline

答案2

除了 egreg 的回答之外,\RaggedRight来自ragged2e包的命令没有这个问题。这有效:

\usepackage{array},
\usepackage[originalparameters]{ragged2e}  % The option prevents hyphentation rather than making it rare 
\newcolumntype{x}[1]{>{\RaggedRight}p{#1}}

答案3

最简单的解决方案:添加一个空列。根据您构建表格的方式,您可以将其宽度设为最小(例如,使用 p{size}),或者让 LaTeX 自行解决。我在最近的一篇论文中使用了这两种方法,并解决了这个问题。唯一的缺点是其中一个表格使用了 \hline 和垂直规则,表格右侧有一个“悬垂”。我说,接受它吧,生命短暂。

相关内容