![如何在双列文档(KOMA 类 scrbook)的单独页面上显示章节标题?](https://linux22.com/image/350604/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8F%8C%E5%88%97%E6%96%87%E6%A1%A3%EF%BC%88KOMA%20%E7%B1%BB%20scrbook%EF%BC%89%E7%9A%84%E5%8D%95%E7%8B%AC%E9%A1%B5%E9%9D%A2%E4%B8%8A%E6%98%BE%E7%A4%BA%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%EF%BC%9F.png)
scrbook
我正在使用中的类编写文档KOMA-script
。我的问题是我想要一个chapter
命令,无论我是否使用选项,它都会在空白页上水平和垂直居中显示章节标题twocolumn
。我已经有一些代码,当它是单列布局时可以正常工作。
所以我眼前的问题是试图找到一个可行的方法\KOMAoptions{twocolumn}
,然后我就可以解决剩下的问题,可能使用一些条件代码,这样无论它是否是两列都可以工作(这是我的想法)。
这是我用于普通单列文档的(工作)代码:
\DeclareDocumentCommand\chapterheadstartvskip {}{\vspace*{-\topskip}\vfill}
\DeclareDocumentCommand\chapterheadendvskip {}{\vfill\clearpage}
\DeclareDocumentCommand\chaptermarkformat {}{}
\DeclareDocumentCommand\chapterformat {}{}
\DeclareDocumentCommand\chapterlinesformat {mmm} {%
#2\par
{\centering #3}
}
当我切换到双栏布局时,\KOMAoptions{twocolumn}
我发现它不再这样工作了。我认为这是因为\clearpage
毕竟只会清除一页,但即使添加多页也\null\newpage
不会添加新页面,而只是在章节标题下方添加一些空白。
我尝试使用\onecolumn
和\twocolumn
切换,但它在重新定义各种命令时不起作用\chapter
。以下是 MWE 的说明:
\documentclass[oneside]{scrbook}
\KOMAoptions{twocolumn}
\usepackage{xparse}
\usepackage{blindtext}
\DeclareDocumentCommand\chapterheadstartvskip {}{%
\onecolumn
\vspace*{-\topskip}\vfill
}
\DeclareDocumentCommand\chapterheadendvskip {}{%
\vfill\clearpage
\twocolumn %if this omitted, chapter text simply disappears
}
\DeclareDocumentCommand\chaptermarkformat {}{}
\DeclareDocumentCommand\chapterformat {}{}
\DeclareDocumentCommand\chapterlinesformat {mmm} {%
#2\par
{\centering #3}
}
\begin{document}
%Works fine, display "Test" vertically centered
\onecolumn
\vspace*{-\topskip}\vfill
Test
\vfill\clearpage
\twocolumn
%Works fine, display "Test" vertically centered
\vspace*{-\topskip}\vfill
Test
\vfill\cleardoublepage
%Doesn't display "Chapter" on a single page horizontally and vertically centered.
\chapter{Chapter}
\blindtext
\end{document}
我怎样才能达到预期的效果?
我的第二个问题是,如果我省略开关\twocolumn
,\chapterheadendvskip
那么章节文本就会消失,为什么?
答案1
您可以将style
部分级别更改chapter
为part
:
\documentclass[oneside]{scrbook}
\KOMAoptions{twocolumn}
\usepackage{xparse}
\usepackage{blindtext}
\DeclareDocumentCommand\chaptermarkformat {}{}
\DeclareDocumentCommand\chapterformat {}{}
\RedeclareSectionCommand[
style=part,
innerskip=0pt,
beforeskip=\fill,
afterskip=\fill
]{chapter}
\begin{document}
% Works fine, display "Test" vertically centered
\onecolumn
\vspace*{-\topskip}\vfill
Test
\vfill\clearpage
\twocolumn
\chapter{Chapter}
\blindtext
\end{document}