我使用以下代码绘制一条线来连接图形中的两个节点:
\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}