为什么 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}