Поведение \\ внутри центральной среды

Поведение \\ внутри центральной среды

Пытаясь составить титульный лист для своей диссертации, я понял, что не понимаю поведение \\. Рассмотрим следующий 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}

Очевидно, что \\in 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}

введите описание изображения здесь

Связанный контент