Comment générer une table des matières?

\LaTeX fournit la commande \tableofcontents, qui affiche la table des matières à l'endroit où elle est appelée. À chaque compilation, si la commande \tableofcontents est présente dans le document,

En général, il est donc nécessaire de faire trois compilations pour avoir une table des matières à jour :

Voici un exemple simple pour un utilisateur francophone :

\documentclass{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\begin{document}
\tableofcontents
\bigskip
Voici de grandes questions !
\section{Qui suis-je ?}
Bonne question.
\section{Où vais-je ?}
Décidément, très bonne question.
\subsection{Dans quel état j'erre ?}
Euh...
\end{document}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[body={8cm,20cm}]{geometry}
\usepackage[french]{babel}
\pagestyle{empty}
\begin{document}
\tableofcontents
\contentsline {section}{\numberline {1}Qui suis-je ?}{1}%
\contentsline {section}{\numberline {2}Où vais-je ?}{1}%
\contentsline {subsection}{\numberline {2.1}Dans quel état j'erre ?}{1}%
\bigskip
Voici de grandes questions !
\section{Qui suis-je ?}
Bonne question.
\section{Où vais-je ?}
Décidément, très bonne question.
\subsection{Dans quel état j'erre ?}
Euh...
\end{document}

Cet exemple appelle deux commentaires :

Voici d'ailleurs le contenu du fichier .toc de cet exemple (hors une ligne qu'ajoute l'extension babel) pour montrer ce que \LaTeX génère automatiquement :

\contentsline {section}{\numberline {1}Qui suis-je ?}{1}%
\contentsline {section}{\numberline {2}Où vais-je ?}{1}%
\contentsline {subsection}{\numberline {2.1}Dans quel état j'erre ?}{1}%