LaTeX におけるコンテキスト依存の長さの「単位」

LaTeX におけるコンテキスト依存の長さの「単位」

いくつかのマクロに、「コンテキスト依存」の区切りスペースを含めたいと思います (つまり、マクロがたとえばサブスクリプト内で呼び出されると、区切りスペースがそれに応じて減少するという意味です)。

このような動作を生成する特定のコマンドはありますか?

そうでなければ、次のコマンドを使用して\phantomシミュレートしたくなります。

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

この最後のアプローチは受け入れられますか? (なぜか私には良くないように見えます)

答え1

\ThisStyle{}パッケージからマクロ定義を埋め込むとscalerel\LMptと は\LMexLocal-Math のサイズに応じて変化する長さとして認識されます。

\LMptより具体的には、およびのスケーリング係数は\LMex次のように定義されています(ただし、リセットすることもできます)。

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

\textstyle明らかに、およびのスケール係数は 1 です\displaystyle。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}

ここに画像の説明を入力してください

アクセスできない場所 (ボックス内など) で現在の数式スタイルを呼び出す必要がある場合は、 を呼び出して、\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}

ここに画像の説明を入力してください

関連情報