如何全域改變方程式周圍的間距?

如何全域改變方程式周圍的間距?

我怎樣才能在環境周圍設置“上方”和“下方”虛擬空間equation

如果可以對subequationsgather環境執行相同的操作,這將是一個額外的好處。

答案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}

相關內容