[Tex/LaTex] Single Page table of contents

table of contents

Is there a way to make a single page table of contents in this style

Introduction ..................................... 1
Next Point ....................................... 2

Without generating it from a LaTex-Document? I printed a bundle of scripts for programming classes that are not written in latex but i want to have a clean table of contents with a custom of the pages.

Thank you.

Best Answer

The lines of the table of contents are generated using \contentsline. You can also call this macro yourself to create a toc manually. The general syntax is

\contentsline{<chapter/section/subsection/subsubsection>}{<title>}{<page>}

and if you want these entries to be numbered you should insert \numberline{<section number>} at the start of the second argument. To use the chapter level heading you need to use a document class that supports it (like book or report).

Here is an example. I'm numbering only half of the sections to illustrate how this works and what the result looks like.

\documentclass{article}

\begin{document}

\section*{Table of contents}

\contentsline{section}{Introduction}{1}
\contentsline{subsection}{First subsection}{1}
\contentsline{subsection}{Second subsection}{3}
\contentsline{subsection}{Third subsection}{3}

\contentsline{section}{\numberline{2}First real section}{5}
\contentsline{subsection}{\numberline{2.1}First subsection}{5}
\contentsline{subsection}{\numberline{2.2}Second subsection}{6}
\contentsline{subsection}{\numberline{2.3}Third subsection}{8}

\end{document}

output

Here is a version that takes care of the section numbers automatically.

\documentclass{article}

\newcommand*\tocsection[2]{%
  \stepcounter{section}%
  \contentsline{section}{\numberline{\thesection}#1}{#2}%
}
\newcommand*\tocsubsection[2]{%
  \stepcounter{subsection}%
  \contentsline{subsection}{\numberline{\thesubsection}#1}{#2}%
}

\begin{document}

\section*{Table of contents}

\tocsection{Introduction}{1}
\tocsubsection{First subsection}{1}
\tocsubsection{Second subsection}{3}
\tocsubsection{Third subsection}{3}
\tocsection{First real chapter}{5}
\tocsubsection{First subsection}{5}
\tocsubsection{Second subsection}{6}
\tocsubsection{Third subsection}{8}

\end{document}

output

In a document class with actual chapters, \tocchapter could be implemented in the same way.


If you need to customise the appearance of the toc you can use either titletoc or tocloft.

For instance, if you don't want the to be in boldface and you want them to come with (the dots), you could add the following to your preamble:

\usepackage{tocloft}
\renewcommand\cftsecfont{\normalfont}
\renewcommand\cftsecpagefont{\normalfont}
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}

If you only use section level headings, this would match the appearance described in your question.


Remark: \contentsline takes an additional argument if hyperref is loaded (the target for the hyperlink). If someone reading this wants to incorporate the above in a document that uses hyperref, you should add an additional {} after {<page>}.

Related Question