单栏 scrbook 中的双栏目录

单栏 scrbook 中的双栏目录

我正在使用scrbook(KOMA-script 的书籍文档类),它总体上是单列文档。但是,正如我所拥有的\setcounter{tocdepth}{0},我的目录相对松散且简短,我希望目录分为两列。

我的第一次尝试只是看看当我传递twocolumn给类并使用它\unsettoc{toc}{onecolumn}允许目录分为两列时它是如何工作的。(出于某种原因,似乎即使对于两列文档,KOMA-script 也会默认将目录设置为两列,这里我们让这种情况发生。)结果,至少在目录页面上,正是我想要的。但是,显然这会使整个文档分为两列,而我希望它分为一列。

使用\twocolumn\tableofcontents\onecolumn代替\tableofcontents,同时具有\unsettoc{toc}{onecolumn}主动性,可产生几乎正确的结果。但是,目录的标题“目录”比其原始位置略微上移。这使得它与文档的其余部分不一致,因此有点难看。是否可以将目录的内容放在两列中,同时将其标题排版为与一列完全相同?

答案1

不同之处在于,正常文本以\vskip\topskipwhile开头\twocolumn[...],而\@topnewpage[...]do not 开头。这究竟是故意的还是疏忽,还有待观察。

\documentclass{scrbook}
\usepackage{showframe}

\begin{document}
\noindent\rule{\textwidth}{1pt}% demonstrate the problem
\twocolumn[\rule{\textwidth}{1pt}]
\onecolumn
\chapter*{\contentsname}
\def\contentsname{\raisebox{-\topskip}{Contents}}% this will fix it
\twocolumn
\chapter*{\contentsname}
\onecolumn
\end{document}

相关内容