使用 \cleardoublepage 和 \newgeometry 时插入额外的空白页

使用 \cleardoublepage 和 \newgeometry 时插入额外的空白页

使用report带有twosideopenright选项的类,我定义了一个函数,\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}}

相关内容