宏扩展到 TikZ 节点

宏扩展到 TikZ 节点

我想使用宏创建矩形节点,给定两个坐标bottom lefttop right。困难的部分是我想在可以使用节点名称的地方使用宏;例如,在current page下面的代码中。

此代码不起作用,但它显示了我想要使用的语法。 可以做类似的事情吗?

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\newcommand\makenode[2]{
  \node[fit={#1}{#2}] {}
  }

\begin{document}
\begin{tikzpicture}[overlay, remember picture]
\coordinate (bottom left) at (10,10);
\coordinate (top right) at (20,20);

\node[anchor=south] at (\makenode{bottom left}{top right}.center) {My node text};
\node[anchor=south] at (current page.center) {My node text};


\end{tikzpicture}

\end{document}

答案1

看看以下 MWE 是否是您所寻找的:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\newcommand\makenode[2]{\node[draw=red,         % to show node border, should be removed
                              inner sep=0pt,
                              fit=(#1) (#2)]}
\begin{document}
\begin{tikzpicture}%[overlay, remember picture]
\coordinate (bl)    at (5,5);   % bottom left
\coordinate (tr)    at (10,10); % top right

\makenode{bl}{tr} {my node text};
\end{tikzpicture}
\end{document}

在此处输入图片描述

请注意,当节点中的文本长度大于定义坐标之间的水平距离,或者您希望文本分为两行或多行时,这种定义节点的方法会出现问题。

附录: 解决方案如@Ignasi 在下方评论中建议的那样。考虑到这一点,具有更多相似节点的图像代码可以更容易绘制并用箭头连接:

\documentclass[border=3.141592]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\newcommand\makenode[2]{\node[draw=red,         % to show node border, should be removed
                              inner sep=0pt,
                              fit=(#1) (#2)]}
\begin{document}
    \begin{tikzpicture}[
MN/.style args = {#1/#2}{         % MakeNode
                         draw=red, inner sep=0pt, fit=(#1) (#2)}
                        ]
\coordinate (bl)    at (5,5);   % bottom left
\coordinate (tr)    at (10,10); % top right

\node (mn) [MN=bl/tr] {my node text};
\end{tikzpicture}
\end{document}

结果和以前一样。

相关内容