按条件拆分宏调用及其参数

按条件拆分宏调用及其参数

如何在条件中拆分宏调用及其参数?为什么不行\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 章。(我很确定这个问题已经在这里的某个地方讨论过了,但我找不到它……)

相关内容