在用FiXme調試問題的過程中(由Lars Madsen報道),我遇到了這個問題,恐怕超出了我的專業知識。考慮以下 MWE:
\documentclass{memoir}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}
Theorem
\begin{equation*}
Equation
\end{equation*}
\makeatletter\write\@auxout{\string\relax}\makeatother % spurious vspace
\end{theorem}
\begin{proof}
Proof
\end{proof}
\end{document}
呼叫會\write
在文件中產生虛假的垂直空間(註解此行或呼叫不執行任何操作的巨集來查看差異)。我想了解發生了什麼,以及這是否應該被視為某個地方的錯誤(在定理環境中?)。
謝謝你!
答案1
顯示環境(如證明/定理等)和節標題在可見文字之前和之後添加空格,使用\addvspace
此命令嘗試查看空格是否剛剛添加到垂直列表中,如果是,則不要添加新空格(如果現有空格是)更大。這意味著兩個相鄰定理之間不會有一個雙倍空格(一個定理的結尾和另一個定理的開頭)。 (與原始顯示數學的動作基本相似)
一個whatsit from \write
(或\color
有類似的問題)意味著不可能看到以前的空間,因此後面的環境總是在開始時添加完整的請求空間。
除了不要在那裡添加什麼之外,您無能為力,例如,如果您在 Proof 中的 P 之後添加它就可以了。
expl3xgalley
程式碼解決了這個問題,但它具有巨大的侵入性,它必須捕獲每一個命令嘗試在垂直模式下新增任何內容,並使其延遲其操作並重新排序,以便所有間距都可以合併。