在对齐环境内对方程式进行中心化处理

在对齐环境内对方程式进行中心化处理

我在对齐的环境中有以下等式:

方程

\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通过明确定义对齐点之间的使用列来工作。您可以使用rcl进行右对齐、居中和左对齐。它们的大写版本还会在列周围应用运算符间距。在您的示例中,每隔一列就是一个运算符,这就是我在那里使用大写变体的原因。

IEEEeqnarray当然比 eg 更冗长一些align,但恕我直言,这是值得的。您可以查看以下文档:https://www.ctan.org/pkg/ieeetrantools

相关内容