Я пытаюсь нарисовать партию кругов, используя следующий код. Однако мне не удалось создать нужную фигуру. и я получил сообщение об ошибке undefined control sequence. argument 0,...,\NY
. Но если я изменю \NY
на 4
. то все работает нормально. Почему я не могу использовать \NY в {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}
решение1
Вещи как
int \NY = 4;
не допускаются. Используйте
int \NY; \NY = 4;
вместо этого и ваш MWE будет работать:
\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}
решение2
В качестве альтернативы вы можете использовать \newcommand\NX{6}
\newcommand\NY{4}
их в преамбуле, а затем также в цикле.
МВЭ:
\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}