![当命令中包含 colortbl 包中的 \columncolor 时,LaTeX 无法识别它](https://linux22.com/image/345986/%E5%BD%93%E5%91%BD%E4%BB%A4%E4%B8%AD%E5%8C%85%E5%90%AB%20colortbl%20%E5%8C%85%E4%B8%AD%E7%9A%84%20%5Ccolumncolor%20%E6%97%B6%EF%BC%8CLaTeX%20%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%E5%AE%83.png)
当命令处于命令状态时,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}