Me gustaría incluir en alguna macro un espacio de separación que sea "sensible al contexto" (en el sentido de que cuando se llama a la macro, por ejemplo, dentro de un subíndice, el espacio de separación se reduce en consecuencia).
¿Existe algún comando específico que produzca tal comportamiento?
De lo contrario, me siento tentado a utilizar el comando \phantom
para simularlo, por ejemplo:
\newcommand{\contextseparate}[2]{#1 \phantom{M} #2}
¿Es aceptable este último enfoque? (Por alguna razón me parece mal)
Respuesta1
Si incrusta la definición de macro \ThisStyle{}
desde el scalerel
paquete, reconoce \LMpt
y \LMex
como longitudes que escalan con el tamaño de Local-Math.
Más particularmente, los factores de escala para \LMpt
y \LMex
están predefinidos (pero se pueden restablecer) como
\def\scriptstyleScaleFactor{0.7}
\def\scriptscriptstyleScaleFactor{0.5}
Obviamente, el factor de escala es 1 para \textstyle
y \displaystyle
. El MWE:
\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}
Si alguna vez necesita recuperar el estilo matemático actual en un lugar donde de otro modo sería inaccesible (como dentro de un cuadro), puede invocarlo \SavedStyle
para recuperar cualquier estilo que estuviera activo al inicio del archivo \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}