![按条件拆分宏调用及其参数](https://linux22.com/image/317421/%E6%8C%89%E6%9D%A1%E4%BB%B6%E6%8B%86%E5%88%86%E5%AE%8F%E8%B0%83%E7%94%A8%E5%8F%8A%E5%85%B6%E5%8F%82%E6%95%B0.png)
如何在条件中拆分宏调用及其参数?为什么不行\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 章。(我很确定这个问题已经在这里的某个地方讨论过了,但我找不到它……)