我想使用宏来设置边缘的装饰选项,如下所示:
\def\curlbl{text along path,text={hi}}
\newcommand{\myedge}[2]{%
\path (#1) edge[decorate, decoration={\curlbl}] (#2);
}
然而,这并没有按我预期的方式工作,并且我收到了一个我无法理解的错误:
./minimal.tex:12: Package pgfkeys Error: I do not know the key '/pgf/decoration/\pgfkeyscurrentname ' and I am going to ignore it. Perhaps you misspelled it.
这是我的 tex 文件:
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{positioning,decorations.text}
\begin{document}
\def\curlbl{text along path,text={hi}}
\newcommand{\myedge}[2]{%
\path (#1) edge[decorate, decoration={\curlbl}] (#2);%
}
\begin{tikzpicture}
\node (A) {\emph{A}};
\node[below left=10ex and 6ex of A] (B) {\emph{B}};
\myedge{A}{B};
\end{tikzpicture}
\end{document}
是否可以使用宏来设置 TikZ 的选项decoration
?
答案1
这就是所谓的扩展问题:当 Ti钾Z 解析路径,你的宏尚未展开。当然,这个问题当然可以用各种方式解决。一个可以说是相当优雅的方式,只要你坚持使用这种方式使用宏的总体策略,就是告诉 Ti钾Z 展开\curlbl
。这可以通过使用 键来实现.expanded
。
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{positioning,decorations.text}
\begin{document}
\def\curlbl{text along path,text={hi}}
\newcommand{\myedge}[2]{%
\path (#1) edge[decorate, decoration/.expanded={\curlbl}] (#2);%
}
\begin{tikzpicture}
\node (A) {\emph{A}};
\node[below left=10ex and 6ex of A] (B) {\emph{B}};
\myedge{A}{B};
\end{tikzpicture}
\end{document}
我强烈怀疑,如果你向我们提供完整的图片,将会有更多 Ti钾实现这一点的 Zy 方式。由于不知道详细信息,目前我只能提请您注意pgfmanual 第 889 页中描述的键is if
和。is choice