
¿Es posible modificar la alineación horizontal del subíndice y superíndice de un símbolo? Es decir, ¿es posible obtener este par de sub/superíndices alineados a la derecha?
en lugar de este par de sub/superíndices alineados a la izquierda
cuando tengo un código como este:
\documentclass{standalone}
\usepackage{amsmath}
\begin{document}
$x_{101}^{1}$
\end{document}
Nota:Soynoen busca de unmanualsolución (por ejemplo, con hphantom
la que usé para crear el ejemplo anterior) sino una solución automatizada real de un solo uso.
Editar:Estoy de acuerdo con una solución que no parchee el mecanismo de subíndice/superíndice existente (aunque tengo curiosidad por saber si eso es posible). La solución también podría emplear un comando personalizado, es decir, \foo{x}{101}{1}
siempre que respete el espaciado de sub/superíndice adecuado del modo matemático, etc.
Respuesta1
No estoy seguro de cuál es el propósito de esto, pero aquí está:
\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}
Simplemente mida el subíndice y el superíndice y haga cuadros tan anchos como el más grande. Tenga en cuenta que esto también funciona para subíndices/superíndices de segundo nivel.
Respuesta2
Aquí hay un comienzo, con \Ss{}{}{}
. EDITADO para funcionar también con elementos de estilo de visualización. EDITADO para funcionar automáticamente también con estilos de subíndice. CORREGIDO un error obvio que hacía que la macro no se comportara correctamente si la longitud del superíndice excedía la longitud del subíndice.
\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}
Respuesta3
Por ejemplo, puedes probar esto:
\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