我在对齐的环境中有以下等式:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\expr}[1]{\delta\Delta\Gamma_{#1}}
\begin{document}
\begin{equation}
\begin{aligned}
X &= \expr{A} + \expr{BC} + \expr{D}\\
&= \expr{A} + \expr{B} + \expr{C} + \expr{D}
\end{aligned}
\end{equation}
\end{document}
我想将+
第一行上的第一个和第二个符号与+
第二行上的第一个和最后一个符号对齐。我使用文字处理器向您展示了我想要的结果:
换句话说,\expr{BC}
是居中的。实现此目的的最佳方法是什么?
答案1
不需要猜测一个好的间距,因为 TeX 可以完成这项工作。
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}% first solution
\usepackage{eqparbox}% second solution
%%% for the second solution
\newcommand{\same}[2]{\eqmakebox[#1][c]{$\displaystyle#2$}}
%%%
\newcommand{\expr}[1]{\delta\Delta\Gamma_{#1}}
\begin{document}
\begin{equation}
\renewcommand{\arraystretch}{1.2}
\setlength{\arraycolsep}{0pt}
\begin{array}{*{9}{ >{{}}c<{{}} }}
X &=& \expr{A} &+& \multicolumn{3}{c}{\expr{BC}} &+& \expr{D} \\
&=& \expr{A} &+& \expr{B} &+& \expr{C} &+& \expr{D}
\end{array}
\end{equation}
\begin{equation}
\begin{aligned}
X &= \expr{A} + \same{X}{\expr{BC}} + \expr{D} \\
&= \expr{A} + \same{X}{\expr{B} + \expr{C}} + \expr{D}
\end{aligned}
\end{equation}
\end{document}
第二个解决方案的宏\same
将任意字符串作为第一个参数,该字符串必须对于您希望具有相同宽度的特定部分,在整个文档中必须是唯一的。换句话说,如果您在其他地方使用相同的构造,则需要传递与 不同的内容X
。
答案2
有matrix
或 有array
:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\expr}[1]{\delta\Delta\Gamma_{#1}}
\begin{document}
\begin{equation}\setlength\arraycolsep{0.5pt}
\begin{matrix}
X & = \expr{A} + & \expr{BC} & + \expr{D}\\
& = \expr{A} + & \expr{B} + \expr{C} & + \expr{D}
\end{matrix}
\end{equation}
\begin{equation}\setlength\arraycolsep{0.5pt}
\begin{array}{crcl}
X &= \expr{A} + & \expr{BC} & + \expr{D}\\
&= \expr{A} + & \expr{B} + \expr{C} & + \expr{D}
\end{array}
\end{equation}
\end{document}
答案3
基于的解决方案eqparbox
(需要两次编译):
\documentclass{article}
\usepackage{amsmath}
\newcommand{\expr}[1]{\delta\Delta\Gamma_{#1}}
\usepackage{eqparbox}
\begin{document}
\begin{equation}
\begin{alignedat}{3}
X &= \expr{A} & & + \eqmakebox[E]{$\expr{BC}$} & & + \expr{D}\\
&= \expr{A} & & + \eqmakebox[E]{$\expr{B} + \expr{C}$} & & + \expr{D}
\end{alignedat}
\end{equation}
\end{document}
答案4
还有其他非常好的解决方案,我只想展示一种替代方案,我主要用它处理我的所有方程式(但在这个网站上很少看到)。IEEEeqnarray
是来自文档类的环境IEEEtran
,但您只能用加载宏\usepackage{IEEEtrantools}
。方程数组一开始有点复杂,但可以解决许多更复杂的对齐情况。这就是我喜欢的:一种“适合所有人”的解决方案。以下是您的示例:
\documentclass{article}
\usepackage{IEEEtrantools}
\newcommand{\expr}[1]{\delta\Delta\Gamma_{#1}}
\begin{document}
\begin{IEEEeqnarray*}{rCcCcCc}
X &=& \expr{A} &+& \expr{BC} &+& \expr{D} \\
&=& \expr{A} &+& \expr{B} + \expr{C} &+& \expr{D}
\end{IEEEeqnarray*}
\end{document}
IEEEeqnarray
通过明确定义对齐点之间的使用列来工作。您可以使用r
、c
和l
进行右对齐、居中和左对齐。它们的大写版本还会在列周围应用运算符间距。在您的示例中,每隔一列就是一个运算符,这就是我在那里使用大写变体的原因。
IEEEeqnarray
当然比 eg 更冗长一些align
,但恕我直言,这是值得的。您可以查看以下文档:https://www.ctan.org/pkg/ieeetrantools。