Вертикально центрировать (содержимое) среды на странице

Вертикально центрировать (содержимое) среды на странице

Рассмотрим следующий пример:

\documentclass[
  12pt,
  landscape
]{article}

\usepackage[
  a6paper,
  margin = 0cm
]{geometry}
\usepackage{lmodern}

\newenvironment{horse}
{
 \topskip0pt
 \vspace*{\fill}
 \begin{center}
 \fontsize{50}{56}\selectfont
 }
{
 \end{center}
 \vspace*{\fill}
 %
}

\pagestyle{empty}


\begin{document}

\begin{horse}
  Alle lande\\[0.5ex] og\\[0.5ex] deres hovedst{\ae}der
\end{horse}

\end{document}

выход

Я хотел бы, чтобы содержимое окружения horseбыло размещено вертикально по центру страницы. Как видно, если код скомпилирован, этого не происходит; как это исправить?

P.S. Я просто "украл" код изhttps://tex.stackexchange.com/a/2327/15874и немного его модифицировал.

решение1

Немного упрощенный пример ( \centeringвместо centerкомментариев окружения и концов строк):

\documentclass[
  12pt,
  landscape
]{article}

\usepackage[
  a6paper,
  margin = 0cm
]{geometry}
\usepackage{lmodern}

\newenvironment{horse}{%
  \setlength{\topskip}{0pt}%
  \centering
  \vspace*{\fill}%
  % \nointerlineskip
  \fontsize{50}{56}\selectfont
  % \sbox0{Alle lande}%
  % \showthe\ht0
}{%
  \par
  \vspace{\fill}%
  % \setlength{\showboxdepth}{\maxdimen}%
  % \setlength{\showboxbreadth}{\maxdimen}%
  % \tracingonline=1 %
  % \showlists
}

\pagestyle{empty}


\begin{document}

\begin{horse}
  Alle lande\\[0.5ex] og\\[0.5ex] deres hovedst{\ae}der
\end{horse}

\end{document}

Включение четырех линий с \showlistsраскрывающимися данными:

### current page:
\write-{}
\glue(\topskip) 0.0
\rule(0.0+0.0)x*
\penalty 10000
\glue 0.0 plus 1.0fill
\glue 0.0
\glue(\parskip) 0.0 plus 1.0
\glue(\baselineskip) 21.83911
\hbox(34.16089+0.0)x421.10078, glue set 109.61919fil
.\glue(\leftskip) 0.0 plus 1.0fil
.\hbox(0.0+0.0)x0.0
.\OT1/lmr/m/n/50 A
.\OT1/lmr/m/n/50 l
.\OT1/lmr/m/n/50 l
.\OT1/lmr/m/n/50 e

Все хорошо, за исключением большого вклада \baselineskip. Высота первой строки 34.16089pt, но межстрочный интервал 56pt. Разница добавляется поверх первой строки:

\glue(\baselineskip) 21.83911

Это можно отключить с помощью \nointerlineskip. После включения этого в коде выше результат будет следующим:

Результат

решение2

пытаться

\newcommand\HUGE{\fontsize{50}{56}\selectfont}

\newenvironment{horse}
  {\vspace*{\fill}
   \centering\HUGE}
  {\vfill~\newpage}

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

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