TikZ 循环遍历数组数组

TikZ 循环遍历数组数组

我想循环一个数组并分别访问每个 x 和 y 坐标,因为我想在节点上使用它们之前修改坐标。

目前,只有在 foreach 循环中直接插入坐标时它才有效,但是我的使用数组的第二个示例不起作用。

\documentclass{minimal}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}

         \def\myarr {
          (1.0, 1.1),
           (0.5, 1.5),
           (1.5, 2)
         }

        \foreach \x/\y in {1/3, 2/7, 3/8} {
            \node () at (\x,\y) {\x and \y};
        }

        % Not working
        %\foreach \x/\y in {\myarr} {
        %    \node () at (\x,\y) {mynode};
        %}

    \end{tikzpicture}
\end{document}

我如何使用数组来实现相同的结果?

答案1

您可以循环遍历坐标,即\foreach \X in \myarr { \node () at \X {mynode}; }在您的示例中有效。如果您想读出xy坐标,您可以这样做

\documentclass{minimal}
\usepackage{tikz}
\def\GetX(#1,#2)#3{\def#3{#1}}
\def\GetY(#1,#2)#3{\def#3{#2}}
\begin{document}
    \begin{tikzpicture}

         \def\myarr {
          (1.0, 1.1),
           (0.5, 1.5),
           (1.5, 2)
         }

        \foreach \X in \myarr {
            \edef\temp{\noexpand\GetX\X\noexpand\myx
            \noexpand\GetY\X\noexpand\myy}
            \temp
            \node () at \X {\myx\ and \myy};
        }

    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这显示了如何\myarr解析。实际上,第一个括号被忽略,然后括号内的逗号也被忽略。

\documentclass{minimal}
\usepackage{tikz}

\begin{document}
   \def\myarr {{
          (1.0, 1.1),
           (0.5, 1.5),
           (1.5, 2)
         }}
  \verb|\myarr[0]| = \myarr[0] 

  \pgfmathparse{\myarr[0]}\pgfmathresult

  \pgfmathparse{\myarr[1]}\pgfmathresult

  \pgfmathparse{\myarr[2]}\pgfmathresult

  \pgfmathparse{\myarr[3]}\pgfmathresult
\end{document}

生产

演示

相关内容