我在使用 TiKZ 绘制节点时使用了变量\x
。绘制部分运行良好,没有任何问题。我还向节点添加了键,以便以后可以链接它们。我面临一个奇怪的问题。如果是\x
整数,则节点键有效,但如果是小数,则无效。
例如,在下面的代码中,我使用键作为\x g2y
。
\fill[fill=yellow]
\foreach \x in {2.5,7,11.5}
{ (\x,10) circle(.45) node(\x g2y) {}};
现在,当我尝试使用此处的键时,只有值为\x
7 的键有效。对于其他值(\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}