我尝试使用的代码如下所示。如何让它工作pdflatex
?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds,fit}
\begin{document}
\begin{tikzpicture}[framed]
\foreach \y in {0, 1, 2}{
\foreach \x in {0, 1, 2}{
\path
let
\n1 = {\x+random(2)},
\n2 = {\y+random(2)}
in
node at (\n1,\n2) [shape=circle,draw] {$p_{\x,\y}$};
}
}
\end{tikzpicture}
\end{document}
答案1
let
我认为你对块内的\x
和\y
可以具有特殊含义这一事实感到困惑。例如,如果你说\p1=(3,2)
,那么\x1
是 3 并且\y1
是 2。我知道你不会这样做,但我认为\x
和的定义\y
在之后会发生变化let
。
如果您将它们更改为\X
,\Y
您的代码就可以正常工作。但请注意,我认为您实际上在这里不需要它,您可以直接在坐标规范中进行计算,因此您可以说\node at ({\x+random(2)},{\y+random(2)}) ...
。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \y in {0, 1, 2}{
\foreach \x in {0, 1, 2}{
\node at ({\x+random(2)},{\y+random(2)}) [shape=circle,draw] {$p_{\x,\y}$};
}
}
\end{tikzpicture}
\begin{tikzpicture}
\foreach \Y in {0, 1, 2}{
\foreach \X in {0, 1, 2}{
\path
let
\n1 = {\X+random(2)},
\n2 = {\Y+random(2)}
in
node at (\n1,\n2) [shape=circle,draw] {$p_{\X,\Y}$};
}
}
\end{tikzpicture}
\end{document}