如何定义一个可以在其参数中处理其他用户定义的命令的 colorbox 命令?

如何定义一个可以在其参数中处理其他用户定义的命令的 colorbox 命令?

我想突出显示包含用户定义命令的文本,并添加换行符。我找到了换行符的解决方案(Colorbox 不换行),但该\ctext{}命令不能将其他命令视为其参数。

我的MWE如下:

\documentclass{article}
    
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{soul}
\usepackage{etoolbox}
\usepackage{ifmtarg}
    
\newcommand{\red}[1]{{\color{red} #1}}
    
\newcommand{\ctext}[3][RGB]{%
   \begingroup
   \definecolor{hlcolor}{#1}{#2}\sethlcolor{hlcolor}%
   \hl{#3}%
   \endgroup
}

%Frame of command '\spec'
\newcommand{\defineSpecies}[2]{\csdef{spec@#1}{#2}}
\newrobustcmd{\spec}[1]{%
  \ifcsname spec@#1\endcsname%
    \csuse{spec@#1}%
  \else
    \GenericError{}{Undefined species `#1'}{}{}
  \fi
}

\defineSpecies{h216o}{H$_2^{~16}$O}

\begin{document}

\ctext[RGB]{0,209,0}{\red{\spec{h216o}}} 
    
\end{document}

相关内容