对齐单独的方程式

对齐单独的方程式

我的 tex 中有以下结构

本文的部分内容具有这样的结构,其中有许多简短的一两行解释,由一行方程式组成

\begin{equation}\label{s1}
y=z+r+c
\end{equation}

相同的结构重复了好几页。这些等式之间的文本平均大约有 4-5 行。

\begin{equation}\label{s2}
y_{321}=z_3+r_2+c_1
\end{equation}

现在,这些方程都是单行的,但 lhs/rhs 的长度变化很小

\begin{equation}\label{s2}
z_{123}+\omega+\Theta+y_{321}=z_3+r_2+c_1
\end{equation}

因此,中央等号往往会在各个段落之间水平跳动很多。

\begin{equation}\label{s2}
z_3+r_2+c_1\thereforz_{123}+\omega+\Theta+y_{321}
\end{equation}

此外请注意,每个方程都很短并且不占据整行,因此有足够的空间将它们水平对齐。

我认为这种不规则性看起来有点混乱。

我的问题是:有没有办法使等式 s1 和 s2 对齐(至少是等号)?

答案1

您可以\shortintertext使用mathtools\intertext来自amsmath

\documentclass{article}

\usepackage{mathtools}

\begin{document}

\begin{align*}
  AAA &= BBBBBBBBBB,\\
\shortintertext{and}
  C   &= DD.
\end{align*}
or
\begin{align*}
  AAA &= BBBBBBBBBB,\\
\intertext{and}
  C   &= DD.
\end{align*}

\end{document}

输出

两个命令之间的区别在于对齐方程式之间的文本周围的间距。

答案2

\documentclass{article}
\usepackage{amsmath}

\begin{document}

blabla-bla-bla

\begin{align}
y&=z+r+c  \label{s1}\\
\noalign{\text{blabla-blah} }
y_{321}&=z_3+r_2+c_1 \label{s2}
\end{align}

\end{document}

在此处输入图片描述

答案3

进一步回答用户的问题,我创建了一个algneqn环境,该环境将根据制表符对齐方程内容。用户必须指定两个约束参数(对齐左侧和右侧的文本宽度的分数),它们将控制对齐制表符在水平线上的位置。与\intertext解决方案不同,这些解决方案非常适合对齐方程之间有少量文本,而这个解决方案可以在整个文档中调用,而无需使用任何文本间文字。已编辑以清理解决方案,并显示更多使用示例。已重新编辑以在离开方程环境后忽略空格。

\documentclass{article}

\def\leftalgn{0.45}\def\rightalgn{0.45}
\def\algnrow{\rule{\leftalgn\textwidth}{0ex}&\rule{\rightalgn\textwidth}{0ex}}
% CONSTRAINTS:
% equation label must fit in {1 -\leftalgn -\rightalgn}\textwidth
% \leftalgn must be larger than any text to left of align character
% \rightalgn must be larger than any text to right of align character
\newenvironment{algneqn}{%
  \arraycolsep=0ex\renewcommand\arraystretch{0}%
  \begin{equation}%
  \begin{array}{rl}%
  \algnrow\\}%
 {\\\algnrow%
  \end{array}%
  \end{equation}\ignorespacesafterend%
}
\def\snug#1{\vspace*{-#1\baselineskip}}
\begin{document}
I will align all equal signs using the newly created \verb|algneqn|
environment, which can be used throughout the document.  I am setting
\verb|\leftalgn| to 0.45 and \verb|\rightalgn| to 0.45, and setting the
tab character before the equal sign.
  \begin{algneqn}\label{s1}
  y&=z+r+c
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...
  \begin{algneqn}\label{s2}
  y_{321}&=z_3+r_2+c_1 + x
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...
  \begin{algneqn}\label{s2}
  y_{321} - \left(z_3+r_2+c_1 + x\right) &= 0
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...

Now, I will try a constant indent by resetting the two parameters:
\verb|\leftalgn| to 0.1 and \verb|\rightalgn| to 0.8.  Then, I set tab
character at the beginning of equation.
\def\leftalgn{0.1}\def\rightalgn{0.8}
  \begin{algneqn}\label{s1}
  &y=z+r+c
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...
  \begin{algneqn}\label{s2}
  &y_{321}=z_3+r_2+c_1 + x
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...\\
I have introduced the \verb|\snug{}| command to take care of the fact
that short-width \verb|algneqn|'s will not autosnug\\
SHORT
\snug{.8}% THIS \snug IS TO CORRECT FACT THAT algneqn WILL NOT AUTO-SNUG
  \begin{algneqn}\label{s2}
  &y_{321} - \left(z_3+r_2+c_1 + x\right) = 0
  \end{algneqn}
blabla-blah...blabla-blah...blabla-blah...blabla-blah...

\small
\verb|CONSTRAINTS:|\\
\verb|equation label must fit in {1 -\leftalgn -\rightalgn}\textwidth|\\
\verb|\leftalgn must be larger than any text to left of align character|\\
\verb|\rightalgn must be larger than any text to right of align character|
\end{document}

在此处输入图片描述

该方法于将文档中的所有等号对齐,以便处理多线方程。

相关内容