到目前为止我已经写了这个:
\node (A) at (0, 0) {A};
\node (B) at (2, 0) {B};
\draw (A) -- node[midway, above=-.5ex] {\tiny connects} (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}
不过,我强烈建议你去 Ti钾Zy 方式。
\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}