¿Por qué no puedo usar la variable en el bucle for de tikzmath?

¿Por qué no puedo usar la variable en el bucle for de tikzmath?

Estoy intentando dibujar un lote de círculos usando el siguiente código. Sin embargo, no pude crear la figura que quiero. y me sale un error que dice undefined control sequence. argument 0,...,\NY. Pero si cambio \NYa 4. funciona bien. ¿Por qué no puedo usar \NY en {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}

Respuesta1

Cosas como

int \NY = 4;

no están permitidos. Usar

int \NY; \NY = 4;

en su lugar y su MWE funcionará:

\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} 

ingrese la descripción de la imagen aquí

Respuesta2

Alternativamente, podría usarlos \newcommand\NX{6} \newcommand\NY{4}en el preámbulo y luego podría usarlos también en el bucle.

ingrese la descripción de la imagen aquí

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}

información relacionada