当命令中包含 colortbl 包中的 \columncolor 时,LaTeX 无法识别它

当命令中包含 colortbl 包中的 \columncolor 时,LaTeX 无法识别它

当命令处于命令状态时,LaTeX 无法识别包\columncolor中的命令。colortbl

以下是一个例子

\documentclass{article}
\usepackage{colortbl}
\newcommand{\cBlue}{\columncolor[rgb]{0,.6,1}}
%\newcommand{\Blue}{\color[rgb]{0,.6,1}}
\begin{document}
\begin{tabular}{ >{\cBlue} cc}
  Blue&White\\
  Blue&White
\end{tabular}

\end{document}

我得到了错误

! Undefined control sequence.
\cBlue ->\columncolor 
                      [rgb]{0,.6,1}
l.7   B
       lue&White\\
? 

有趣的是,htlatex 顺利通过:它给出了蓝色柱的预期输出。

\columncolor请注意,如果我用替换,则没有问题\color

另外,\rowcolor这也很好,你可以在这个例子上测试它

\documentclass{article}
\usepackage{colortbl}
%\newcommand{\cBlue}{\columncolor[rgb]{0,.6,1}}
\newcommand{\rBlue}{\rowcolor[rgb]{0,.6,1}}
%\newcommand{\Blue}{\color[rgb]{0,.6,1}}

\begin{document}
\begin{tabular}{cc}
  \rBlue Blue&Blue\\
  White&White
\end{tabular}

\end{document}

答案1

正如错误消息正确显示的那样,\columncolor该包未定义colortbl

它只是用作修改后的数组前导解析器中的占位符,以便可以提取颜色规范并将其重新插入到需要的地方。

根据实际使用情况,您可以通过定义列类型或定义颜色名称来参数化使用的颜色

\documentclass{article}
\usepackage{colortbl}

\newcolumntype{B}{>{\columncolor[rgb]{0,.6,1}}}
\definecolor{myblue}{rgb}{0,.6,1}

\begin{document}
\begin{tabular}{ Bcc>{\columncolor{myblue}}c}
  Blue&White&Blue\\
  Blue&White&Blue
\end{tabular}

\end{document}

\color并且\rowcolor是定义的 TeX 命令,它们在使用时起作用。\columncolor(因为在上个千年的某个时候这似乎是个好主意)在那时不起作用(或者根本不起作用,没有这个名字的命令,内部使用它的方式类似于用于[]分隔可选参数的方式,分隔在表内部提取和使用的颜色规范。

答案2

请按以下方式使用:

\documentclass{article}
\usepackage[table]{xcolor}
\newcolumntype{B}{>{\columncolor[rgb]{0,.6,1}}c}
\begin{document}
\edef\cBlue{}
\begin{tabular}{ B c }
        Blue&White\\
        Blue&White
\end{tabular}

\end{document}

相关内容