
Ao tentar compilar uma página de título para minha dissertação, percebi que não entendo o comportamento do \\
. Considere o seguinte 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}
o que produz um espaçamento ruim antes da última linha. Parece que:
{\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
ou
{\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
pode servir como uma solução alternativa. Nenhum deles é intuitivo para mim.
- Qual é a maneira correta de lidar com as quebras de linha aqui (com espaçamento vertical ajustado manualmente)?
- Por que isso está acontecendo?Ensina-me a pescar. Por que
\\
se comporta dessa maneira? Cadêdocumentado?
Responder1
O seguinte é retirado deTeX por tópico(seção17.2.1 Finalizando um parágrafo e um grupo ao mesmo tempo, pág. 167):
Se um parágrafo for colocado em um grupo, pode ser necessário garantir que o
\par
final do parágrafo ocorra dentro do grupo. Os parâmetros que influenciam a composição do parágrafo, como o\leftskip
e o\baselineskip
, só são visualizados quando o parágrafo é finalizado. Terminando assim um parágrafo com... last words.}\par
faz com que sejam utilizados os valores que prevalecem fora do grupo, em vez dos que estão dentro.
Melhores maneiras de terminar o parágrafo são
... last words.\par}
ou
... last words.\medskip}
No segundo exemplo o comando vertical
\medskip
faz com que o\par
token seja inserido.
A partir disso fica claro que você deve terminar um parágrafo antes do grupo terminar. No entanto, como center
forma um grupo, é mais simples de usar
\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}
e evitar o grupo/ \par
problema.
Outra coisa a perceber é que o center
ambiente redefine a forma como \\
funciona. O seguinte é retirado delatex.ltx
(qualmemoir
usa como está) - adicionei alguns comentários:
\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}
É claro que \\
in center
é semelhante a \par
, dando origem a uma solução alternativa que você mencionou
{
...
Dragons\\
}% Title
Responder2
não utilize o {..}
interior do center
ambiente, ele já é local. E então você obterá um bom resultado \par
no final do center
ambiente (feito pelo próprio ambiente):
\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}
Responder3
todos os outros já deram a resposta óbvia e correta – o grupo precisa terminar com \par
.
mas como também se deseja abrir a linha de base uniformemente, o exemplo pode ser simplificado:
\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}
Responder4
Isso ocorre porque o parágrafo dentro do ambiente não terminou. Espero que uma das soluções (equivalentes) a seguir seja intuitiva para você.
\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}