這是我的第一篇文章,我希望它不會與現有的東西太多餘。使用 Latex 一段時間後,但總是採用非常實用的方法,我總是對 \vspace 命令感到困惑,我覺得這有點違反直覺。
在下面的最小範例中,我正在尋找在註釋的“skipspace”巨集指示的各個位置手動添加白色垂直空間的命令(是的,我知道它很難看!)。
\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length
\begin{document}
First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
%\skipspace1{\addspace}
$$
x=5,
$$
%\skipspace2{\addspace}
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
$$
x=5.
$$
%\skipspace3{\addspace}
Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
%\skipspace4{\addspace}
This is the same paragraph continuing after the break.
%\skipspace5{\addspace}
Third paragraph~: whatever. As far as I'm concerned, the example is over,
but multiple-line paragraphs definitely look better.
\end{document}
根據我的經驗,位置「1」和「5」可以很好地由 \vspace 處理,而位置「2」、「3」和「4」每次都需要進行一些調整(因為 \vspace 在新行的開始)。目前,我使用了一個基於一行空白的醜陋黑客:
對於情況 2 和 4,可進行以下操作:
\ \vspace{\addspace}\\[-\baselineskip]
對於情況 3,請執行以下操作:
\ \vspace{\addspace}\\[-2\baselineskip]
現在我的問題是:是否有一個通用巨集(比我的駭客更漂亮)可以共同處理「2」、「3」和「4」的情況?宏可以直接處理全部5個案例?
預先感謝您的時間和解釋,
霍華德
編輯:感謝大衛卡萊爾的回复,您可以在下面找到我的自我回答
答案1
如果\vspace
在垂直模式下使用,則在該點上新增空間。如果以水平模式添加,則會延遲,直到將段落分成行,然後在包含具有延遲空間的節點的行之後添加空間。
水平模式下的行為是合理的,但很少需要,因此簡單的規則總是在前面留一個空白行\vspace
。
另一個需要注意的規則是,你不應該在顯示數學之前留下空行($$
在乳膠中不應該用 標記,但同樣適用於\[
)。
\ \vspace{\addspace}\\[-2\baselineskip]
是一個非常奇怪的結構:如果在垂直模式下使用,它將以段落縮排開始一個段落,然後是一個強制的單字空間,然後是\
一個強制的中斷,\\
如果中斷後的行後面有一個空行,則該行將為空並產生一個未滿的內容hbox 警告。然後該段落將結束,因此\addspace
將添加到第一條白線之後。因此,您將產生兩個白色水平盒,它們不會在分頁符號處被丟棄,並且\addspace - 2\baselineskip
之間有空間。這看起來類似於一個空格,\addspace
但與上方和下方文字的交互會有所不同,並且分頁符處的行為將完全錯誤,允許在兩條白線之間出現分頁符並在頂部產生異常白線下一頁。
答案2
感謝 David Carlisle 的回复,我認為「情況 3」(在方程式和下一段之間插入空格)也可以使用 \vspace 輕鬆完成,除非您必須將其插入兩個空行之間。所以如果我總結一下我目前的解決方案,那就是~:
\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length
\newcommand{\myvspace}[1]{\ \vspace{#1}\\[-baselineskip]} % home-made ugly macro
\begin{document}
First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
\vspace{\addspace} % CASE 1
\[
x=5,
\]
\myvspace{\addspace} % CASE 2
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
\[
x=5.
\]
\vspace{\addspace} % CASE 3... blank lines above and below are important to enter vertical mode
Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
\myvspace{\addspace} % CASE 4
This is the same paragraph continuing after the break.
\vspace{\addspace} % CASE 5
Third paragraph~: whatever.
\end{document}
所以看來我可以用\vspace (對於情況1,3,5)和我醜陋的自製宏\myvspace (對於情況2 和4)做我想做的一切......這或多或少都可以。感謝所有人,特別是 David,他向我指出了水平模式和垂直模式之間的差異。
霍華德