我使用的是 Tex 的 MacTex 发行版,并使用 xetex 来扩展字体支持。我的文档类别是“文章”,我正在排版一本小册子。
我似乎找不到如何将序言(由其自己的页面上的多个段落组成)垂直居中在页面内的解决方案。
我已经定义了一个环境来重用序言格式:
\newenvironment{preface}{\thispagestyle{empty}\topskip0pt\vspace*{\fill}\small}{\vspace*{\fill}}
正如您所看到的,我的序言(我计划使用相同样式制作多本小册子)使用较小的文本、“空”页样式并尝试垂直居中。
我不得不说,上面的代码确实试图将内容居中,但它的顶部比它应该的要重。我希望内容上方和下方的空间大小相等。我该如何以最直接的方式实现这一点(如果可能的话,避免使用复杂的 tex 宏)?
最小工作示例:
\documentclass[a5paper]{article}
\newenvironment{preface}{\thispagestyle{empty}\topskip0pt\vspace*{\fill}\small}{\vspace*{\fill}}
\begin{preface}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed rhoncus eros et eros varius adipiscing.
In fringilla, enim quis sagittis fringilla, lorem nulla aliquet purus, id malesuada elit mauris vitae nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer ut fermentum sem. Maecenas dapibus elit sit amet laoreet pellentesque.
Integer nec euismod lectus, eget rutrum lacus. Suspendisse imperdiet auctor turpis. Integer congue condimentum nisl, eu ultrices felis facilisis ac. In hac habitasse platea dictumst. Nam at cursus eros, at posuere tellus. Vivamus ipsum nibh, pellentesque non lacinia nec, porta sed sapien. Suspendisse egestas velit ante, ut iaculis augue sollicitudin eget.
\end{preface}
\end{document}
答案1
默认情况下,顶部和底部的页边距不同。您可以使用geometry
包及其命令\newgeometry
和\restoregeometry
来控制此页面的布局。特别是将vmargin
和设置ignoreheadfoot
为垂直居中将产生垂直居中的文本块。但是,正如 Heiko Obertdiek 指出的那样,仍然存在\topskip
和初始行间跳过,因此也需要删除这些:
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{geometry}
\newenvironment{preface}{\clearpage\setlength{\topskip}{0pt}%
\newgeometry{vmargin=0cm,ignoreheadfoot}%
\thispagestyle{empty}%
\vspace*{\fill}\nointerlineskip\small}%
{\vspace*{\fill}\clearpage\restoregeometry}
\begin{document}
\lipsum[1]
\begin{preface}
\lipsum[2-6]
\end{preface}
\begin{preface}
X\vrule height 295mm Y
\end{preface}
\lipsum[5]
\end{document}
本文件第 3 页仅供参考。A4 纸较高297mm
。第 3 页有顶部
和底部
证明我们的规则295mm
是垂直居中。