What is the easiest way to decrease the linespread in a table of contents?

You could use the tocstyle package that comes with the KOMA Script bundle. But you will get a warning about the Alpha state of the package so you should use it with caution. At least the below code works as desired.

\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}

And as always, the blindtext package is only for creating dummy text thus not part of the solution.


alt text


You may use the etoolbox package to patch the command \l@section which is (beside other things) responsible for setting the vertical space before a section entry in the ToC.

\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}

Since KOMA-Script 3.20 you can use option tocbeforeskip of command \RedeclareSectionCommand to change the distance before a TOC entry:

\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}

enter image description here