如何在 TikZ 中的节点键中使用变量

如何在 TikZ 中的节点键中使用变量

我在使用 TiKZ 绘制节点时使用了变量\x。绘制部分运行良好,没有任何问题。我还向节点添加了键,以便以后可以链接它们。我面临一个奇怪的问题。如果是\x整数,则节点键有效,但如果是小数,则无效。

例如,在下面的代码中,我使用键作为\x g2y

\fill[fill=yellow]
\foreach \x in {2.5,7,11.5} 
{ (\x,10) circle(.45) node(\x g2y) {}};

现在,当我尝试使用此处的键时,只有值为\x7 的键有效。对于其他值(\x如 2.5 和 11.5),它会给出错误:

ERROR: Package pgf Error: No shape named 2 is known.

不知何故,数字的整个十进制值没有传递给密钥,只有小数点前的整数。如何解决这个问题?

在此处输入图片描述

MWE 如下:

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[scale=.5]

\fill (9,13.5)[fill=yellow] circle(.5) node (g1){};

 \fill[fill=yellow]
 \foreach \x in {2.5,7,11.5} 
 { (\x,10) circle(.45) node(\x g2y) {}};
% works here with only 7
\draw [red!50,thick]\foreach \x in {7}
 {(g1)--(\x g2y)};

% doesn't works here with 2.5 and 11.5
% \draw [red!50,thick]\foreach \x in {2.5,7,11.5} 
% {(g1)--(\x g2y)};

\end{tikzpicture}
\end{document}

答案1

问题是 TikZ 使用.来访问节点的锚点,例如a.west。因此,当您有一个名为 的节点2.5g2y,并在 中使用它时\draw,TikZ 认为这是一个名为 的节点2,而锚点将是5g2y

我不知道是否可以在节点名称中使用句点,但一种解决方法是count在循环中添加一个句点,然后使用该值。

无关评论:一般来说minimal应该避免此类,请参阅为什么要避免使用最小类?

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[scale=.5]

\fill (9,13.5)[fill=yellow] circle(.5) node (g1){};

 \fill[fill=yellow]
 \foreach [count=\i] \x in {2.5,7,11.5} 
 { (\x,10) circle(.45) node(\i g2y) {}};

\draw [red!50,thick]\foreach \x in {1,2,3}
 {(g1)--(\x g2y)};

\end{tikzpicture}
\end{document}

相关内容