风格存储在命令中

风格存储在命令中

我已经创建了一个\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}

在此处输入图片描述

相关内容