相当于 \providecoordinate?

相当于 \providecoordinate?

我正在寻找与 TikZ/PGFplots 中等效的东西\providecoordinate。如果我知道如何测试坐标是否已定义,这将很容易。

还有类似的问题如何实施有效实施的事情providetikzstyle如何实施provideenvironment

答案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}

相关内容