foreach 循环参数问题

foreach 循环参数问题

我在使用 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}

相关内容