Warum kann ich die Variable nicht in der For-Schleife von Tikzmath verwenden?

Warum kann ich die Variable nicht in der For-Schleife von Tikzmath verwenden?

Ich versuche, mit dem folgenden Code eine Reihe von Kreisen zu zeichnen. Ich konnte jedoch die gewünschte Figur nicht erstellen und erhielt die Fehlermeldung undefined control sequence. argument 0,...,\NY. Wenn ich jedoch \NYzu 4. ändere, funktioniert es einwandfrei. Warum kann ich im \NY nicht verwenden {0,...,\NY}?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows}
\usetikzlibrary{math}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}
  \tikzmath{
    \VX = 30;
    \VY = 30;
    int \NX = 6;
    int \NY = 4;
    int \nix; int \niy;
    \OX = 0; \OY = 0;
    for \niy in {0,...,\NY}{%
      for \nix in {0,...,6}{%
        {\node [circle, draw = red, minimum size = \VX pt] at (\nix*\VX pt,\niy*\VY pt) {};};
      };
    };
  };
\end{tikzpicture}
\end{document}

Antwort1

Dinge wie

int \NY = 4;

sind nicht erlaubt. Verwenden Sie

int \NY; \NY = 4;

stattdessen und Ihr MWE wird funktionieren:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows}
\usetikzlibrary{math}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}
  \tikzmath{
    \VX = 30;
    \VY = 30;
    int \NX; \NX = 6;
    int \NY; \NY = 4;
    int \nix; int \niy;
    \OX = 0; \OY = 0;
    for \niy in {0,...,\NY}{%
      for \nix in {0,...,\NX}{%
        {\node [circle, draw = red, minimum size = \VX pt] at (\nix*\VX pt,\niy*\VY pt) {};};
      };
    };
  };
\end{tikzpicture}
\end{document} 

Bildbeschreibung hier eingeben

Antwort2

Alternativ können Sie sie \newcommand\NX{6} \newcommand\NY{4}in der Präambel verwenden, dann können Sie sie auch in der Schleife verwenden.

Bildbeschreibung hier eingeben

MWE:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows}
\usetikzlibrary{math}
\usetikzlibrary{positioning,calc}
\newcommand\NX{6}
\newcommand\NY{4}
\begin{document}
\begin{tikzpicture}
  \tikzmath{
    \VX = 30;
    \VY = 30;
    int \nix; int \niy;
    \OX = 0; \OY = 0;
    for \niy in {0,...,\NY}{%
      for \nix in {0,...,\NX}{%
        {\node [circle, draw = red, minimum size = \VX pt] at (\nix*\VX pt,\niy*\VY pt) {};};
      };
    };
  };
\end{tikzpicture}
\end{document}

verwandte Informationen