我定义了一堆具有类似名称的变量,例如:
\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 的括号才能展开它并检查其内容。