我尝试运行此代码:
\begin{tikzpicture}
\foreach \n/\p in {b/(1,1),c/(2,1)}
\node[draw,circle] (\n) at (\p) {};
\end{tikzpicture} % This is *not* working
然后我得到了错误。
我想知道是否有办法代替\p
,\x/\y
即:
\begin{tikzpicture}
\foreach \n/\x/\y in {b/1/1,c/2/1}
\node[draw,circle] (\n) at (\x,\y) {};
\end{tikzpicture} % This is working.
谢谢你!
答案1
您需要掩盖那些,
(使用花括号)不是应该是逗号分隔列表中的分隔符。因此,以下内容可行:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \n/\p in {b/{(1,1)},c/{(2,1)}}
\node[draw,circle] (\n) at \p {};
\end{tikzpicture}
\end{document}
或者:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \n/\p in {b/{1,1},c/{2,1}}
\node[draw,circle] (\n) at (\p) {};
\end{tikzpicture}
\end{document}
两个 MWE 的输出:
答案2
PGFFor 特别处理项目开头的坐标(即以 开头的内容(
),并且直到下一个坐标的所有内容)
都被视为项目的一个元素。
因此你实际上可以这样做
\foreach \p/\n in {(1,1)/b, (2,1)/c, (-10:2)/d}
这将允许你在坐标坐标系与极坐标系中的坐标系,甚至在这里使用节点/坐标的名称。
在下面的例子中,我将其添加\n
为节点的内容,以便圆圈更容易区分。
代码
\documentclass[tikz]{standalone}
\begin{document}
\tikz
\foreach \p/\n in {(1,1)/b, (2,1)/c, (-10:2)/d}
\node[draw, circle] (\n) at \p {\n};
\end{document}