
No sé si esto es realmente una buena idea o no, pero me pregunto si es posible implementar una versión en \frac
la que el numerador y el denominador se puedan alinear en una pestaña de alineación ( &
).
Hay muchas preguntas sobre la alineación de fracciones en este sitio, y la solución más obvia en muchos casos es usar \hfill
. Pero considere una fracción como esta:
El de arriba parece, a mis ojos, un poco desordenado, pero al usarlo \hfill
se mueve el numerador demasiado hacia la izquierda. Lo que realmente quiero (creo) es alinearlos exactamente en el soporte abierto. Entonces estoy imaginando un \alignedfrac
comando que me permitiría escribir
\[
\alignedfrac{q&(x\mid y)}{p_\mathrm{foo}&(w\mid x,y,z)}
\]
y haga que alinee el numerador y el denominador en los &
caracteres.
Soy consciente de que esta puede ser o no una buena opción y que probablemente no esté resolviendo un problema, pero aun así tengo curiosidad por saber si es posible implementar algo como esto.
Aquí está el MWE que produce la imagen de arriba:
\documentclass{article}
\begin{document}
\noindent without any alignment:
\[
\frac{q(x\mid y)}{p_\mathrm{foo}(w\mid x,y,z)}
\]
using hfill:
\[
\frac{q(x\mid y)\hfill}{p_\mathrm{foo}(w\mid x,y,z)}
\]
\end{document}
Respuesta1
Aquí construyo la porción izquierda de la fractura ( \leftfrac
) y la porción derecha ( \rightfrac
) de forma independiente, usando \hfill
s para lograr las justificaciones porcionales. Luego, compuse ambos de manera adyacente, con un negativo \mkern
entre ellos.
Según la sugerencia de Mico, las apariciones de |
han sido reemplazadas por \mid
, para una mejor apariencia.
EDITADO para agregar \vphantom
coincidencias, lo que creo que ayudará si las partes izquierda y derecha tienen diferentes extensiones verticales.
\documentclass{article}
\begin{document}
\newcommand\alignedfrac[2]{%
\leftfrac#1\\#2\relax\mkern-4.5mu\rightfrac#1\\#2\relax
}
\def\leftfrac#1\\#3\relax{%
\frac{\hfill#1\vphantom{#2}}{\hfill#3\vphantom{#4}}}
\def\rightfrac#1\\#3\relax{%
\frac{\vphantom{#1}#2\hfill}{\vphantom{#3}#4\hfill}}
\noindent without any alignment:
\[
\frac{q(x\mid y)}{p_\mathrm{foo}(w\mid x,y,z)}
\]
using hfill:
\[
\frac{q(x\mid y)\hfill}{p_\mathrm{foo}(w\mid x,y,z)}
\]
using alignedfrac
\[
\alignedfrac{q&(x\mid y)}{p_\mathrm{foo}&(w\mid x,y,z)}
\]
\end{document}
Respuesta2
Puedes hacerlo:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\alignedfrac}[2]{%
\begingroup
\setbox0=\vbox{%
\m@th
\ialign{&$\displaystyle##$\cr#1\cr#2\cr}%
\setbox2=\lastbox
\hbox{%
\unhbox2
\unskip
\setbox4=\lastbox
\unskip
\setbox6=\lastbox
\global\dimen1=\wd6
\global\dimen3=\wd4
}
}
\frac{\af@make#1\@nil}{\af@make#2\@nil}
\endgroup
}
\def\af@make#1\@nil{%
\makebox[\dimen1][r]{$\displaystyle#1$}%
\makebox[\dimen3][l]{$\displaystyle#2$}%
}
\makeatother
\begin{document}
\begin{gather*}
\alignedfrac{q&(x\mid y)}{p_\mathrm{foo}&(w\mid x,y,z)} \\
\frac{q(x\mid y)}{p_\mathrm{foo}(w\mid x,y,z)}
\end{gather*}
\end{document}
¿Cual es el trato? Hago una alineación con la primitiva \halign
y luego examino su última fila desmantelando la caja construida. Guardo las dimensiones de las dos partes y las uso para hacer cajas del ancho correcto.
Sin embargo, no veo ninguna mejora con respecto a la fracción estándar, como muestra claramente la imagen.