Comment enlever le numérotation des pages de la table des matières ?#
1. 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
(c’est-à-dire 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
2. 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).