Comment enlever le numérotation des pages de la table des matières?
Avec les commandes de base
Le problème est assez compliqué :
- d'une part, la table des matières est créée par l'inclusion d'un fichier généré automatiquement et il est peu souhaitable d'aller le modifier à la main ;
- d'autre part, par défaut, la commande
\tableofcontents
appelle la commande\thispagestyle{plain}
, forçant ainsi le styleplain
(i.e. avec le numéro en bas de page, au centre).
Pour résoudre le second problème, l'extension fancyhdr permet de redéfinir les différents styles de page, en particulier le style plain
. On inclura donc la commande suivante dans le préambule du document :
\fancypagestyle{plain}{% \fancyhf{}% \renewcommand{\headrulewidth}{0pt}}%
Cela a pour effet de redéfinir globalement le style plain
. S'il ne faut le redéfinir que pour la table des matières, le plus simple est d'inclure l'ensemble dans un groupe (défini par les commandes \bgroup
et \egroup
), en prenant soin d'ajouter un \clearpage
après la table des matières pour que la redéfinition des en-têtes soit prise en compte pour la dernière page. Ce qui donne :
\bgroup \fancypagestyle{plain}{% \fancyhf{}% \renewcommand{\headrulewidth}{0pt}}% \tableofcontents \clearpage \egroup
Le premier problème est maintenant simple à résoudre : à partir de la solution précédente, il faut ajouter le style de page devant être appliqué dans la table des matières. D'où le code suivant :
\bgroup \fancypagestyle{plain}{% \fancyhf{}% \renewcommand{\headrulewidth}{0pt}}% \pagestyle{empty} \tableofcontents \clearpage \egroup
Avec une rédéfinition des commandes internes
Une solution touchant aux commandes internes consiste à mettre les définitions suivantes dans le préambule du document :
\makeatletter \def\addcontentsline@toc#1#2#3{% \addtocontents{#1}% {\protect\thispagestyle{empty}}% \addtocontents{#1}% {\protect\contentsline{#2}{#3}% {\thepage}}} \def\addcontentsline#1#2#3{% \@ifundefined{addcontentsline@#1}% {\addtocontents{#1}% {\protect\contentsline{#2}{#3}% {\thepage}}} {\csname addcontentsline@#1\endcsname{#1}{#2}% {#3}}} \makeatother
Cela ajoute simplement la commande \thispagestyle{empty}
avant chaque entrée de la table des matières (ce qui peut sembler un peu plus « violent » que la solution précédente).