页面环境(内容)垂直居中

页面环境(内容)垂直居中

请考虑以下示例:

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

在此处输入图片描述

相关内容