Alinear fracciones con una pestaña de alineación

Alinear fracciones con una pestaña de alineación

No sé si esto es realmente una buena idea o no, pero me pregunto si es posible implementar una versión en \fracla 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:

ingrese la descripción de la imagen aquí

El de arriba parece, a mis ojos, un poco desordenado, pero al usarlo \hfillse mueve el numerador demasiado hacia la izquierda. Lo que realmente quiero (creo) es alinearlos exactamente en el soporte abierto. Entonces estoy imaginando un \alignedfraccomando 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 \hfills para lograr las justificaciones porcionales. Luego, compuse ambos de manera adyacente, con un negativo \mkernentre ellos.

Según la sugerencia de Mico, las apariciones de |han sido reemplazadas por \mid, para una mejor apariencia.

EDITADO para agregar \vphantomcoincidencias, 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&#2\\#3&#4\relax{%
  \frac{\hfill#1\vphantom{#2}}{\hfill#3\vphantom{#4}}}
\def\rightfrac#1&#2\\#3&#4\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}

ingrese la descripción de la imagen aquí

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&#2\@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 \haligny 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.

ingrese la descripción de la imagen aquí

información relacionada