如何在条件中拆分宏调用及其参数?为什么不行\ifnum 1=1\textbf\else\textit\fi{Foo}
?为什么会产生“太多}”的错误?
答案1
正如 Heiko 在他的评论中指出的那样,\textbf
以 eating\else
作为参数,并\textit
采用\fi
。因此,您需要\expandafter
告诉 TeX 等待并完成 if 语句,然后再扩展\textbf
和\textit
。然后您应该使用
\ifnum1=1\relax\expandafter\textbf\else\expandafter\textit\fi{Foo}
或者
\ifnum1=1 \expandafter\textbf\else\expandafter\textit\fi{Foo}
注意语句\relax
后面的空格\ifnum
,例如参见 TeX by Topic 的第 13.8 章。(我很确定这个问题已经在这里的某个地方讨论过了,但我找不到它……)