在頁面上垂直居中環境(的內容)

在頁面上垂直居中環境(的內容)

考慮以下範例:

\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}

啟用四行\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}

在此輸入影像描述

相關內容