在尝试编写论文标题页时,我意识到我不理解的行为\\
。考虑以下 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}
很明显,\\
与center
类似\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}