两个对齐环境未居中

两个对齐环境未居中

我无法将两个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创建。\parboxalign

  • 第二种方法是使用单个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}

输出

相关内容