根据同一个基本命令定义多个命令

根据同一个基本命令定义多个命令

我想定义这些命令:

\newcommand{\green}[1]{\textcolor{green}{#1}}
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
\newcommand{\red}[1]{\textcolor{red}{#1}}

当我尝试使用\green与命令相对应的输出\red时。这表明,除了最后一个之外,前面的定义都被忽略或被最后一个替换,也许是因为所有定义都基于同一个“基本”命令,即\textcolor

编辑

感谢大家的回答。这是一个 MWE(相当简单的“不起作用”示例,呵呵)。看来这个cprotect包确实有问题,我需要它才能使用verb宏内的环境。不仅先前的宏定义被忽略,而且垂直间距也没有应用。

如果最好的做法是提出一个单独的问题,请毫不犹豫地告诉我。

\documentclass[border=5mm]{standalone}

\usepackage{xcolor,cprotect}

\newcommand{\green}[1]{\textcolor{green}{#1}}
\cMakeRobust\green
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
\cMakeRobust\blue
\newcommand{\red}[1]{\textcolor{red}{#1}}
\cMakeRobust\red

\begin{document}

\green{Huey $e^{\pi i}+1=0$ (math is OK)}\newline

\newline\blue{Dewey \verb|I'm using verbatim here $e^{\pi i}+1=0$|}
\\[3mm]\red{\textbf{Louie}}

\vspace{3mm}\green{Vertical spacing is not working, too.}

\end{document}

在此处输入图片描述

答案1

这是一个完整的代码示例(这里通常需要)。我没有发现任何问题。

\documentclass[border=5mm]{standalone}

\usepackage{xcolor}

\newcommand{\green}[1]{\textcolor{green}{#1}}
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
\newcommand{\red}[1]{\textcolor{red}{#1}}

\begin{document}

\green{green} \blue{blue} \red{red}

\end{document}

在此处输入图片描述

相关内容