我想在 或任何其他宏中存储一个参数列表\newcommand
。\def
然后,这样的列表将被传递给另一个命令。然而,事实证明,该列表被另一个命令视为单个参数。示例:
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.gates.ee}
\begin{document}
\newcommand{\nodestyle}{scale=2, color=blue}
% \def\nodestyle{scale=2, color=blue}
\newcommand{\customnode}{\node[circle ee, draw, \nodestyle]}
\begin{tikzpicture}
\customnode at (1,1) (Node) {};
\end{tikzpicture}
\end{document}
这会产生错误我不知道密钥/tikz/scale=2,color=blue。
答案1
您可以预先扩展参数,expl3
专为此类扩展控制而设计,但这里仅使用 (e)tex 原语
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.gates.ee}
\begin{document}
\newcommand{\nodestyle}{scale=2, color=blue}
% \def\nodestyle{scale=2, color=blue}
\newcommand{\customnode}{\expanded{\noexpand\node[circle ee, draw, \nodestyle]}}
\begin{tikzpicture}
\customnode at (1,1) (Node) {};
\end{tikzpicture}
\end{document}
答案2
使用本机方法。
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.gates.ee}
\tikzset{
nodestyle/.style={scale=2,color=blue},
}
\newcommand{\customnode}{\node[circle ee,draw,nodestyle]}
\begin{document}
\begin{tikzpicture}
\customnode at (1,1) (Node) {};
\end{tikzpicture}
\end{document}