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