在一个文档中对齐所有公式

在一个文档中对齐所有公式

在我的文档中,我有很多数学公式,我使用 amsmath 包来表示它们。
我希望有一种表示方法,其中同一页上的所有公式都用等号对齐。
使用“对齐”时,只有连续的形式才会对齐。
因此,我在研究中发现了以下可能性:

\documentclass{article}
\usepackage{blindtext}

\usepackage[fleqn]{amsmath}

\setlength{\mathindent}{3em}

\newcommand*{\ml}[1]{%
  \llap{$\displaystyle#1$}%
}

\begin{document}
\section{section}
\blindtext
\begin{gather*}
  \ml{a} = b + c + d\\
  {} + e + f + g
\intertext{\blindtext}
  \ml{k} = l + m + n + m + n + m + n\\
  {} + o + p + q\\
  \ml{r +d s} = t + u
\end{gather*}
\subsection{subsection} 
\blindtext
\end{document}

结果,至少在简短的例子中,完全符合预期。但让我困扰的是,必须对所有段落使用“\ intertext {}”并更改公式的语法。(\ ml {x} = ...)
这使得缺乏 LaTeX 经验的人很难理解文本和公式的结构。
此外,我需要能够使用数字引用单个公式(\ label {formula-1})

有没有办法在不改变文本和公式的情况下将一页上的所有公式与等号对齐?
原则上,如果公式中能识别等号,然后按照定义的距离左对齐,就足够了。

非常感谢您的帮助。

科利娅

答案1

仅供记录:

\documentclass{article}
\usepackage{blindtext}


\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@
}

 
\begin{document}

\section{Section1}
\blindtext


\begin{align}
u_{X_{Y}, \, gtr} &= \sqrt{ \sum_{i=1}^{N}{ u_{X_{i}, \, sto}^{ 2 } } }
\end{align} 


\blindtext 


\begin{align}
u_{X_{Y}, \, wer} &=  \sum_{i=1}^{N}{ u_{X_{i}, \, fdf}  } 
\end{align} 


\blindtext


\begin{align}\label{eq:formx}
u_{ Q_{ X }, \, dedxe } &= \sqrt{ u_{ Q_{ fee }, \, sto}^{ 2 } + u_{ Q_{ Summe }, \, fgr}^{ 2 } }
\end{align} 


\blindtext


\begin{align} 
u_{ S_,wer } &= \sqrt{ u_{ X_,sto }^{ 2 } + u_{ Y_,sto }^{ 2 }} \label{eq:form0} \\
u_{ P_,wer } &= \sqrt{ \left( X \cdot u_{ Y_,ggt } \right)^{ 2 } + \left( Y \cdot u_{ X_,frg } \right)^{ 2 }} \label{eq:form1}
\end{align} 


\end{document}

相关内容