每次我写新章节时,我都希望有一页以章节标题为中心。按照 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 的回答。