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,

  • \LaTeX crée un fichier .toc dans lequel il place tous les renseignements nécessaires (niveau de sectionnement (par exemple un chapitre, une section), numéro, titre, page) ;
  • le fichier .toc est par la suite inclus à l'endroit où est appelée la commande \tableofcontents.

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

  • la première créera le fichier .toc ;
  • la seconde l'inclura, et modifiera donc probablement les numéros de page selon la taille de cette table des matières dans le document. Un nouveau fichier .toc sera généré ;
  • la troisième inclura ce nouveau fichier avec les bons numéros de page.

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 :

  • la présence de l'extension babel avec l'option french permettant de franciser le titre de la table des matières qui est, sinon, « Contents ». La question « Comment changer le titre de la table des matières ? » propose une autre solution plus flexible ;
  • la présence d'une commande d'espacement, ici \bigskip. Sans cela le texte qui suit la table des matières serait accolée à cette dernière. Il s'agit là d'un conseil qui n'a, bien entendu, rien d'impératif.

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}%
3_composition/annexes/tables/generer_une_table_des_matieres.txt · Dernière modification: 2021/10/09 12:31 par yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0