\[
\]
在以下 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}