\cleardoublepage 및 \newgeometry를 사용할 때 추가 빈 페이지가 삽입됨

\cleardoublepage 및 \newgeometry를 사용할 때 추가 빈 페이지가 삽입됨

및 옵션이 report있는 클래스를 사용하여 목차 앞에 수직 및 수평 정렬(페이지 중앙에) 인용문을 표시하는 함수를 정의했습니다 .twosideopenright\mycentered[1]

텍스트가 올바르게 표시되고 빈 페이지가 삽입되기 \cleardoublepage전에 를 사용 하면 됩니다. 그런데 페이지 정리와 목차 사이에 (패키지 제공 ) \tableofcontents사용하면 빈 페이지 3개가 삽입됩니다. 그러나 일부 텍스트로 바꾸면 해당 페이지가 삽입되지 않습니다. 두 개의 추가 페이지가 추가되는 것을 어떻게 방지할 수 있습니까?\newgometrygeometry\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}}

관련 정보