所以我有以下使用该tkz-euclide
包的代码
\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-euclide}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=6,xmin=-6,ymin=-6]
\tkzGrid
\tkzAxeXY
\tkzDefPoint(1,1){E_{1, 1}}
\tkzDefPoint(2,3){E_{2, 3}}
\tkzDrawPoints(E_{1, 1}, E_{2, 3})
\tkzLabelPoints(E_{1, 1}, E_{2, 3})
\tkzText[above](0,6.75){A Sample Grid}
\end{tikzpicture}
\end{figure}
\end{document}
输出结果如下
现在我想对此进行一些更改。首先,我想将轴标签从“x”和“y”更改为“p”和“q”。
其次,我想将此网格上的每个点 (p, q) 标记为“E_{p, q}”。我不确定如何有效地做到这一点。在除 LaTeX 之外的任何其他编程语言中,我都可以使用 for 循环来自动执行此过程。然而,在这里,我似乎必须手动标记此网格上的所有 175 个点,这是我不希望做的事情。
我怎样才能对这个网格做出这两项更改?
更新:根据下面有用的评论,我制作了以下试验性代码来解决我想要做的第二个更改,但是它似乎存在错误,因为它无法编译
\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-euclide}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=6,xmin=-6,ymin=-6]
\tkzGrid
\tkzAxeXY
\foreach\x in {-6,...,6}{
\foreach\y in {-6,...,6}{
\tkzDefPoint(\x,\y){E_{\x, \y}}
\tkzDrawPoint(E_{\x, \y})
\tkzLabelPoint(E_{\x,\y})
}
}
\tkzText[above](0,6.75){A Sample Grid}
\end{tikzpicture}
\end{figure}
\end{document}
我走的路正确吗?为什么上述代码不能编译?
答案1
TikZ 的命令grid
和循环foreach
非常完美。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
%\pagecolor{yellow!25}
\begin{tikzpicture}[scale=1.28]
\draw[blue!50] (-6.5,-6.5) grid (6.5,6.5);
\draw[-stealth,thick] (-6.5,0)--(6.5,0) node[below right]{$p$};
\draw[-stealth,thick] (0,-6.5)--(0,6.5) node[above left]{$q$};
\foreach \i in {-6,...,-1,1,2,...,6}
\draw[very thick]
(\i,.1)--(\i,-.1) node[below,fill=white]{\i}
(-.1,\i)--(.1,\i) node[right,fill=white]{\i};
\foreach \p in {-6,...,-1,1,2,...,6}
\foreach \q in {-6,...,-1,1,2,...,6}
\fill[red] (\p,\q) circle(2pt) node[below right,black]{$E_{\p,\q}$};
\end{tikzpicture}
\end{document}
答案2
\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=6,xmin=-6,ymin=-6]
\tkzGrid
\tkzDrawX[label = $p$]
\tkzDrawY[label = $q$]
\tkzLabelXY
\tkzDefPoint(1,1){E_{1, 1}}
\tkzDefPoint(2,3){E_{2, 3}}
\tkzDrawPoints(E_{1, 1}, E_{2, 3})
\tkzLabelPoints(E_{1, 1}, E_{2, 3})
\tkzText[above](0,6.75){A Sample Grid}
\foreach \p in {-6,...,-1,1,2,...,6}
\foreach \q in {-6,...,-1,1,2,...,6}
{ \tkzDefPoint(\p,\q){E_{\p, \q}}
\tkzDrawPoint(E_{\p, \q})
\tkzLabelPoints(E_{\p, \q}, E_{\p, \q})}
\end{tikzpicture}
\end{figure}
\end{document}