TeX 的 \write 指令有時會產生虛假的垂直空間

TeX 的 \write 指令有時會產生虛假的垂直空間

在用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程式碼解決了這個問題,但它具有巨大的侵入性,它必須捕獲每一個命令嘗試在垂直模式下新增任何內容,並使其延遲其操作並重新排序,以便所有間距都可以合併。

相關內容