尽管使用了 openany/oneside(KOMA 脚本),使用 \chapterlinesformat 后,\chapter 前仍出现神秘空白页

尽管使用了 openany/oneside(KOMA 脚本),使用 \chapterlinesformat 后,\chapter 前仍出现神秘空白页

每次我写新章节时,我都希望有一页以章节标题为中心。按照 KOMA 脚本文档并在网上查找,我通过重新定义 成功做到了这一点\chapterlinesformat

这是我不明白的:

  • 如果我使用我的代码将文档中的某些内容居中,则一切都正常
  • 如果我使用相同的代码重写\chapterlinesformat,则会出现空白页
  • 因此,\chapterlinesformat在写章节之前明确地做某事。

在线搜索很快告诉我,章节前的空白页通常是由于奇数/偶数页或类似原因造成的,而快速修复方法是使用 openany/oneside 选项。我尝试查看 KOMA-script 文档以了解此空白页的来源,但没有成功。

这是我的 MWE:

\documentclass[oneside, openany]{scrbook}
\usepackage{xparse}
\usepackage{blindtext}

\DeclareDocumentCommand\chapterheadstartvskip {}{}
\DeclareDocumentCommand\chapterheadendvskip {}{}

\DeclareDocumentCommand\chapterlinesformat {mmm}
    {
    \clearpage %need to be removed for no blank page before \chapter, why?
    \topskip0pt
    \vspace*{\fill}
    \begin{center}
    #3
    \end{center}
    \vfill
    \clearpage
    }

\begin{document}

\blindtext

% DO NOT PRODUCE BLANK PAGE BEFORE Test
\clearpage
\topskip0pt
\vspace*{\fill}
\begin{center}
Test
\end{center}
\vfill
\clearpage

\blindtext
%BLANK PAGE before Chapter, why?
\chapter{Chapter}

\blindtext

\end{document}

答案1

无需重新定义\chapterlinesformat。您可以简单地重新定义\chapterheadstartvskip\chapterheadendvskip\raggedchapter\chapterformat获得

在此处输入图片描述

\documentclass[oneside]{scrbook}
\usepackage{blindtext}

\renewcommand*\chapterheadstartvskip{\vspace*{-\topskip}\vfill}
\renewcommand*\chapterheadendvskip{\vfill\clearpage}
\renewcommand*\raggedchapter{\centering}
\renewcommand*\chapterformat{}

\begin{document}
\clearpage
\vspace*{-\topskip}
\vfill
\begin{center}
Test
\end{center}
\vfill
\clearpage
\blindtext
\chapter{Chapter}
\blindtext
\end{document}

您可以重新定义\chapterformat以更改章节号的布局。简单示例:

\documentclass[oneside]{scrbook}
\usepackage{blindtext}

\usepackage{tikzpagenodes}

\renewcommand*\chapterheadstartvskip{\vspace*{-\topskip}\vfill}
\renewcommand*\chapterheadendvskip{\vfill\clearpage}

\renewcommand*\raggedchapter{\centering}
\renewcommand*\chapterformat{%
  \tikz[remember picture,overlay]
    \path(current page text area.center)node[scale=30,lightgray]{\thechapter};%
}

\begin{document}
\clearpage
\vspace*{-\topskip}
\vfill
\begin{center}
Test
\end{center}
\vfill
\clearpage
\blindtext

\chapter{Chapter}
\blindtext
\end{document}

结果:

在此处输入图片描述

答案2

我的问题的答案很简单,\chapter发出一个\clearpage或,因此由于在我创建的命令的开头\cleardoublepage已经有一个,所以当我调用时会创建一个空白页\clearpage\chapterlinesformat\chapter

感谢 campa 的回答。

相关内容