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