将文档中的所有方程式以等号对齐

将文档中的所有方程式以等号对齐

这个问题可能看起来有点疯狂!:) 但我倾向于全部我的方程式在符号处的文档中=。事实上,我想要一个适用于所有方程式的通用格式,如下所示

我想要固定的等号与左边距的距离=右侧

如果等式的左边或右边很长,它们应该分解到下一行从左边对齐。

这是一个简单的例子

\documentclass{article}
\usepackage{amsmath}
\begin{document}

This example shows text and  equations within
an \verb|align| environment.
\begin{align*}
a &= b + c + d\\
  &+ e + f + g
\intertext{A small amount of text can go here with $x=2$ inline math
But not a lot of text.}
k &= l + m + n + m + n + m + n\\
  &+ o + p + q
\end{align*}

\end{document}

但这不是我想要的,因为

  • =与左边距的距离不固定
  • 如果我使用这种方法,我应该在一个环境中编写所有文档,align这会太混乱!
  • 我无法在方程式之间写太多文字

有没有什么办法可以解决这个问题?

答案1

我只考虑实施全局对齐,因为 egreg 在评论中暗示这不是一个好主意。对齐应该突出显示显示的相应部分,如果对齐所有内容,则该含义将被破坏。但是...

在此处输入图片描述

\documentclass{article}

\usepackage[fleqn]{amsmath}
\usepackage{etoolbox}
\setlength\mathindent{3cm}
\makeatletter

\def\align@preamble{%
   &\hfil
    \strut@
    \setboxz@h{\@lign$\m@th\displaystyle{##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \llap{\set@field}%
    \tabskip\z@skip
   &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \rlap{\set@field}
    \hfil
    \tabskip\alignsep@
}


\def\a{One two three four five six seven. }
\def\b{\a\a\a Red yellow blue green. \a\a\a\a}
\begin{document}

\b\b\a
\begin{align}
  1+2+3+4 &=4\\
x+y &=z
\end{align}

\b\b\b

\a\a\b

\a
\begin{align}
  1&=a+y+b+w+x+n+m+s+d+e\\
  2&=4
\end{align}

\b
\begin{align}
  1&=0\\
2&=9
\end{align}
\end{document}

这里的宏不是特别通用或强大,但展示了使用左齐但缩进的设置以及隐藏第一列的宽度的基本思想。

答案2

公式可以通过选项 左对齐,左缩进可以通过寄存器(包)fleqn控制,然后公式的左边部分可以通过缩进空间来书写:\mathindentamsmath\llap

\documentclass[fleqn]{article}
\usepackage{amsmath}
\setlength{\mathindent}{3em}
\newcommand*{\ml}[1]{%
  \llap{$\displaystyle#1$}%
}
\begin{document}
\begin{gather*}
  \ml{a} = b + c + d\\
  {} + e + f + g
\intertext{A small amount of text can go htere with $x=2$ inline math,
but not a lot of text.}
  \ml{k} = l + m + n + m + n + m + n\\
  {} + o + p + q\\
  \ml{r + s} = t + u
\end{gather*}
\end{document}

结果

相关内容