Comportamento do \\ ambiente central interno

Comportamento do \\ ambiente central interno

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 \parfinal do parágrafo ocorra dentro do grupo. Os parâmetros que influenciam a composição do parágrafo, como o \leftskipe 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 \partoken seja inserido.

A partir disso fica claro que você deve terminar um parágrafo antes do grupo terminar. No entanto, como centerforma 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/ \parproblema.


Outra coisa a perceber é que o centerambiente redefine a forma como \\funciona. O seguinte é retirado delatex.ltx(qualmemoirusa 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 centerambiente, ele já é local. E então você obterá um bom resultado \parno final do centerambiente (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}

insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

informação relacionada