我想在某些宏中包含一个“上下文敏感”的分隔空间(在某种意义上,当调用宏时,例如在下标内,分隔空间会相应减少)。
是否有任何特定命令可以产生这样的行为?
否则,我很想使用命令\phantom
来模拟它,比如说:
\newcommand{\contextseparate}[2]{#1 \phantom{M} #2}
最后一种方法可以接受吗?(出于某种原因,我觉得它很糟糕)
答案1
\ThisStyle{}
如果您从包中嵌入宏定义scalerel
,它会识别\LMpt
并\LMex
作为与 Local-Math 大小一起缩放的长度。
\LMpt
更具体地说,和的缩放因子\LMex
是预定义的(但可以重置)为
\def\scriptstyleScaleFactor{0.7}
\def\scriptscriptstyleScaleFactor{0.5}
\textstyle
显然,对于和,比例因子为 1。MWE \displaystyle
:
\documentclass{article}
\usepackage{scalerel}
\newcommand{\contextseparate}[2]{\ThisStyle{#1\kern1.5\LMex#2}}
\begin{document}
$\contextseparate{A}{B}$\par
$\scriptstyle\contextseparate{A}{B}$\par
$\scriptscriptstyle\contextseparate{A}{B}$
\end{document}
如果您需要在无法访问的地方(例如,在框内)调用当前的数学样式,您可以调用它\SavedStyle
来恢复关联开始时处于活动状态的样式\ThisStyle
。
\documentclass{article}
\usepackage{scalerel}
\newcommand{\contextseparate}[2]{\ThisStyle{\fboxsep=0pt%
#1\fbox{$\phantom{\SavedStyle m}$}#2}}
\begin{document}
$\contextseparate{A}{B}$\par
$\scriptstyle\contextseparate{A}{B}$\par
$\scriptscriptstyle\contextseparate{A}{B}$
\end{document}