69

Is it possible to get it without using package titletoc? I'm using special chapter style which doesn't work with this package.

3
  • And the tocloft package is an option? May 19, 2012 at 22:27
  • Yes, it's possible. Perhaps provide further information, such as you preamble or even better a small compilable example with your class, packages and settings.
    – Stefan Kottwitz
    May 19, 2012 at 22:28
  • Just for future reference: I've found that setting \parskip can be useful. E.g. \parskip=1em for large spacing or \parskip=0em for compact spacing, it works for me in the article document class.
    – phfaist
    Feb 20, 2016 at 19:26

5 Answers 5

69

There are so many options... without further information, one possible option would be to use the setspace package and one of its commands of environments; for example,

\documentclass{report}
\usepackage{setspace}

\begin{document}

\doublespacing
\tableofcontents
\singlespacing

\chapter{Test Chapter One}
\section{Test Section One One}
\section{Test Section One Two}
\chapter{Test Chapter Two}
\section{Test Section Two One}
\section{Test Section Two Two}

\end{document}

enter image description here

This approach will increase evenly the space between all sectional units. The following three options allow you to control separately the spacing for each group of sectional units.

Another option would be to use the tocloft package and redefine the \cftXafterpnum family of commands:

\documentclass{report}
\usepackage{tocloft}

\renewcommand\cftchapafterpnum{\vskip10pt}
\renewcommand\cftsecafterpnum{\vskip15pt}

\begin{document}

\tableofcontents

\chapter{Test Chapter One}
\section{Test Section One One}
\section{Test Section One Two}
\chapter{Test Chapter Two}
\section{Test Section Two One}
\section{Test Section Two Two}

\end{document}

enter image description here

Yet another option, this time using the etoolbox package to patch the sectional units commands to add vertical space to the ToC:

\documentclass{report}
\usepackage{etoolbox}

\makeatletter
\pretocmd{\chapter}{\addtocontents{toc}{\protect\addvspace{15\p@}}}{}{}
\pretocmd{\section}{\addtocontents{toc}{\protect\addvspace{5\p@}}}{}{}
\makeatother

\begin{document}

\tableofcontents

\chapter{Test Chapter One}
\section{Test Section One One}
\section{Test Section One Two}
\chapter{Test Chapter Two}
\section{Test Section Two One}
\section{Test Section Two Two}

\end{document}

enter image description here

A fourth option not requiring any packages would be to redefine the \chapter and \section commands as implemented in the used document class to add the vertical space to the ToC; an example with report:

\documentclass{report}

\makeatletter
\renewcommand\chapter{\addtocontents{toc}{\protect\addvspace{5\p@}}%
  \if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{plain}%
  \global\@topnum\z@
  \@afterindentfalse
  \secdef\@chapter\@schapter}
\renewcommand\section{\addtocontents{toc}{\protect\addvspace{20\p@}}%
  \@startsection {section}{1}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\normalfont\Large\bfseries}}
\makeatother

\begin{document}

\tableofcontents

\chapter{Test Chapter One}
\section{Test Section One}
\section{Test Section Two}
\chapter{Test Chapter One}
\section{Test Section One}
\section{Test Section Two}

\end{document}

enter image description here

0
54

While the other suggestions so far allow increasing the line spacing of the Table of Contents, it seems they don't allow decreasing it, for example to fit a ToC on one page.

A simple

\renewcommand{\baselinestretch}{0.75}\normalsize
\tableofcontents
\renewcommand{\baselinestretch}{1.0}\normalsize

will allow setting any line spacing.

It might be necessary to find out what your baselinestretch size is by default as the style seems to set this.

3
  • 4
    negative value of -10pt decreased the spacing for me \renewcommand\cftchapafterpnum{\vskip-10pt} Oct 19, 2018 at 13:30
  • 1
    This answer was perfect for me! I've been having package incompatibility issues with most of the recommended TOC pages, and the TOC was dangling by one line to create an extra page. Using \renewcommand{\baselinestretch}{0.9975}\normalsize instead of 0.7 was enough to get rid of the extra page. Thank you so much! Jun 2, 2020 at 0:15
  • This can also be used to increase the spacing, it appears to be the easiest solution! Aug 3 at 18:23
19

Using tocloft, you can also add the following in your preamble to add spacing before a section entry:

\usepackage{tocloft}

\setlength{\cftbeforesecskip}{6pt}

This complements Gonzalo's Answer in where he shows how to add spacing after a section entry: that can be undesirable in case you have subsections following a section. The tocloft's manual has many other options that can be used to manipulate other types of entries in the TOC.

1
  • 3
    I found this to be the most flexible solution. Include \setlength{\cftbeforesubsecskip}{6pt} and \setlength{\cftbeforesubsubsecskip}{6pt} to get custom spacing between sub- and subsub- sections in the toc. Thanks!
    – jdods
    Jan 26, 2021 at 21:59
1

Here is an easy way to do it ! However, you need load this package

\usepackage{setspace}

\begin{spacing}{4}
\tableofcontents 
\end{spacing}

Found this technique here : https://latex.org/forum/viewtopic.php?t=7701

0

Another global solution for reducing spacing, for cases where kjyv's local solution didn't work or caused trouble with line spacing in general is

\renewcommand\cftsecafterpnum{\\ \vspace{-20pt}}

which worked for me while

\renewcommand\cftchapafterpnum{\vskip-10pt}

didn't do anything.

1
  • Note that this answer presumes that the tocloft package is used.
    – Marijn
    Jan 2, 2021 at 11:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .