首先,抱歉我的英语水平,我是法国人。其次,我读过eqnarray
环境已经过时了,我们必须用 来代替它align
。好的,但这对我来说并不令人满意。我解释一下:
\documentclass[12pt]{article}
\usepackage{amsmath,amsfonts,amssymb} % Tableaux, maths
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges
\begin{document}
\begin{eqnarray*}
Test~eqnarray* & = & \text{Good alignment} \\
& Because & \text{the text is aligned near to the equal sign}
\end{eqnarray*}
\end{document}
随着环境align
\documentclass[12pt]{article}
\usepackage{amsmath,amsfonts,amssymb} % Tableaux, maths
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges
\begin{document}
\begin{align*}
Test~align* & = & \text{Bad alignment} \\
& Because & \text{the text is right-aligned, far to the equal sign}
\end{align*}
\end{document}
得到:
eqnarray
我怎样才能获得与完全相同的结果align
?
注意:我不关心间距问题eqnarray
答案1
你必须明白,在align
类似的 amsmath 环境中,如果你想n对齐组,除第一个组外,每个组都需要 2 个 & 符号:第一个 & 符号&
引入一个新的对齐组,第二个 & 符号&
指定此组内的对齐点。当然,第一个组不需要第一个 & 符号,因此n对齐组总共需要 2n– 1&
秒。
您使用了eqnarray
带有 two 的语法&
,因此 amsmath 理解有两个组。由于第二组中没有&
对齐点,因此它会在每行的最后一个字符上对齐。
添加:
使用 包可以轻松解决您的问题eqparbox
。顺便说一句,我简化了您的几何代码(因为所有边距都相等,所以您只需设置margin =
)。此外,frenchb
选项已过时,应将其替换为french
,最好使用 加载\documentclass
,以便所有语言相关包都得到通知。Lastn 无需加载amsfonts
,因为amssymb
会为您完成。
\documentclass[12pt, french]{article}
\usepackage{amsmath,amssymb} % Tableaux, maths
\usepackage{babel}
\usepackage[margin=1.5cm]{geometry} % Marges
\usepackage{eqparbox}
\newcommand{\eqrel}[2][B]{\mathrel{\eqmakebox[#1]{#2}}} %% eqparbox uses a system of tags, which is the optional argument here – defaults to B.
\begin{document}
\begin{align*}
\emph{Test~align*} &\eqrel{$=$} \text{Bad alignment} \\
&\eqrel{\em Because} \text{the text is left-aligned, near the equal sign}
\end{align*}
\end{document}
答案2
你align
有一个太多的&符号:
\documentclass[12pt]{article}
\usepackage{amsmath,amsfonts,amssymb} % Tableaux, maths
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges
\begin{document}
\begin{align*}
Test~align* & = \text{Bad alignment} \\
Because & = \text{the text is right-aligned, far to the equal sign}
\end{align*}
or
\begin{align*}
Test~align* & = \text{Bad alignment} \\
& \text{Because the text is right-aligned, far to the equal sign}
\end{align*}
or
\begin{align*}
Test~align* & = \parbox[t]{0.4\linewidth}{
Bad alignment \\
Because the text is right-aligned, far to the equal sign}
\end{align*}
\end{document}
补充: 显然您正在寻找以下内容:
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\[\setlength\arraycolsep{2pt}
\begin{array}{rcl}
Test~array & = & \text{Fine alignment}\\
& Because & \text{the text is left-aligned \dots}
\end{array}
\]
\end{document}
附录(2):
在非常古老的(几乎被遗忘的)包的帮助mathenv
下mfwtools
:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{mathenv}
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges
\begin{document}
\begin{eqnarray}[rc@{\;}l]
Test~eqnarray & = & \text{Good alignment} \\
& Because & \text{the text is aligned near to the equal sign}
\end{eqnarray}
\end{document}