Используя 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}}