这个问题是关于用户的意见和经验的。
为了组织方程中的常用项,对齐方程的最佳方法是什么?
在下面描述的特定情况下什么是可取的?(对齐与数组)
我已经使用 LaTeX 一段时间了,每次使用某个命令时,总会有人说“嘿,你应该使用这个其他命令”,这让我很困扰。虽然我喜欢有选择,但有时要找出其中最好的选择并不容易。在这个特殊情况下,我们谈论的是包数学。
两个环境都在方程内,以便只有一个方程编号。想法是使用每列的右对齐,例如所有常数都对齐,数字放在左边。它产生了一种非常整洁的风格。
以下是关于 MWE 的讨论:
我必须使用更多的
&
s 来aligned
对齐常量,同时array
使用较少的(array
+1);rcl
虽然需要位移( +1),aligned
但有了它们我就可以控制位移(+1);array
aligned
array
array
是基本矩阵环境,它应该在矩阵之外使用吗?;中的行间距
array
比中的小aligned
。aligned
看起来好多了(aligned
+1)。
从我的角度来看,aligned
更适合这种组织,但我并不认为 有什么严重错误array
。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{aligned}
y(x) & = y_h(x) + y_p(x) & & & & & & & & & & & & & \\
y(0) & = y_h(0) + y_p(0) & = & & c_1 & & + & & c_2 & & + & & A & & = 2 \\
y'(0) & = y'_h(0) + y'_p(0) & = & & - c_1 & & + & & 2 c_2 & & + & & 3A & & = 1
\end{aligned}
\end{equation}
\begin{equation}
\begin{array}{rlcrrrcrl}
y(x) & = y_h(x) + y_p(x) & & & & & & & \\
y(0) & = y_h(0) + y_p(0) & = & c_1 & + & c_2 & + & A & = 2 \\
y'(0) & = y'_h(0) + y'_p(0) & = & - c_1 & + & 2 c_2 & + & 3A & = 1
\end{array}
\end{equation}
\end{document}
答案1
列中有太多不同的对齐,因此alignedat
管理起来变得相当复杂。
我会选择一个合适的array
:
\documentclass{article}
\usepackage{amsmath,array}
\begin{document}
\begin{equation}
% convenient local assignments
\newcolumntype{R}{>{\displaystyle}r}
\newcolumntype{L}{>{\displaystyle}l}
\newcolumntype{C}{>{{}}c<{{}}}
% let TeX compute the spacing
\setlength{\arraycolsep}{0pt}
% some more space between rows
\renewcommand{\arraystretch}{1.2}
\begin{array}{ R C L C L C R C R C R C L }
y(x) &=& y_h(x) &+& y_p(x) \\
y(0) &=& y_h(0) &+& y_p(0) &=& c_1 &+& c_2 &+& A &=& 2 \\
y'(0) &=& y'_h(0) &+& y'_p(0) &=& -c_1 &+& 2c_2 &+& 3A &=& 1
\end{array}
\end{equation}
\end{document}
答案2
如果要在多列上对齐方程式,则还有第三种可能性:alignedat
环境。它不会在列之间添加空格。有时它无法在=
或周围放置正确的空格,因此需要+
使用空项={}
或的技巧。代码示例:+{}
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{alignedat}{8}
y(x) &= y_h(x) &&+ y_p(x)\\
y(0) &= y_h(0) &&+ y_p(0) &&={}&&c_1 &&+{}&&c_2 &&+{}&&A=2 \\
y'(0) &= y'_h(0) &&+ y'_p(0) &&= -&&c_1 &&+ 2&&c_2 &&+ 3&&A=1
\end{alignedat}
\end{equation}
\end{document}