如果最后一行缺少尾随 \\,则无法在最后一列的环境中使用 collectcell

如果最后一行缺少尾随 \\,则无法在最后一列的环境中使用 collectcell

好吧,又到了尴尬的提问时间。我做错了什么包裹collcell? 我经常使用这个包,但是却被这个简单的例子难住了。

我定义了一个newcolumntypeC它将颜色应用于文本。这很好用,但是仅有的在第一列上。如果我尝试在第二列上使用以下命令,则会失败:

! 的参数\collect@cell@arg有一个额外的 } \par 。l.20 a & b \\

下面的 MWE 产生以下内容,说明该collcell包正在执行其工作:

在此处输入图片描述

笔记:

  • 这个例子当然可以只用包来完成array,但我需要使用它collcell,因为还有更多的处理需要做。

代码:

\documentclass{article}
\usepackage{xcolor}
\usepackage{collcell}

\newcommand*{\NewData}[1]{\textcolor{red}{#1}}%
\newcolumntype{C}{>{\collectcell\NewData}c<{\endcollectcell}}

\newenvironment{MyTabular}[1]{% ignore user specified column spec for now...
    \begin{tabular}{Cr}% <--- This works just fine
    %\begin{tabular}{rC}% <--- but this does not!!
    %\begin{tabular}{CC}% <--- neither does this does (I want this)!!
}{%
    \end{tabular}%
}%

\begin{document}
\begin{MyTabular}{ll}
    a & b \\
    c & d
\end{MyTabular}
\end{document}

答案1

有关文档说它在最后一个单元格中也有效,如果调用collcell该选项,则该单元格不应为空。norobustcr

然而,当隐藏在环境中时,似乎需要格外小心。要么在最后一行结束,\\要么将环境定义为

\newenvironment{MyTabular}[1]
  {\tabular{rC}}
  {\endtabular}

当然,这里这个论点被抛到了一边,但我相信你还有其他事情要做;-)

现在

\begin{MyTabular}{ll}
a & b \\
c & d
\end{MyTabular}

将工作。

相关内容