我想向某些节点添加一些行,但这些行是在节点选项中声明的,我想使用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.north
、a.130
。文档在“17.2.1 节点命令的语法”一节中说:
/tikz/name=<node name>
(无默认值)
为节点分配一个名称以供以后引用。由于这是一个“高级”名称(驱动程序永远不会知道它),因此在命名节点时,您可以使用空格、数字、字母或任何您喜欢的名称。因此,您可以将节点命名为1
或start of chart
甚至y_1
。您的节点名称不应包含任何标点符号,如点、逗号或冒号,因为这些符号用于检测您在引用节点时想要的坐标类型。