我已经创建了一个\newcommand
带有一些参数的命令,允许我调用其他命令。
命令语法:
\newcommand{\nodeperso}[1]{\node[\noexpand\type#1](){\noexpand\nom#1};}
我已经声明了一种风格:
Boite/.style={rounded rectangle,font=\ttfamily}
之后我声明另外两个新命令,如下所示:
\newcommand{\typeAAB}{Boite}
\newcommand{\nomAAB}{coucou}
我想用作为参数( )的\nodeperso
命令调用。已正确扩展,但没有。AAB
\nodeperso{AAB}
\nomAB
\typeAB
也许使用pgfkeys
可以提供更好的结果,但我不熟悉语法。
梅威瑟:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newcommand{\nodeperso}[1]{\node[\noexpand\type#1](){\noexpand\nom#1};}
\newcommand{\typeAAB}{Boite}
\newcommand{\nomAAB}{coucou}
\begin{document}
\begin{tikzpicture}[Boite/.style={rounded rectangle,font=\ttfamily}]
\node[Boite]{coucou}; %% OK
\node[\typeAAB]{\nomAAB}; %% OK
\nodeperso{AAB} %% NOK
\end{tikzpicture}
\end{document}
答案1
我认为它应该是\csname type#1\endcsname
而不是\noexpand\type#1
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newcommand{\nodeperso}[1]{\node[\csname type#1\endcsname](){\csname nom#1\endcsname};}
\newcommand{\typeAAB}{Boite}
\newcommand{\nomAAB}{coucou}
\begin{document}
\begin{tikzpicture}[Boite/.style={rounded rectangle,font=\ttfamily}]
\node[Boite]{coucou}; %% OK
\node[\typeAAB]{\nomAAB}; %% OK
\nodeperso{AAB} %% NOK
\end{tikzpicture}
\end{document}