我不知道这是否真的是个好主意,但我想知道是否有可能实现一个版本,其中\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
),并使用\hfill
s 来实现分部对齐。然后,我将两者相邻排版,并\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\\#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}
答案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\@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
,然后通过拆解构建的盒子来检查其最后一行。我存储了两个部分的尺寸,并使用它们来制作合适宽度的盒子。
然而,正如图像清楚显示的那样,相对于标准分数,我没有看到任何改进。