Kontextsensitive Längeneinheiten in LaTeX

Kontextsensitive Längeneinheiten in LaTeX

Ich möchte in ein Makro ein Trennzeichen einfügen, das „kontextsensitiv“ ist (in dem Sinne, dass sich das Trennzeichen entsprechend verkleinert, wenn das Makro beispielsweise innerhalb eines Index aufgerufen wird).

Gibt es einen bestimmten Befehl, der ein solches Verhalten erzeugt?

Andernfalls bin ich versucht, den Befehl zu verwenden, \phantomum es zu simulieren, etwa:

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

Ist dieser letzte Ansatz akzeptabel? (Aus irgendeinem Grund sieht er für mich schlecht aus)

Antwort1

Wenn Sie die Makrodefinition \ThisStyle{}aus dem scalerelPaket einbetten, erkennt es \LMptund \LMexals Längen, die mit der Local-Math-Größe skalieren.

Genauer gesagt sind die Skalierungsfaktoren für \LMptund \LMexvordefiniert (können aber zurückgesetzt werden) als

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

Offensichtlich ist der Skalierungsfaktor 1 für \textstyleund \displaystyle. Das 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}

Bildbeschreibung hier eingeben

Wenn Sie den aktuellen Mathematikstil jemals an einer Stelle abrufen müssen, wo er sonst nicht zugänglich wäre (z. B. in einer Box), können Sie aufrufen, \SavedStyleum den Stil wiederherzustellen, der zu Beginn des zugehörigen aktiv war \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}

Bildbeschreibung hier eingeben

verwandte Informationen