Comment ajouter une entrée dans la table des matières ?#

1.  Cas général#

La commande \addcontentsline{toc}{section}{nom de la section} permet d’insérer des entrées dans la table des matières. Dans cette commande :

  • le premier argument indique dans quelle table on veut ajouter une entrée. Il peut s’agir de la table des matières (toc), de la liste des figures (lof), de la liste des tableaux (lot) ;

  • le deuxième argument indique le niveau de sectionnement auquel on veut placer la nouvelle entrée. Cet argument peut donc valoir part, chapter, section, subsection, subsubsection. Il peut valoir aussi figure ou table pour les listes de figures ou les listes de tableaux ;

  • le troisième argument est le texte qui doit apparaître, généralement le titre de la section ajoutée.

Dans la pratique, cette commande est souvent utilisée pour insérer des titres de sectionnement lors de l’utilisation de commandes de sectionnement étoilées comme \section*. En effet, ces commandes empêchent la numérotation du titre et ne génèrent pas d’entrée en table des matière. Voici un exemple de ce correctif :

\section*{Un titre non numéroté}
\addtontentsline{toc}{section}{Un titre non numéroté}

Toutefois, il faut faire attention au numéro de page obtenu en table des matières (un correctif revenant alors à placer la commande \addcontentsline après la commande \section* si la section est mal référencée.) La question « Comment obtenir des titres de sectionnement non numérotés en table des matières ? » donne une solution bien plus robuste.

2.  Cas des titres de bibliographie, d’index ou d’autres annexes spécifiques#

2.1.  Avec les commandes de base#

Les classes standards de (et bien d’autres) utilisent \section* ou \chapter* pour mettre en forme des parties auto-générées du document (les tables des matières, les listes de figures et de tableaux, la bibliographie et l’index). Comme vu ci-dessus, ces éléments ne sont donc pas numérotés (ce qui ne dérange pas la plupart des gens) mais n’apparaissent pas dans la table des matières.

Supposons que notre document soit basé sur des chapitres (classe report ou book, par exemple), la solution suivante pourrait être envisagée :

\bibliography{mabiblio}
\addcontentsline{toc}{chapter}{Bibliographie}

Cependant, si la bibliographie s’étale sur plus d’une page, la numérotation en table des matières sera fausse (en référençant la dernière page de la bibliographie). Mettre la commande \addcontentsline avant la commande \bibliography ne résout pas pour autant le problème puisque la commande serait effectuée avant la commande \bibliography, donc avant le début du nouveau chapitre et, par conséquent, peut-être pas sur la bonne page. Pour corriger cela, il convient d’utiliser la suite de commande suivante :

\cleardoublepage
\addcontentsline{toc}{chapter}{Bibliographie}
\bibliography{mabiblio}

Notez que \cleardoublepage fait ce qu’il faut, à savoir faire un saut de page permettant d’accéder à une page de début de chapitre, même si votre document n’est pas en mode recto-verso (dans ce cas, c’est un simple synonyme de \clearpage). Toutefois, s’assurer que l’entrée fait référence au bon endroit reste délicat dans le cas d’une classe basée sur la commande \section.

Si vous utilisez conjointement l’extension hyperref (gérant des liens hypertextes dans le document), un léger ajustement est nécessaire :

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Bibliographie}
\bibliography{mabiblio}

La commande supplémentaire, \phantomsection, donne à hyperref un point à référencer lors de la création du lien.

2.2.  Avec l’extension « tocbibind »#

La solution courante consiste à utiliser l’extension tocbibind qui fournit de nombreuses fonctionnalités pour contrôler la manière dont ces entrées apparaissent dans la table des matières.

2.3.  Avec les classes « KOMA-script »#

Les classes KOMA-script fournissent cette fonctionnalité sous la forme d’un ensemble d’options de classe (par exemple, bibtotoc pour ajouter la bibliographie à la table des matières).

2.4.  Avec la classe « memoir »#

La classe memoir fait directement appel à l’extension tocbibind elle-même.