如何为 \def 内的文本着色

如何为 \def 内的文本着色

我正在尝试在 xdef 命令中为某些文本着色。我收到以下错误:\@undeclaredcolor 的使用不符合其定义。有人知道如何解决这个问题吗?谢谢!

编辑:修改示例为 MWE

\documentclass[12pt]{article}

\usepackage{pgffor}
\usepackage{tikz,amsmath}

\begin{document}

\definecolor{dkgreen}{rgb}{0,0.6,0}

\def\var{}
\newenvironment{environment}[1]
{
    \foreach \i/\j in {#1}
    {
        \xdef\var{\var \color{dkgreen}\i\color{black} \j}
    }
    \var
    \linebreak
}

\begin{environment}{a/b, c/d}
\end{environment}       
\end{document}

答案1

您需要防止\textcolor扩展,并避免添加虚假空间:

\def\japivar{}
\newenvironment{myenvironment}[3]
{%
    {\let\textcolor\relax
      \xdef\japivar{#1 #2(}%
    \foreach \i/\j/\k in {#3}%
    {%
        \xdef\japivar{\japivar \textcolor{dkblue}{\i} \j}%
    }}%
}
{}

这是假设您传入的令牌是#1,#2,#3安全的\xdef

相关内容