减少目录中行距的最简单方法是什么?

减少目录中行距的最简单方法是什么?

使用我正在编写的报告的 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}

在此处输入图片描述

相关内容