使用 \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}}

相關內容