Tikz:我不能创建任何宏吗?

Tikz:我不能创建任何宏吗?

到目前为止我已经写了这个:

\node (A) at (0, 0) {A};
\node (B) at (2, 0) {B};

\draw (A) -- node[midway, above=-.5ex] {\tiny connects} (B);

为了产生这个:

A 连接 B

由于我打算经常这样做,因此我已通过以下方式重构注释:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\newcommand{\macro}[1]{node[midway, above=-.5ex] {\tiny #1}}

\begin{tikzpicture}

    \node (A) at (0, 0) {A};
    \node (B) at (2, 0) {B};

    \draw (A) -- \macro{connects} (B);

\end{tikzpicture}


\end{document}

其结果为:

! Package tikz Error: Cannot parse this coordinate.

See the tikz package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.14     \draw (A) -- \macro{connects}
                                       (B);

这里有什么问题?
tikz 中宏的使用有哪些限制?
有没有方便的解决方法?


注意:我知道带有 3 个参数的宏可以解决问题。但我的观点是了解为什么这不起作用,以及进一步的 tikz 宏限制。
此外,带有 3 个参数的宏不会扩展到\draw (A) -- \macro{connects} -- (B) -- \macro{disconnect} (C);

答案1

如果您将其添加--到您的宏中,它就可以起作用。

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\newcommand{\macro}[1]{-- node[midway, above=-.5ex] {\tiny #1}}

\begin{tikzpicture}

    \node (A) at (0, 0) {A};
    \node (B) at (2, 0) {B};

    \draw (A) \macro{connects} (B);

\end{tikzpicture}
\end{document}

不过,我强烈建议你去 TiZy 方式。

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{quotes} %<- added
\begin{document}

\begin{tikzpicture}
    \node (A) at (0, 0) {A};
    \node (B) at (2, 0) {B};
    \draw (A) edge ["\tiny connects"] (B);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容