我正在尝试在 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
。