在 alignat 命令中将方程式居中

在 alignat 命令中将方程式居中

我想将公式置于等号中间。到目前为止,我已经

\begin{alignat*}{2}    
v_2(16)&=\frac{2}{5}[v_3(32)+v_3(8)] &&= 0, \\
v_2(4)&=\frac{2}{5}[v_3(8)+v_3(2)] &&= 1.20,\\   
v_2(1)&=\frac{2}{5}[v_3(2)+v_3(0.50)] &&= 3.
\end{alignat*}

基本上我有

 A =BBB = CC

 A =B   = CCCC

但我想要

 A = BBB = CC

 A =  B  =CCCC

答案1

要使三个“列”中的每一个都居中,您可以使用环境。请注意 (i)数组环境标题中列分隔符array的规范,以确保适合数学的间距,以及 (ii) 重置参数以获得适合一组显示方程的外观。=\arraystretch

\documentclass{article}
\begin{document}
\renewcommand\arraystretch{1.33} % default value: 1.0
\[
\begin{array}{c @{{}={}} c @{{}={}} c}
v_2(16) & \frac{2}{5}[v_3(32)+v_3(8)]    & 0, \\
v_2(4)  & \frac{2}{5}[v_3(8) +v_3(2)]    & 1.20,\\   
v_2(1 ) & \frac{2}{5}[v_3(2) +v_3(0.50)] & 3.
\end{array}
\]
\end{document}

在此处输入图片描述

如果要将最左边的列与第一个=符号的右对齐,将最右边的列与第二个符号的左对齐=,则可以将其设置{r @{{}={}} c @{{}={}} l}为数组标题规范。


alignat*我实际上建议保留环境,同时在符号处添加另一个对齐点,而不是将方程的中间部分居中设置+。我还会使用\tfrac而不是frac

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{3}    
v_2(16)&=\tfrac{2}{5}[v_3(32) &&+v_3(8)]    &&= 0, \\
v_2(4) &=\tfrac{2}{5}[v_3(8)  &&+v_3(2)]    &&= 1.20,\\   
v_2(1) &=\tfrac{2}{5}[v_3(2)  &&+v_3(0.50)] &&= 3.
\end{alignat*}
\end{document}

在此处输入图片描述

答案2

这类似于我在这个答案。如果您覆盖环境的对齐默认值,您可以通过插入一些“橡胶长度”(即可拉伸空间)来实现此目的。alignat在您的情况下:

\documentclass{article}
\usepackage{amsmath}
\newcommand*\centermathcell[1]{\omit\hfil$\displaystyle#1$\hfil\ignorespaces}
\begin{document}
\begin{alignat*}{2}
  v_2(16) &={}& \centermathcell{\frac{2}{5}[v_3(32)+v_3(8)]}   &= 0, \\
  v_2(4)  &={}& \centermathcell{\frac{2}{5}[v_3(8)+v_3(2)]}    &= 1.20,\\
  v_2(1)  &={}& \centermathcell{\frac{2}{5}[v_3(2)+v_3(0.50)]} &= 3.
\end{alignat*}
\end{document}

在此处输入图片描述

该宏\centermathcell(其名称具有描述性,但您当然可以缩短它)用于\omit删除当前单元格中的默认对齐方式,并将其替换为居中。(这\ignorespaces是为了防止\centermathcell在输出中产生虚假间隙之后出现空白。)我对列进行了一些重新组织,以便必须完全居中的材料占据其自己的列。

与使用array环境相比,这样做的优点是, 的行为alignat在其他方面得以保留,并且比 idea 更简洁\fakewidth。缺点是超出了 LaTeX 排版结构和编码范式,因为\omit是 TeX 原语,而您“不应该知道”alignat是如何实现的(在本例中,作为\halign某种)。

答案3

如果你输入

\documentclass{amsart}

\newlength\wantedwidth
\newcommand{\fakewidth}[2]{%
  \settowidth{\wantedwidth}{\ensuremath{#2}}%
  \makebox[\wantedwidth]{\ensuremath{#1}}%
}

\begin{document}
\begin{alignat*}{2}    
  v_2(16)&=\fakewidth{\frac{2}{5}[v_3(32)+v_3(8)]}
                    {\frac{2}{5}[v_3(2)+v_3(0.50)]}
                    &&= \fakewidth{0,}{1.20} \\
  v_2(4)&=\fakewidth{\frac{2}{5}[v_3(8)+v_3(2)]}
                    {\frac{2}{5}[v_3(2)+v_3(0.50)]} 
                    &&= 1.20,\\   
  v_2(1)&=\fakewidth{\frac{2}{5}[v_3(2)+v_3(0.50)]}
                    {\frac{2}{5}[v_3(2)+v_3(0.50)]}
                    &&= \fakewidth{3.}{1.20}
\end{alignat*}

\end{document}

那么你会得到

在此处输入图片描述

答案4

这似乎比适合对齐环境更复杂。您可以array在这里使用通用的:

\documentclass{article}
\begin{document}
\[%
\begin{array}{r@{\,}l@{\,}c@{\,}l@{\,}l}
A&=&BBB&=&CC\\
A&=&B&=&CCCC
\end{array}
\]
\end{document}

相关内容