使用对齐标签对齐分数

使用对齐标签对齐分数

我不知道这是否真的是个好主意,但我想知道是否有可能实现一个版本,其中\frac分子和分母可以在对齐选项卡(&)处对齐。

本网站上有很多关于分数对齐的问题,在许多情况下,最明显的解决方案是使用\hfill。但请考虑这样的分数:

在此处输入图片描述

在我看来,上面的那个看起来有点乱,但使用\hfill会将分子移得太靠左。我真正想要的(我认为)是将它们精确地对齐在左括号处。所以我在想象一个\alignedfrac命令,它允许我这样写

\[
\alignedfrac{q&(x\mid y)}{p_\mathrm{foo}&(w\mid x,y,z)}
\]

并使分子和分母与字符对齐&

我知道这实际上可能是一个好的选择,也可能不是一个好的选择,而且我可能正在解决一个非问题,但我仍然很好奇是否有可能实现这样的事情。

以下是产生上述图像的 MWE:

\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}

答案1

这里我分别构建了分数的左部分 ( \leftfrac) 和右部分 ( \rightfrac),并使用\hfills 来实现分部对齐。然后,我将两者相邻排版,并\mkern在它们之间添加一个负片。

根据 Mico 的建议,为了获得更好的外观,|已被 替换为。\mid

已编辑以添加\vphantom匹配,我相信如果左右部分的垂直范围不同,这将会有所帮助。

\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}

在此处输入图片描述

答案2

你能行的:

\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}

怎么回事?我与原始模型对齐\halign,然后通过拆解构建的盒子来检查其最后一行。我存储了两个部分的尺寸,并使用它们来制作合适宽度的盒子。

然而,正如图像清楚显示的那样,相对于标准分数,我没有看到任何改进。

在此处输入图片描述

相关内容