返回节点的 pgf 宏

返回节点的 pgf 宏

我如何编写返回坐标(或节点)的宏。节点必须可在 tikzpicture 环境中使用,最好在路径声明内使用。

我需要类似以下内容(它无法编译)。我不确定这是否pgfcoordinate是正确的做法...

\documentclass{article}
\usepackage{tikz}
\usepackage{pgf}

\begin{document}

\newcommand{\mycoord}[2]{
    \pgfmathsetmacro{\x}{\pgfmathparse{#1} \pgfmathresult} % actually do some calculations
    \pgfmathsetmacro{\y}{\pgfmathparse{#2} \pgfmathresult} % actually do some calculations
    \pgfcoordinate{\x}{\y}} % I want this node to be returned.

\begin{tikzpicture}

\node at \mycoord{1}{2} {some text}; % I want to use the calculated node

\end{tikzpicture}
\end{document}

错误信息是

包 tikz 错误:无法解析此坐标。

答案1

这是一个正常错误。Tikz 等待坐标,例如 (3,0) 或 (a),其中 a 是节点的名称。我认为您使用不正确,\pgfcoordinate我从未使用过此宏,所以也许我错了,但此宏快速定义了与坐标关联的节点名称。您可以在 tikzpicture 之外定义您的宏。

\documentclass{article}
\usepackage{tikz}

\begin{document}

\newcommand{\mycoord}[2]{
\pgfcoordinate{#1}{#2}}
\mycoord{a}{\pgfpoint{3cm}{0cm}}  

\begin{tikzpicture}
\node[draw] at (a) {good}; 
\node[draw] at (0,0) {bad};
\end{tikzpicture}
\end{document} 

下一个代码只有在你想修改时才\x有趣\y

\documentclass{article}
\usepackage{tikz}

\begin{document}

\newcommand{\mycoord}[2]{
    \pgfmathsetmacro\x{5} % or what you want
    \pgfmathsetmacro\y{-2}}
\begin{tikzpicture}
\node[draw](d){deb};
\path \pgfextra \mycoord{1}{2} \endpgfextra node[draw] (f) at (\x,\y) {end}; % 
\draw (d)--(f) ;
\end{tikzpicture}
\end{document}

答案2

我认为最简单的方法是将宏扩展为“(x,y)”之类的文本,然后使用 calc 或其他标准转换来操作它。例如,您可以执行如下简单操作:

\newcommand{\mycoord}[2]{([xshift=2cm] #1,#2)}

然后像您期望的那样将宏调用嵌入到路径中。

\draw (0,0) -- \mycoord{0}{0};

下面是一个使用 calc 的简单示例。请注意,这个示例执行的操作相当随机(我只是从手册中取出一个示例并对其进行了修改),它只是为了展示语法如何工作,而不是真正有用:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\newcommand{\mycoordB}[3]{(${2*(#3-3)}*(#1,#2)$)}

\begin{tikzpicture}
\fill [black] \mycoordB{0cm}{0cm}{4} circle (2pt);
\fill [blue] \mycoordB{1cm}{2cm}{5} circle (2pt);
\fill [green] \mycoordB{2cm}{2cm}{2} circle (2pt);
\end{tikzpicture}

\end{document}

另请参阅此问题:TikZ 编程

答案3

也许这里的讨论和交叉引用链接可能会有所帮助:在 pgfplots 图中,使用宏作为坐标

相关内容