我的 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}
该方法于将文档中的所有等号对齐,以便处理多线方程。