環境(のコンテンツ)をページ上で垂直に中央揃えにする

環境(のコンテンツ)をページ上で垂直に中央揃えにする

次の例を考えてみましょう。

\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環境のコンテンツをページの中央に垂直に配置したいのですが、コードをコンパイルすると、これが実現されないことがわかります。どうすれば修正できますか?

PS 私はコードを「盗んだ」だけです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}

4 つの行を有効にすると\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}

ここに画像の説明を入力してください

関連情報