我无法将两个align
环境中的条目居中=
。我尝试了此建议的解决方案
邮政问题依旧,下面代码借用自同一篇文章,做了一些修改:
\documentclass[12pt,english]{article}
\usepackage{mathtools}
\begin{document}
\begin{align}
n&=n(ak_1+bl_1)
\end{align}
words
\begin{align}
n&=ak_n+bl_n\\
&=ak_n+abx+bl_n-abx
\end{align}
more words
\end{document}
输出:
从输出中可以明显看出,方程式(2)
和(3)
与不同没有居中对齐(1)
。如何解决这个问题?
编辑
按照这个解决方案邮政涉及将两个对齐环境合并为一个。但是,有时在某些情况下无法做到这一点,例如,如果section
两个环境之间出现一个align
,或者如果两个环境之间放置了大量文本align
。
答案1
我必须承认,我并不“理解”希望=
在align
由文档的主要结构元素(例如节级标题(或任何节标题的级别,确实如此)。
但是,如果您确实必须执行这种=
符号对齐,我可以想到至少两种方法;如下所示。
第一步涉及测量下部环境中最长的右侧元素,并使用此长度信息为上部环境中右侧元素之一上的材料
align
创建。\parbox
align
第二种方法是使用单个
align
环境并将\section
指令放在包装器中\intertext
。是的,这确实有效,尽管看起来很奇怪。
第二种方法似乎更容易实现。但是,第一种方法提供了更多的排版灵活性,例如允许在节标题正上方进行分页。(“在节标题之前进行分页?真是个概念!”,亚科夫·斯米尔诺夫可能会惊呼。)第一种方法的另一个优点是空白的数量看起来更自然多于节标题。
\documentclass[12pt]{article}
\usepackage{mathtools}
\newlength\mylen
\settowidth\mylen{$\displaystyle ak_n+abx+bl_n-abx$}
\begin{document}
%% Solution 1
\noindent
words
\begin{align}
n&=\parbox{\mylen}{$\displaystyle n(ak_1+bl_1)$}
\end{align}
\section{First random section title}
\begin{align}
n&=ak_n+bl_n\\
&=ak_n+abx+bl_n-abx
\end{align}
more words
\bigskip
\hrule
\bigskip
%% Solution 2
\noindent
words
\begin{align}
n&=n(ak_1+bl_1)
\intertext{\section{Second random section title}}
n&=ak_n+bl_n\\
&=ak_n+abx+bl_n-abx
\end{align}
more words
\end{document}
答案2
在这种特殊情况下,使用常规方法\noalign
在对齐线之间插入垂直材料似乎有效,尽管我认为它不受官方支持。
编辑:这是一个坏主意,因为它没有考虑到惩罚行跳过,\intertext
宏可以做类似的事情,正如 campa 提到的
\documentclass{article}
\usepackage{mathtools}
\begin{document}
words
\begin{align}
n&=\displaystyle n(ak_1+bl_1) \\
\noalign{%
\vskip\belowdisplayskip \section{First random section title}
\vskip\abovedisplayskip
}
n&=ak_n+bl_n \\
&=ak_n+abx+bl_n-abx
\end{align}
more words
\end{document}