确定宏/函数是否在下标、上标或都不是

确定宏/函数是否在下标、上标或都不是

我想为xparse命令提供不同的格式,取决于命令是在上标、下标还是都不扩展。

也就是说,我想知道命令里面

\NewDocumentCommand{\command}{}{%
    % here
}

是否被调用

{}^{\command}

{}_{\command}

或者

\command

类似这样的问题已经有人问过了:我可以检测我的宏是在下标还是上标中使用吗?。我希望找到一个可以直接的解决方案,以便以后可以进行扩展,前提是我正在使用latex3xetex,如果其中任何一个与此相关的话。

如果内核没有提供直接的方法,我相信与\command扩展的框(?)的大小进行比较可能是一个很好的代理。


感谢评论,一些误解消失了,我想出了其他地方提到的“尺寸测量”的方法。

在评论提供的示例中,我现在已将固定高度\big|支柱(vphantom)替换为如下构造的支柱。

\savebox{\testbox}{\ensuremath{#1}}%
% \settodepth{\dimen0}{\testbox}%
\settoheight{\dimen1}{\testbox}%
% \addtolength{\dimen1}{\dimen0}% Not universally appropriate.
\addtolength{\dimen1}{0.375 \dimen1}%
\rule{0pt}{\dimen1}%

where\newsavebox{\testbox}在宏的外部调用。

但是,这并没有正确设置上标或下标参数的高度,例如,

$\settoheight{\dimen0}{k}$ \the\dimen0  == ${}^{\settoheight{\dimen0}{k}}$  \the\dimen0

是相同的。

此外仍然缺乏所需的自指属性

相关内容