我该如何设置equation
环境周围的“上方”和“下方”的垂直空间?
subequations
如果可以对或环境做同样的事情gather
,这将是一个奖励。
答案1
\abovedisplayskip
您可以调整、\belowdisplayskip
、\abovedisplayshortskip
、的值\belowdisplayshortskip
。这些shortskip
版本用于在显示的方程式之前出现较短文本行的情况:如果文本在显示的方程式开始之前结束,则最好添加较少的垂直空间。
由于文档类通常会定义这些跳过,因此\normalsize
您可以重新定义这个宏,修补它,或者简单地添加它,因为仅在序言中设置值是行不通的。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\g@addto@macro\normalsize{%
\setlength\abovedisplayskip{40pt}
\setlength\belowdisplayskip{40pt}
\setlength\abovedisplayshortskip{40pt}
\setlength\belowdisplayshortskip{40pt}
}
\makeatother
\begin{document}
text
\begin{gather}
1 + 1 = 2
\end{gather}
text
\begin{equation}
1 + 1 = 2
\end{equation}
\end{document}
没有 也可以完成相同的操作\g@addto@macro
,因此不需要任何@
并且不需要\makeatletter
和\makeatother
,通过使用\expandafter
:
\expandafter\def\expandafter\normalsize\expandafter{%
\normalsize
\setlength\abovedisplayskip{40pt}
\setlength\belowdisplayskip{40pt}
\setlength\abovedisplayshortskip{40pt}
\setlength\belowdisplayshortskip{40pt}
}
我更喜欢将 添加到 的方式,因为重新定义和修补都需要知道文档类使用的\normalsize
的确切定义。我之前在\normalsize
LaTeX 社区论坛,回答无法在序言中设置垂直空白。
更多信息请参阅数学模式文档。
答案2
作为Stefan答案的更新。
您的问题应被关闭,因为重复了。您会在这里找到很多问题/答案。例如:
在展示其他方法之前,这里有一个非常重要的事实:
不要错过胶水!长度\abovedisplayskip
等可以用胶水定义,这样你就可以让 LaTeX 更灵活地设置空间。请阅读这个问题/答案:
什么是胶水拉伸?
但是我想展示设置长度的另一种可能性。首先,您可以使用命令\AtBeginDocument
。字体将在文档开头设置,因此钩子将在稍后执行该操作:
\AtBeginDocument{%
\abovedisplayskip=12pt plus 3pt minus 9pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=12pt plus 3pt minus 9pt
\belowdisplayshortskip=7pt plus 3pt minus 4pt
}
该命令\g@addto@macro
是一个内部宏。像etoolbox
或 这样的软件包xpatch
提供了该命令的更强大版本\g@addto@macro
。显示而不是使用内部命令,并且没有特殊处理,@
您可以使用:
\usepackage{etoolbox}
\apptocmd\normalsize{%
\abovedisplayskip=12pt plus 3pt minus 9pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=12pt plus 3pt minus 9pt
\belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}
或者
\usepackage{xpatch}
\xapptocmd\normalsize{%
\abovedisplayskip=12pt plus 3pt minus 9pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=12pt plus 3pt minus 9pt
\belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}
这就是一个简单的例子。你应该尝试一下长度。:
\documentclass{article}
\usepackage{kantlipsum}
\usepackage{xpatch}
\xapptocmd\normalsize{%
\abovedisplayskip=12pt plus 3pt minus 9pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=12pt plus 3pt minus 9pt
\belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}
\usepackage{amsmath}
\begin{document}
\kant[1]
\begin{gather}
1 + 1 = 2
\end{gather}
\kant[1]
\begin{gather}
1 + 1 = 2
\end{gather}
\kant[1]
\begin{subequations}
\begin{equation}
1 + 1 = 2
\end{equation}
\end{subequations}
\kant[1]
\kant[1]
\end{document}