![如何全域改變方程式周圍的間距?](https://rvso.com/image/254728/%E5%A6%82%E4%BD%95%E5%85%A8%E5%9F%9F%E6%94%B9%E8%AE%8A%E6%96%B9%E7%A8%8B%E5%BC%8F%E5%91%A8%E5%9C%8D%E7%9A%84%E9%96%93%E8%B7%9D%EF%BC%9F.png)
我怎樣才能在環境周圍設置“上方”和“下方”虛擬空間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}
}
我更喜歡添加 to 的方式,因為重新定義和修補都需要知道文檔類使用\normalsize
的確切定義。\normalsize
我之前在LaTeX 社群論壇,在回答無法在序言中設定垂直空白。
更多資訊可在優秀的數學模式文件.
答案2
作為斯特凡答案的更新。
您的問題應該因重複而關閉。例如:
在展示其他一些方法之前,有一個非常重要的事實:
不要錯過膠水!長度\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}