
記号の下付き文字と上付き文字の水平方向の配置を変更することは可能ですか?つまり、この右揃えの下付き文字と上付き文字のペアを取得することは可能ですか?
左揃えの下付き文字と上付き文字の代わりに
次のようなコードがあった場合:
\documentclass{standalone}
\usepackage{amsmath}
\begin{document}
$x_{101}^{1}$
\end{document}
注記:私はない探しているマニュアルソリューション (たとえば、hphantom
上記の例を作成するために使用したソリューション) ではなく、実際に自動化されたワンショットヒットオールソリューションです。
編集:既存の下付き/上付き文字のメカニズムを修正しないソリューションでも構いません (ただし、それが可能かどうかは興味があります)。ソリューションでは、\foo{x}{101}{1}
適切な数式モードの下付き/上付き文字の間隔などに準拠している限り、カスタム コマンドを使用することもできます。
答え1
この目的が何なのかは分かりませんが、次のようになります。
\documentclass{article}
\usepackage{mathtools}
\DeclareRobustCommand{\subsup}[3]{{%
\mathpalette\makesubsup{{#1}{#2}{#3}}%
}}
\makeatletter
\providecommand{\@firstofthree}[3]{#1}
\providecommand{\@secondofthree}[3]{#2}
\providecommand{\@thirdofthree}[3]{#3}
\newcommand{\makesubsup}[2]{%
\sbox\z@{$\m@th#1{}_{\@secondofthree#2}$}%
\sbox\tw@{$\m@th#1{}^{\@thirdofthree#2}$}%
\dimen@=\wd\z@
\ifdim\wd\tw@>\wd\z@ \dimen@=\wd\tw@\fi
{\mkern0mu \@firstofthree#2}%
_{\mathmakebox[\dimen@][r]{\@secondofthree#2}}%
^{\mathmakebox[\dimen@][r]{\@thirdofthree#2}}%
}
\makeatother
\begin{document}
$\subsup{x}{101}{1}-\subsup{y}{1}{101}$
$A_{\subsup{x}{101}{1}}$
\end{document}
下付き文字と上付き文字を測り、大きい方と同じ幅のボックスを作成します。これは、第 2 レベルの下付き文字/上付き文字にも機能することに注意してください。
答え2
ここからがスタートです\Ss{}{}{}
。表示スタイルのものでも動作するように編集しました。下付き文字のスタイルでも自動的に動作するように編集しました。上付き文字の長さが下付き文字の長さを超えた場合にマクロが正しく動作しないという明らかなバグを修正しました。
\documentclass{article}
\usepackage{amsmath,stackengine,scalerel}
\newcommand\Ss[3]{\setbox0=\hbox{$#2$}\setbox2=\hbox{$#3$}\ifdim\wd2<\wd0%
\ThisStyle{\ensurestackMath{\stackengine%
{0pt}{\SavedStyle#1_{#2}^{}}{\SavedStyle{\phantom{#1}}^{#3}}{O}{r}{F}{F}{L}}}%
\else
\ThisStyle{\ensurestackMath{\stackengine%
{0pt}{\SavedStyle{\phantom{#1}}_{#2}^{}}{\SavedStyle#1^{#3}}{O}{r}{F}{F}{L}}}%
\fi
}
\begin{document}
\parskip 4pt\centering
$x_{101}^{1}$
$\Ss{x}{101}{1}$
$X_{101}^{1}$
$\Ss{X}{101}{1}$
$(A)_{123}^{ijklm}$
$\Ss{(A)}{123}{ijklm}$
\[
\biggl(\frac{1}{2}\biggr)_{123}^{4}\quad
\Ss{\biggl(\frac{1}{2}\biggr)}{123}{4}
\]
$A_{\Ss{x}{101}{1}}$
\end{document}
答え3
たとえば、これを試すことができます:
\def\sf#1_#2^#3{%
\setbox1=\hbox{$\scriptstyle#2$}%
\setbox2=\hbox{$\scriptstyle#3$}%
\ifdim\wd2>\wd1 \dimen0=\wd2 \else \dimen0=\wd1 \fi
\setbox2=\hbox to\dimen0{\hss\box2}%
\setbox1=\hbox to\dimen0{\hss\box1}%
#1_{\box1}^{\box2}
}
$\sf x_{100}^{2}$
\bye