为什么 TikZ \foreach 无法正确处理尺寸?

为什么 TikZ \foreach 无法正确处理尺寸?

为什么 TikZ\foreach无法正确处理尺寸?以下是两个示例:

\documentclass[tikz,margin=5pt]{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

% normal
\foreach \x in {0pt,50pt,100pt,150pt,200pt}
    {\draw (\x,50pt) circle (25pt) node {\x};}

% strange
\foreach \x in {0pt,50pt,...,200pt}
    {\draw (\x,0pt) circle (25pt) node {\x};}

\end{tikzpicture}
\end{document}

在第一种情况下,结果令人满意。然而,在第二种情况下,序列中同时存在有量纲值和无量纲值会产生问题。因此,不可能以简单的方式对所有值应用相同类型的操作。

例如,类似\x pt(返回维度的愚蠢方法)的东西将返回200pt到最后的位置,但是0ptpt在第一个。

使用其他单位只会使问题复杂化。

答案1

在当前 Tikz 手册的第 83 节(“重复的事情:Foreach 语句”)中,解释了 tikz 跟踪列表中已处理的最后两个项目。如果...发生并且这些项目是数字,并且后面的项目也是...数字,那么 tikz 能够填补空白。因为50pt没有数字,因此省略号无法充分替换。

更好的方法可能是不使用尺寸。这样你就可以使用符号...,然后重新缩放图像。

\begin{scope}[x=50pt,y=50pt]
\foreach \x in {0,1,...,4}
    {\draw (\x,0) circle (0.5) node {\x};}
\end{scope}

相关内容