检查节点是否已被定义

检查节点是否已被定义

我使用以下代码绘制一条线来连接图形中的两个节点:

\draw ( p-\prow-\col) -- (p-\row-\col);

然而,在图形的边缘,并非每个节点都有一个可以作为线的起源的前身。

我想要做的只是有条件地画线,取决于节点是否( p-\prow-\col)已经存在。

我见过这个问题,但其实现和用法对我来说并不清楚(而且它似乎也在处理相反的情况,即在节点未定义时执行)。

我只是在寻找该命令的正确语法if node is defined: do this

答案1

Martin Scharrer 对您所链接的问题的回答中的定义\@nodedefined似乎正是您所要求的:该命令接受三个参数:第一个是需要检查的节点名称,第二个是如果节点存在则执行的代码,第三个是如果节点不存在则执行的代码(在这种情况下,您只需将其留空)。

\documentclass{article}

\usepackage{tikz}
\makeatletter
\long\def\ifnodedefined#1#2#3{%
    \@ifundefined{pgf@sh@ns@#1}{#3}{#2}%
}
\makeatother

\begin{document}

\begin{tikzpicture}
\node (p-1-1) {P-1-1};
\node (p-2-2) at (2,2) {P-2-2};
\ifnodedefined{p-1-1}{
    \draw (p-1-1) -- (p-2-2);
}{}

\ifnodedefined{p-1-2}{
    \draw (p-1-2) -- (p-2-2);
}{}
\end{tikzpicture}
\end{document}

相关内容