\cleardoublepage と \newgeometry を使用すると余分な空白ページが挿入される

\cleardoublepage と \newgeometry を使用すると余分な空白ページが挿入される

およびオプションreportを持つクラスを使用して、関数 を定義し、目次の前に垂直および水平に揃えた (ページの中央に) 引用を表示します。twosideopenright\mycentered[1]

テキストは正しく表示され、 が\cleardoublepage使用されると\tableofcontents、空白ページが挿入されるだけです。しかし、ページクリアと目次の間に\newgometry(パッケージで提供される) を使用すると、3 つの空白ページが挿入されます。ただし、テキストに置き換えると、それらのページは挿入されません。これらの 2 つの余分なページが追加されないようにするにはどうすればよいですか?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}}

関連情報