如何转发命令参数?

如何转发命令参数?

我正在定义一个新命令和一个标志:

\newcommand{\setActorsStyle}[1][1]{
  \ifnum#1=1
     \setActorsStyleColor{}
  \else
     \setActorsStyleBW{}
  \fi
}

\newcommand{\flag}{0}

调用以下命令

\setActorsStyle[\flag{}]{}

导致编译错误Missing = inserted for \ifnum,因为给定的参数\ifnum不是整数。我在这里遗漏了什么?

答案1

后面不应该有空括号\flag

\documentclass{article}
\newcommand{\setActorsStyle}[1][1]{
  \ifnum#1=1
     \typeout{ONE!}
     %\setActorsStyleColor{}
  \else
     \typeout{NOT ONE!}
     %\setActorsStyleBW{}
  \fi
}

\newcommand{\flag}{0}

\setActorsStyle[\flag]{}

这里我禁用了两个我没有其定义的宏,并用于\typeout在终端中显示一条消息,以表明修改后的代码有效。

原始版本的问题在于#1扩展为数字 0,后跟一个空组。此组合不是数字,因此它破坏了 的语法。如果您这样做,则\ifnum可以避免这种情况\flag{}

\ifnum1=#1

因为这样扩展就会产生\ifnum1=0{}可以的结果。

相关内容