测试是否在 \halign 内部

测试是否在 \halign 内部

我正在尝试编写一个宏,该宏在从文本模式、数学模式、显示数学和数学表调用时具有不同的行为。前三个用和很容易实现\ifmmode\mathchoice但最后一个有点复杂,因为我必须测试各种 LaTeX 和 AMS 环境:、、array等。但是,由于所有这些环境都是作为的变体实现的,最干净的方法是检查宏是否从内部调用。array*gatheralign\halign\halign

因此我的问题是:有没有办法测试是否调用了宏\halign

(这是一个用户级宏,很可能永远不会从内部调用\noalign,因此不需要对这种情况进行额外的测试)。

编辑:我找到了一个准答案,我的意思是它在上述所有 AMS 环境中都有效,但在普通的 中无效\halign。也就是说,在普通数学中,\math@cr@@@是一个扩展为 的宏\cr,但在对齐的环境中会发生变化。所以我只需要做类似的事情

\def\plain@cr{\cr}
\ifx\math@cr@@@\plain@cr ... \else ... \fi

相关内容