可以将点作为一个变量吗?

可以将点作为一个变量吗?

我尝试运行此代码:

\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}

输出

在此处输入图片描述

相关内容