不要在 foreach 中评估变量

不要在 foreach 中评估变量

我定义了一堆具有类似名称的变量,例如:

\def\wstepsA{1/2/0,2/3.5/1};

所有变量都有一个名称wsteps+一个字母,我想使用 tikz 来迭代它们foreach

\foreach \v in {A, ..., F} {
    \expandafter\let\expandafter\thisSteps\csname wsteps\v\endcsname
    \foreach \s/\e/\d in {\thisSteps} {
        % Do something...
    }
}

但这给了我一个错误:

包 PGF 数学错误:您要求我将“0.5”除以“0”,但我无法将任何数字除以“0”(在“1/2/0”中)。

但是如果我不使用变量thisSteps,那么它可以正常工作:

\foreach \s/\e/\d in {1/2/0,2/3.5/1} {

}

有没有办法让第一个代码片段正常工作?

答案1

当迭代器被赋予 foreach 宏时,它会将内容视为分组实体。也就是说,将其包裹在花括号中。在这里,由于您添加了额外的{}TikZ,因此尝试查看逗号的位置,但找不到它,并确定这\thisSteps是唯一元素,并且循环只旋转一次\s,将1/2/0赋值给 ,结果除以零。

因此,正如 Kpym (又名 TikZer Woods) 提到的,您必须剥去 TikZ 的括号才能展开它并检查其内容。

相关内容