
在嘗試為我的論文寫標題頁時,我意識到我不理解\\
.考慮以下 MWE
\documentclass{memoir}
\begin{document}
\begin{center}
{\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons
}% Title
\end{center}
\end{document}
這會在最後一行之前產生不良間距。看起來像是:
{\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.5\baselineskip]
Dragons
}% Title
或者
{\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons\\
}% Title
可以作為一種解決方法。它們對我來說都不直觀。
- 處理這裡換行的正確方法是什麼(手動調整垂直間距)?
- 為什麼會發生這種情況?教我如何釣魚。為什麼
\\
會有這樣的行為?它在哪裡有記錄的?
答案1
以下內容摘自TeX 按主題(部分17.2.1 同時結束段落和組,第 167 頁):
如果段落設定在群組中,則可能需要確保
\par
段落結尾出現在群組內。影響段落排版的參數,例如 和\leftskip
,\baselineskip
僅在段落完成時才會查看。因此結束一個段落... last words.}\par
導致使用組外流行的值,而不是組內的值。
結束段落的更好方法是
... last words.\par}
或者
... last words.\medskip}
在第二個範例中,垂直命令
\medskip
導致\par
插入令牌。
由此可見,您應該在小組結束之前完成一個段落。但是,由於center
本身形成一個群組,因此使用最簡單
\begin{center}
\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons
\end{center}
並避免群體/\par
議題。
另一件需要意識到的事情是center
環境重新定義了工作方式\\
。以下內容摘自latex.ltx
(哪個memoir
按原樣使用)-我添加了一些評論:
\message{center,}
\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
\par\@ifstar{\nobreak\@xcentercr}\@xcentercr}% \@centercr is \par (with more stuff)
\def\@xcentercr{\addvspace{-\parskip}\@ifnextchar
[\@icentercr\ignorespaces}
\def\@icentercr[#1]{\vskip #1\ignorespaces}
\def\center{\trivlist \centering\item\relax}% \begin{center}
\def\endcenter{\endtrivlist}% \end{center}
\def\centering{% Called when using \begin{center}
\let\\\@centercr% \\ is redefined to be \@centercr
\rightskip\@flushglue\leftskip\@flushglue
\parindent\z@\parfillskip\z@skip}
很明顯,\\
incenter
類似於\par
,產生了您提到的一種解決方法
{
...
Dragons\\
}% Title
答案2
不要使用環境{..}
內部center
,它已經是本地的。然後你會在環境\par
結束時得到一個正確的center
結果(由環境本身完成):
\documentclass{memoir}
\begin{document}
\begin{center}
\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons
\end{center}
default font size and shape
\end{document}
答案3
其他人都已經給出了明顯的正確答案 - 該組需要以 結束\par
。
但由於也希望統一打開基線,因此範例可以簡化:
\documentclass{memoir}
\begin{document}
\begin{center}
{\Huge\bfseries
\baselineskip=1.25\baselineskip
Eat fresh tires to\\
Get Ready to the Ultimate\\
Victory Against the\\
Dragons
\par
}% Title
\end{center}
\end{document}
答案4
這是因為環境內的段落沒有結束。我希望以下(等效)解決方案之一對您來說是直觀的。
\documentclass{memoir}
\begin{document}
\begin{center}
{\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons
}% Title
\end{center}
\begin{center}
{\Huge\bfseries%
Eat fresh tires to\\[0.25\baselineskip]
Get Ready to the Ultimate\\[0.25\baselineskip]
Victory Against the\\[0.25\baselineskip]
Dragons\par
}% Title
\end{center}