我正在尝试编写一个命令来创建一个网格,每个整数坐标都由一个小黑点点缀。这 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}