使用我正在编写的报告的 scrartcl 类,我希望只有章节显示在目录中。虽然我设法做到了这一点,但在我看来行距太大了,我认为这是目录深度减小的结果:
因此,我想在本地减少行距。我尝试{spacing}
像这样在代码周围放置一个:
\begin{spacing}{0.5}
\setcounter{tocdepth}{1}
\rule{\textwidth}{1pt}
\vspace*{-1cm}
\tableofcontents
\vspace*{-0.5cm}
\rule{\textwidth}{1pt}
\end{spacing}
但这是行不通的。减少此处线路扩展的最简单方法是什么?
答案1
您可以使用目录风格随附的软件包KOMA 脚本捆绑包。但您会收到有关包的 Alpha 状态的警告,因此应谨慎使用它。至少下面的代码可以按预期工作。
\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tocstyle}
\usepackage{babel}
\usepackage{blindtext}
\setcounter{tocdepth}{1}
\newtocstyle{compact}{%
\settocfeature[1]{entryhook}{\bfseries}%
\settocfeature[1]{entryvskip}{0pt plus 2pt}%
\settocfeature[1]{leaders}{\hfill}%
}
\usetocstyle{compact}
\begin{document}
\tableofcontents
\bigskip
\Blinddocument
\end{document}
和往常一样,盲文该包仅用于创建虚拟文本,因此不是解决方案的一部分。
答案2
您可以使用etoolbox
包来修补命令\l@section
,该命令(除其他外)负责在目录中的部分条目之前设置垂直空间。
\documentclass{scrartcl}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\l@section}{1.0em}{\z@}{}{}
\makeatother
\setcounter{tocdepth}{1}
\begin{document}
\tableofcontents
\section{bla}
\section{blubb}
\section{foo}
\subsection{bar}
\end{document}
答案3
自 KOMA-Script 3.20 起,您可以使用tocbeforeskip
命令选项\RedeclareSectionCommand
来更改 TOC 条目前的距离:
\documentclass{scrartcl}[2016/05/10]% Needs at least KOMA-Script 3.20!
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{blindtext}
\setcounter{tocdepth}{1}
\RedeclareSectionCommand[tocbeforeskip=0pt]{section}
\begin{document}
\tableofcontents
\blinddocument\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument\blinddocument\blinddocument
\end{document}