编辑重新打开

编辑重新打开

\[ \]在以下 MWE 中,对齐环境之前的大空间由什么造成?我该如何删除它(如果我更改为并删除它,它不会出现amsmath)?

\documentclass{article}

\usepackage[english]{babel}
\usepackage{amsmath,amssymb}
\usepackage{lipsum}

\begin{document}
\setlength{\parskip}{0pt}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\setlength{\abovedisplayshortskip}{0pt}
\setlength{\belowdisplayshortskip}{0pt}

\lipsum*[2]

\lipsum*[2]

\begin{align*}1, 2, 3\end{align*}

\lipsum*[2]

\lipsum*[2]
\end{document}

我读过了对齐环境周围的间距\par(但它不包括之前\align和之后的情况删除对齐周围的垂直空间(但它将空间归因于\parskip,这似乎是错误的:设置\parskip为 0 pt 不会删除空间)。我也读过删除 amsmath 对齐环境中的额外垂直空间删除对齐方程周围的垂直空间,但他们只是说不应该在\par之前留下\align。我很好奇,即使所有看似相关的长度都设置为零,到底是什么导致了这个空白。

编辑重新打开

为什么 LaTeX 会在公式前插入空格?是相关的,但它没有说明原因:它说在源中留下一个空白行会导致出现空格,但它没有说是谁添加了这个空格(这显然是这样的amsmath-specific:常规displaymath不会这样做)。

对齐前不需要的空格*

答案1

你问,

之前的[垂直]空间是从哪里来\align*的?

它来自于输入错误-- 请注意,这不是一个语法错误,但仍然是一个错误 -- 在您的代码中:Display-math 环境永远不应该出现在段落的开头。

在下面的代码中,它保存了你的\setlength指令,其实例align*不是前面有一个段落分隔符没有多余的垂直空白align*;相反,段落分隔符前面确实存在令人讨厌的额外空白。请注意,即使将五个长度参数设置为,也会出现这种情况0pt

总结一下:永远不要用 display-math 环境来开始一个段落。这不仅从排版角度来看是糟糕的做法,而且从话语/解释角度来看也是糟糕的做法。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,lipsum}

\begin{document}
\setlength{\parskip}{0pt}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\setlength{\abovedisplayshortskip}{0pt}
\setlength{\belowdisplayshortskip}{0pt}
\lipsum*[2] 
\begin{align*}1, 2, 3\end{align*} % no paragraph break before  this 'align*'
\lipsum*[2] 

\begin{align*}1, 2, 3\end{align*} % paragraph break before this 'align*'
\lipsum*[2]
\end{document}

答案2

不确定实际原因,但我设法通过放置\vspace{0.2em}

\begin{document}
\setlength{\parskip}{0pt}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\setlength{\abovedisplayshortskip}{0pt}
\setlength{\belowdisplayshortskip}{0pt}

\lipsum*[2]

\lipsum*[2]
\vspace{0.2em}
\begin{align*}1, 2, 3\end{align*}

\lipsum*[2]

\lipsum*[2]

\end{document}

相关内容