为什么方程式识别上面的部分,而对齐却不识别

为什么方程式识别上面的部分,而对齐却不识别

我将方程式放在节标题之后、节标题之前或两者之间。我知道不建议这样做,但我相信在我的上下文中它看起来更好。我注意到一件有趣的事情是\[...\](我认为只是映射到\begin{equation*}...\end{equation*})识别出上方是否有\section{...}并相应地调整空间。但是,\begin{align*}...\end{align*}不会:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[margin=1.0in]{geometry}
\usepackage{microtype}
\usepackage[fleqn]{mathtools}

\setlength{\mathindent}{0pt}
\setlength{\parindent}{0pt}

\newlength{\wthis}        % used to make rule look nice with normal text
\settowidth{\wthis}{This}

\begin{document}
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\[
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\]
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\vspace{2em}
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\begin{equation*}
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\end{equation*}
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\vspace{2em}
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\begin{align*}
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\end{align*}
\section*{\rlap{\rule{10cm}{0.4pt}}TEST}
\vspace{4em}
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.
\[
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\]
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.\par
\vspace{2em}
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.
\begin{equation*}
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\end{equation*}
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.\par
\vspace{2em}
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.
\begin{align*}
  \rlap{\rule{10cm}{0.4pt}}
  a^2 + b^2 = c^2
\end{align*}
This\rlap{\hspace{-\wthis}\rule{10cm}{0.4pt}} is a line of text for testing purposes.
\end{document}

在此处输入图片描述

在文本中,所有这些方法都如预期一样具有额外的空间,因此看起来不错。我的问题是,当它们被放置在 s 之后和\sections 之前的奇怪位置时。

是否有理由将这个额外的空间添加到align而不是equation?我认为,如果其中一个功能可用,则另一个功能应该也一样。此外,为什么这对下面的额外空间不起作用(两者都添加了额外的空间\belowdisplayskip)?\[...\]/\begin{equation*}...\end{equation*}是否只能识别\section上面的 s?

笔记:我没有使用align*这些基本方程的环境。我只是使用这个基本方程,以便在所有三个(实际上是两个)环境中使用相同的文本。

答案1

“原始” \[...\]以及 环境equation使用 TeX 的垂直空间机制。 如果之前的行较短,\abovedisplayshortskip则将使用 代替\abovedisplayskip

amsmath包( gather, , ...)的环境align使用方程式 (多行、方程式编号的自动移动,...) 使事情变得更加复杂。因此,它仅使用\abovedisplayskip

带有调试代码的示例以显示主垂直列表:

\documentclass{article}
\usepackage[a6paper]{geometry}
\usepackage{amsmath}

\begin{document}

\section{Test}
\[ E=mc^2 \]
\section{Test}
\begin{align*} E=mc^2 \end{align*}
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\tracingonline=1
\showlists
\end{document}

结果

相关内容