我正在使用scrbook
(KOMA-script 的书籍文档类),它总体上是单列文档。但是,正如我所拥有的\setcounter{tocdepth}{0}
,我的目录相对松散且简短,我希望目录分为两列。
我的第一次尝试只是看看当我传递twocolumn
给类并使用它\unsettoc{toc}{onecolumn}
允许目录分为两列时它是如何工作的。(出于某种原因,似乎即使对于两列文档,KOMA-script 也会默认将目录设置为两列,这里我们让这种情况发生。)结果,至少在目录页面上,正是我想要的。但是,显然这会使整个文档分为两列,而我希望它分为一列。
使用\twocolumn\tableofcontents\onecolumn
代替\tableofcontents
,同时具有\unsettoc{toc}{onecolumn}
主动性,可产生几乎正确的结果。但是,目录的标题“目录”比其原始位置略微上移。这使得它与文档的其余部分不一致,因此有点难看。是否可以将目录的内容放在两列中,同时将其标题排版为与一列完全相同?
答案1
不同之处在于,正常文本以\vskip\topskip
while开头\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}