请考虑以下示例:
\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
。在上面的代码中启用它之后,结果是: