使用report
带有twoside
和openright
选项的类,我定义了一个函数,\mycentered[1]
以在目录之前显示垂直和水平对齐(在页面中心)的引文。
文本显示正确,\cleardoublepage
使用时\tableofcontents
只会插入一个空白页。但是,如果我在页面清除和目录之间使用\newgometry
(由包提供),则会插入三个空白页。但是,如果我用一些文本替换,则不会插入这些页面。如何避免添加这两个额外的页面?geometry
\mycentered
在以下 MWE 中,页面样式也发生了变化,只是为了显示引入了额外的空白页后明确的\cleardoublepage
。
\documentclass[a4paper,twoside,openright]{report}
\usepackage[top=2cm,bottom=2cm]{geometry}
\newcommand\mycentered[1]{\topskip0pt\vspace*{\fill}{\centering#1\par}\vspace*{\fill}}
\def\mytextblock{
This is some text
with several paragraphs
}
\begin{document}
\pagestyle{empty}
\mycentered{\mytextblock}
\cleardoublepage
\pagestyle{plain}
\newgeometry{top=3cm,bottom=3cm}
\tableofcontents
\chapter{First}
\end{document}
我尝试过移除\topskip0pt
,空白页问题解决了。但是内容并没有真正居中,因为顶部留了一些空间。对于不太长的引文来说,这一点并不明显,但下图显示了如果用于垂直居中较大的块,就会出现差异。左侧\topskip0pt
显示了带有该引文的结果,右侧则叠加了不带有该引文的结果。
答案1
明确地补偿\topskip
,而不是将其设置为0pt
,解决了这个问题,并且不会在顶部放置多余的空间。
\newcommand\th@centered[1]{\hbox{}\vspace*{-\topskip}\vspace*{\fill}{\centering#1\par}\vspace{\fill}}