"Unidades" de comprimento sensíveis ao contexto em LaTeX

"Unidades" de comprimento sensíveis ao contexto em LaTeX

Eu gostaria de incluir em alguma macro um espaço de separação que seja "sensível ao contexto" (no sentido de que quando a macro é chamada, por exemplo, dentro de um subscrito, o espaço de separação é reduzido de acordo).

Existe algum comando específico que produz tal comportamento?

Caso contrário, fico tentado a usar o comando \phantompara simulá-lo, digamos:

\newcommand{\contextseparate}[2]{#1 \phantom{M} #2} 

Esta última abordagem é aceitável? (Por alguma razão, parece ruim para mim)

Responder1

Se você incorporar a definição de macro \ThisStyle{}do scalerelpacote, ela reconhecerá \LMpte \LMexcomo comprimentos que são dimensionados com o tamanho do Local-Math.

Mais particularmente, os fatores de escala para \LMpte \LMexsão predefinidos (mas podem ser redefinidos) como

\def\scriptstyleScaleFactor{0.7}
\def\scriptscriptstyleScaleFactor{0.5}

Obviamente, o fator de escala é 1 para \textstylee \displaystyle. O 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}

insira a descrição da imagem aqui

Se você precisar recuperar o estilo matemático atual em um local onde ele seria inacessível (como dentro de uma caixa), você poderá invocar \SavedStylepara recuperar qualquer estilo que estivesse ativo no início do arquivo \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}

insira a descrição da imagem aqui

informação relacionada