考虑以下代码及其结果:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
A >& B > C &> D \\
A >& E &>D
\end{align}
\begin{eqnarray}
A >& B > C &> D \\
A >& E &> D
\end{eqnarray}
\end{document}
我希望结果是第二个而不是第一个。但是,我想在 align 环境中实现这一点。
- 我可以这样做吗?
- & 到底起什么作用?
编辑:感谢您迄今为止的帮助。我喜欢(并赞成)所有提出的选项,但如果我希望两行都编号怎么办?所以不要使用 ,而要align*
使用align
。
答案1
alignat
带有和 的变体,模仿来自 的命令eqmakebox
的构造:\documentclass{article}\vdotswithin
mathtools
\usepackage{amsmath}
\usepackage{eqparbox}
\begin{document}
\begin{alignat}{3}
A & > B & & \eqmakebox[A]{$ {}>{} $} C &&> D \\
A & > & & \eqmakebox[A]{$ E $}& & >D
\end{alignat}
\end{document}
关于 & 符号用法的解释
align
和之间的唯一区别alignat
在于,对齐方程的列之间的间距是由用户根据环境选择alignat
。
为了n列,你必须使用2n – 1 &
:从第二个开始,每个&
标记一个新列的开始,以下&
标记其列中的对齐点。
在这里,我设置了3
列,因此5&
,列之间没有间距。
答案2
使用数组可以更好地实现这一点:
\documentclass{article}
\usepackage{array}
\begin{document}
\[
\setlength{\arraycolsep}{0pt}
\renewcommand{\arraystretch}{1.5}
\begin{array}{c *{3}{ >{{}}c<{{}} c } }
A &> & B &> & C &> & D \\
A &> & \multicolumn{3}{c}{E} &> & D
\end{array}
\]
\end{document}
七个对齐点,关系符号的偶数列,因此被空子公式包围以产生正确的空间。列间填充(本地)设置为零。
答案3
您可以使用alignat
而不是align
一些低级命令来获得居中,或者您可以使用包eqnarray
。
对齐
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\ccol}[1]{\omit\column@plus\hfill$\m@th\displaystyle #1$\hfill\span}
\makeatother
\begin{document}
\begin{alignat}{2}
A >{}& B > C &&> D \\
A >{}&\ccol{E}&>D
\end{alignat}
\end{document}
方程阵列
\documentclass{article}
\usepackage{eqnarray}
\begin{document}
\arraycolsep 0pt
\begin{equationarray}{rcl}
A >{}& B > C &{}> D \\
A >{}&E&{}>D
\end{equationarray}
\end{document}