我想创建一个命令来在两点之间画一条线。该命令需要将线型作为参数。以下 MWE 可按预期工作:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\newcommand{\testtikz}[1]{
\begin{tikzpicture}
\draw[#1] (0,0) -- (1,1);
\end{tikzpicture}
}
\testtikz{red,line width=1mm}
\end{document}
对于我的用例,我需要将参数def
传递给命令,如下所示:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\newcommand{\testtikz}[1]{
\begin{tikzpicture}
\draw[#1] (0,0) -- (1,1);
\end{tikzpicture}
}
\def\tikzparams{red,line width=1mm}
\testtikz{\tikzparams}
\end{document}
这会导致错误:
! Package pgfkeys Error: I do not know the key '/tikz/red,line width=1mm' and I
am going to ignore it. Perhaps you misspelled it.
只要有逗号或等号,这种情况就会出现\tikzparams
。我该如何解决这个问题?
答案1
在将参数传递给之前先将其展开\draw
:
\documentclass{article}
\usepackage{tikz}
\newcommand{\testtikz}[1]{%
\begin{tikzpicture}
\expandafter\draw\expandafter[#1] (0,0) -- (1,1);
\end{tikzpicture}
}
\begin{document}
\def\tikzparams{red,line width=1mm}
\testtikz{\tikzparams}
\end{document}