需要帮助获取 tikz 命令,该命令以点网格进行编译和运行

需要帮助获取 tikz 命令,该命令以点网格进行编译和运行

我正在尝试编写一个命令来创建一个网格,每个整数坐标都由一个小黑点点缀。这 6 个参数代表第一个 x、y 坐标、第二个 x、y 坐标、网格的比例(因此每个坐标都会乘以比例)和点样式。我没有在新命令中测试它(因此用实数替换参数),它编译并运行。但是,当我将它放在新命令中,并用数字替换参数时,它会停止编译。

文件如下:

\documentclass[11pt]{article}
\usepackage{tikz}
\title{Practice tex document}
\author{Yum}

\tikzstyle{dot}=[circle, draw=black, fill=black, inner sep = 0pt, minimum size = 1mm]

\newcommand{\dotgrid}[6][1cm][dot]{
    \newcounter{i}
    \newcounter{j}
    \setcounter{i}{#1}
    \loop
        \setcounter{j}{#2}
        {\loop
            \thei
            \thej
            \node[#6] at (\the\dimexpr i*#5, \the\dimexpr j*#5) {};
            \addtocounter{j}{1}
            \ifnum\value{j}<\the\numexpr #4 + 1
            \repeat
        }
        \thei
        \addtocounter{i}{1}
        \ifnum\value{i}<\the\numexpr #3 + 1
        \repeat
    }


\begin{document}
test
\begin{tikzpicture}
    \def \scale{0.5cm}
   \dotgrid{0}{0}{5}{5}{\scale}{dot}
\end{tikzpicture}

\end{document}

但它无法编译。有人能看一下吗?非常感谢。

答案1

嗯...我不明白其中的复杂性(或者我可能忽略了范围)。你为什么不使用语句\foreach?这有效:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\tikzset{dot/.style={circle, fill, inner sep=2pt}}
\newcommand\dotgrid[6]{%
    \foreach \x in {#1,...,#3} 
        \foreach \y in {#2,...,#4}
            \node [#6, label={\tiny \x,\y}] at (\x*#5, \y*#5) {}; 
}
\begin{document}
\begin{tikzpicture}[]
    \dotgrid{0}{0}{5}{5}{1cm}{dot}
\end{tikzpicture}
\end{document}

上述代码的输出

相关内容