我正在寻找与 TikZ/PGFplots 中等效的东西\providecoordinate
。如果我知道如何测试坐标是否已定义,这将很容易。
答案1
TikZ 中的Acoordinate
是节点的一种特殊形式。节点的坐标 x/y 等值存储在名为\pgf@sh@np@<name>
which 的宏中,您可以测试其存在性。以下代码应该可以做到这一点,并支持大多数语法变体。如果不深入研究路径解析代码,就不可能\coordinate
支持该\path coordinate
语法,即允许 for 。\path providecoordinate
\documentclass{article}
\usepackage{tikz}
\makeatletter
\newcommand{\providecoordinate}[1][]{%
\@providecoordinate[#1]%
}
\def\@providecoordinate[#1]#2(#3)#4;{%
\ifcsname pgf@sh@np@#3\endcsname\else
\coordinate[#1]#2(#3)#4;
\fi
}
\makeatother
\begin{document}
\begin{tikzpicture}
\providecoordinate [] (A) at (0,0);
\coordinate (B) at (0,0);
\providecoordinate (B) at (1,0);
% Small test: Both at the same location? YES!
\draw [red] (A) circle (1pt);
\draw [green] (B) circle (2pt);
\end{tikzpicture}
\end{document}