我在使用 foreach 循环时遇到了问题。当我将参数作为列表传递并使用 '/' 作为分隔符时,它工作得很好。但是,当该列表中的任何元素都使用 \def 定义时,分隔符似乎不起作用并且字符串被连接起来。
\newcommand{\testme}[1]{
\foreach \aa/\bb in {#1} {
|\aa| |\bb| \newline
}
}
\def\testmedef{{xyz}/{XYZ}}
\testme{
{abc}/{CDE},
\testmedef%
}
结果:
|abc|CDE|
|xyz/XYZ|xyz/XYZ|
感谢您的热心帮助!
答案1
您可以致电:
\newcommand{\testme}[1]{
\foreach \aa/\bb in {#1} {
|\aa| |\bb| \newline
}
}
\def\testmedef{{xyz}/{XYZ}}
\ExplSyntaxOn
\cs_set_eq:NN \expandx \exp_args:Nx
\ExplSyntaxOff
\def\testmedef{{xyz}/{XYZ}}
\expandx\testme{abc/CDE,\testmedef}