我正在编写一个文档,其中章节和部分名称非常短(日期)。这使得沿整个页面宽度设置的目录看起来相当可笑。
因此,出于美观原因,我想将目录设置为两列,并将目录标题置于列上方。
尝试了不同的解决方案,但还没有成功。请在下面找到 MWE。
我的尝试:
\documentclass{scrbook}
\usepackage{multicol}
\begin{document}
\section*{Contents} % Manually create heading
\renewcommand{\contentsname}{} % Remove heading name from TOC
% TOC with two columns
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\end{document}
答案1
因为您正在使用 KOMA-Script 类,所以您只需使用\BeforeStartingTOC
和\AfterStartingTOC
添加multicols
环境即可:
\documentclass{scrbook}
\usepackage{multicol}
\BeforeStartingTOC[toc]{\begin{multicols}{2}}
\AfterStartingTOC[toc]{\end{multicols}}
\begin{document}
\tableofcontents
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\end{document}
使用\twocolumns
和\onecolumn
也是可能的。但是为了获得最后一页目录的平衡列,您还需要包balance
:
\documentclass{scrbook}
\usepackage{balance}
\BeforeTOCHead[toc]{\balance\twocolumn}
\AfterStartingTOC[toc]{\onecolumn\nobalance}
\begin{document}
\tableofcontents
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\end{document}
或者
\documentclass{scrbook}
\usepackage{balance}
\unsettoc{toc}{onecolumn}
\begin{document}
\twocolumn\balance
\tableofcontents
\onecolumn\nobalance
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\chapter{A chapter}
\section{A section}
\end{document}
两者的结果是:
有关\BeforeStartingTOC
、和的更多信息\AfterStartingTOC
,请参阅KOMA-Script 使用手册中的章节(当前为第 15.2 节)。\BeforeTOCHead
\unsettoc
tocbasic