访问 Tikz 中数组中的条目?

访问 Tikz 中数组中的条目?

这看起来应该很简单,但我无法让它工作。我只想画一个圆,中心的 x 坐标由给定数组中的条目指定。例如,假设我想画一个以 为中心的圆(1,1)(1,2)

\def\testarray{1,2}
\def\circleHeights{1,2}

\foreach \y in circleHeights {

\filldraw [black] (\testarray[1],\y) circle (1pt);

不起作用。但用 替换\testarray[1]确实有效1。如何正确访问数组?我做了一些搜索,并尝试使用\pgfmathparse\pgfmathsetmacro:例如

\foreach \y in circleHeights {
\pgfmathsetmacro{\x}{\testarray[1]}
\filldraw [black] (\x,\y) circle (1pt);

我也尝试过像这样定义的数组,\def\testarray{{1,2}}因为我也看到过一些类似的例子。我意识到我可以轻松完成上述任务而无需访问数组,但在我实际的情况下,我需要做这样的事情。所以我想找到一种方法来让这种方法奏效

答案1

如果您定义一个宏来存储数组(用于pgfmath),则必须使用括号:

\def\testarray{{1,2}}

请注意,索引从零开始。

\documentclass[tikz,margin=10pt]{standalone}
\begin{document}
\def\testarray{{1,2}}
\def\circleHeights{{0.5,2}}
\begin{tikzpicture}
\draw[help lines,step=.5](0,0)grid(3,3);
\foreach \i in {0,1}
  \filldraw[black] (\testarray[\i],\circleHeights[\i]) circle[radius=1pt];
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

为了扩展@esdd 的答案,您可以改用二维数组:

\documentclass[tikz,margin=10pt]{standalone}
\begin{document}
\def\testarray{{{1,0.5},{2,2}}}
\begin{tikzpicture}
\draw[help lines,step=.5](0,0)grid(3,3);
\foreach \i in {0,1}
  \filldraw[black] (\testarray[\i][0],\testarray[\i][1]) circle[radius=1pt];
\end{tikzpicture}
\end{document}

如您所见,只有一个数组包含成对的坐标。

相关内容