
考慮以下範例:
\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
。在上面的程式碼中啟用後,結果是: