更新:

更新:

我定义了这个宏:

\newcommand{\foldeq}[1]{\sim_{#1}}

后来,我注意到当它在下标中使用时,看起来有点难以分辨它是 还是$\sim f$$\sim_f$$\sim f$没有意义,但这不是重点。)所以我添加了一个额外的宏,用于下标(原则上也用于上标,尽管这也没有意义):

\newcommand{\scriptfoldeq}[1]{\foldeq{\raisebox{-0.25mm}{$\scriptscriptstyle #1$}}}

但后来我突然想到,如果有一种方法可以检测宏是在下标还是上标中调用,并做出相应的反应,那将会非常方便。有吗?

更新:

使用 David 的回答,这是我的原始宏现在的样子:

\newcommand{\foldeq}[1]{
    \sim_{\mathchoice{}{}{#1}{\raisebox{-0.25mm}{$\scriptscriptstyle #1$}}}
    % {\sim_f} looks similar to {\sim f} in subscript/superscript.
}

答案1

您可以使用\mathchoice或其包装器\mathpalette。它们实际上并没有检测宏的使用位置,它们只是以四种不同的样式设置了四次内容,并且 TeX 在布局数学时使用了适当的框。

在此处输入图片描述

\def\test{{\mathchoice{D}{T}{1}{2}}}

$$\test {\test \over \test} \test^{\test^\test} $$

\centerline{$\test {\test \over \test} \test^{\test^\test} $}

\bye

相关内容