我正在定义一个新命令和一个标志:
\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{}
可以的结果。