为什么建议将 \relax 放在 \ifmmode 之前?

为什么建议将 \relax 放在 \ifmmode 之前?

我多次看到建议\relax\ifmmode。我曾多次尝试在这个网站上搜索对此的解释,但一直没能找到。大卫·卡莱尔的回答我问的另一个问题突然让我明白了,我认为提交一个问题可能会帮助其他人更有效地找到这个问题的解释。

答案1

简而言之,在以下几种情况下可以做出解释:

\def\foo{\ifmmode alpha\else beta\fi}
...$\foo ...$ ...

\foo调用时还无法看到我们处于数学模式。但调用之后\relax\ifmmode将能够看到我们处于数学模式。

知道了解释后,我就能在这个网站上找到关于它的进一步讨论:

但直到我知道解释后,这些才容易找到。

如需进一步讨论,请参阅 The TeX Book 第 22 章,特别是第 238 页。

相关内容