在“命令后附加 + \pgfextra”命令中声明的坐标可以在之后使用吗?

在“命令后附加 + \pgfextra”命令中声明的坐标可以在之后使用吗?

我想向某些节点添加一些行,但这些行是在节点选项中声明的,我想使用append after command\pgfextra...\endpgfextra。但coordinate在这个新路径内声明的新节点在外面是不知道的。我该怎么做才能使用它们?

这只是一个小例子来说明问题。在下一个代码中,该命令\draw (a.antenna)--(b.antenna)不起作用。

\documentclass[tikz,border=2mm]{standalone}

\begin{document}

\tikzset{antenna/.style={append after command={ 
    \pgfextra \draw (\tikzlastnode.north)--++(90:1cm) circle(2pt) coordinate (\tikzlastnode.antenna); \endpgfextra}}}

\begin{tikzpicture}

\draw node[draw, minimum width=2cm, antenna] (a) at (0,0) {A};

\draw node[draw, minimum width=2cm, antenna] (b) at (2,0) {B};

%\draw (a.antenna) -- (b.antenna);
\end{tikzpicture}

\end{document}

答案1

将分隔符切换.为其他字符,例如@_有助于:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{calc}

\begin{document}

\tikzset{antenna/.style={append after command={
    \pgfextra \draw (\tikzlastnode.north)--++(90:1cm) circle(2pt) coordinate
(\tikzlastnode _antenna); \endpgfextra}}}

\begin{tikzpicture}

\draw node[draw, minimum width=2cm, antenna] (a) at (0,0) {A};

\draw node[draw, minimum width=2cm, antenna] (b) at (2,0) {B};

\draw (a_antenna) -- (b_antenna);
\end{tikzpicture}

\end{document}

结果

点用于表示形状,例如:a.northa.130文档在“17.2.1 节点命令的语法”一节中说:

/tikz/name=<node name>       (无默认值)
为节点分配一个名称以供以后引用。由于这是一个“高级”名称(驱动程序永远不会知道它),因此在命名节点时,您可以使用空格、数字、字母或任何您喜欢的名称。因此,您可以将节点命名为1start of chart甚至y_1。您的节点名称不应包含任何标点符号,如点、逗号或冒号,因为这些符号用于检测您在引用节点时想要的坐标类型。

相关内容