删除对齐环境中的水平空间?

删除对齐环境中的水平空间?
\begin{alignat*}{3}
  a &= b &+& c &+& d\\
  b &= b &+& c &+& d\\
  c &= b &+& c &+& d\\
  aoeu &= \mathrm{something long here}
\end{alignat*}

生产

平均能量损失

如何删除红色圈出的空格,同时保持绿色圈出的“=”符号对齐?(另外,我希望“+”符号对齐。)

答案1

我假设您的实际方程包含比abc和更多的激动人心的项d。如果是这样,您最好采用灵活的array环境。

在此处输入图片描述

\documentclass{article}
\usepackage{array} % for '\newcolumntype' macro
\newcolumntype{C}{>{{}}c<{{}}} % for binary and relational operators
\newcolumntype{L}{>{\displaystyle}l} % automatic display-style math mode, left-aligned
\newcolumntype{R}{>{\displaystyle}r} % automatic display-style math mode, right-aligned
\begin{document}
\[
\setlength\arraycolsep{0pt}
\renewcommand\arraystretch{1.2} % to emulate vert. spacing of 'align' env.
\begin{array}{RCLCLCLl} % the final column is a "dummy" column
  a &=& b &+& c &+& d\\
  b &=& b &+& c &+& d\\
  c &=& b &+& c &+& d\\
  aoeu &=& \multicolumn{6}{l}{\mbox{something long here}}
\end{array}
\]
\end{document}

答案2

由于我不知道您的环境中实际会有什么内容alignat*,因此我保留了三个对齐列。解决方案是将最后一行的 rhs 放入\rlap命令中,使其宽度为 0。如果此 rhs 是数学公式,则mathtools定义一个\mathrlap命令,该命令在数学模式下具有相同的效果:

\documentclass[11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage{fourier}
\usepackage{mathtools}

\begin{document}

\begin{alignat*}{3}
  a &= b &{}+{}& c &{}+{}& d\\
  b &= b &{}+{}& c &{}+{}& d\\
  c &= b &{}+{}& c &{}+{}& d\\
  aoeu &= \rlap{something long here}\\
 a & =\mathrlap{\frac{-b\pm\sqrt{b^2-4ac}}{2a}}
\end{alignat*}

\end{document}

在此处输入图片描述

相关内容