使用 \foreach 与 node[pos] 时出现非法测量单位(pt 插入)错误

使用 \foreach 与 node[pos] 时出现非法测量单位(pt 插入)错误

我正在尝试绘制一条路径并在其上定位节点,然后使用此代码填充它们,并且它可以工作

\documentclass[varwidth=20cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [dotted](0,0)--(2.5,0.5)
  node(2)[pos=0.1]{} node(3)[pos=0.2]{} node(4)[pos=0.3]{} node(5)[pos=0.4]{} node(6)[pos=0.5]{} node(7)[pos=0.6]{} node(8)[pos=0.7]{} node(9)[pos=0.8]{}  node(1)[pos=0.9]{} node(10)[pos=1]{};
%  \draw [red,dotted] plot [smooth] coordinates {(0,0) (1,0.1) (2,0.3) (2.5,0.5)};

  \fill (1) circle[radius=1pt];
  \fill (2) circle[radius=1pt];
  \fill (3) circle[radius=1pt];
  \fill (4) circle[radius=1pt];
  \fill (5) circle[radius=1pt];
  \fill (6) circle[radius=1pt];
  \fill (7) circle[radius=1pt];
  \fill (8) circle[radius=1pt];
  \fill (9) circle[radius=1pt];
  \fill (10)circle[radius=1pt];
  \end{tikzpicture}
\end{document}

现在,我想通过使用 来提高效率,而不是重复 10 次相同的代码行\foreach。我盯着这段代码看,它给出了这个错误计量单位非法(插入 pt)

\documentclass[varwidth=20cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [dotted](0,0)--(2.5,0.5)
  \foreach \x [evaluate=\x] in {1,2,...,10}
    node(\x) [pos={\x/10}]{}
    \fill (\x) circle[radius=1pt];
\end{tikzpicture}
\end{document}

答案1

问题主要有两个:

  1. \foreach如果有多个操作需要执行,则需要使用括号;
  2. 不能在同一路径中使用\draw和。\fill

要点 n.2 是最重要的:在 n 路径\foreach中使用语句时,人们所做的\draw就是添加内容。当然可以添加节点,但不能在同一语句中添加节点并填充作为单独路径绘制的圆。

解释表明有一个更简单的方法可以实现这一点:节点可以自行填充,那么为什么不利用这种可能性呢?

一个例子:

\documentclass[border=10pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw [dotted](0,0)--(2.5,0.5)
  \foreach \x in {1,2,...,10}{
    node[fill,circle,inner sep=0.75pt](\x) [pos={\x/10}]{}
  };
\end{tikzpicture}
\end{document}

相关内容