我想为xparse
命令提供不同的格式,取决于命令是在上标、下标还是都不扩展。
也就是说,我想知道命令里面
\NewDocumentCommand{\command}{}{%
% here
}
是否被调用
{}^{\command}
{}_{\command}
或者
\command
类似这样的问题已经有人问过了:我可以检测我的宏是在下标还是上标中使用吗?。我希望找到一个可以直接的解决方案,以便以后可以进行扩展,前提是我正在使用latex3
和xetex
,如果其中任何一个与此相关的话。
如果内核没有提供直接的方法,我相信与\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
是相同的。
此外仍然缺乏所需的自指属性。