\\中心環境內的行為

\\中心環境內的行為

在嘗試為我的論文寫標題頁時,我意識到我不理解\\.考慮以下 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}

在此輸入影像描述

相關內容