Accueil > LaTeX > Table des matières > Index et table des matières dans la table des matières
Index et table des matières dans la table des matières
vendredi 9 septembre 2011, par
Comment permettre à l’index produit avec \printindex
d’apparaître dans la table des matières ? Comment permettre à la table des matières d’apparaître dans la table des matières ? Voici la solution que j’ai adoptée, pour la classe book.
Principe
La commande \printindex
fait appel à l’environnement theindex
, que l’on trouve défini dans le fichier book.cls
.
C’est la ligne 7 qui nous intéresse. Elle contient l’appel à la commande \@makeschapterhead
, qui se charge d’afficher le titre de l’index.
La commande \tableofcontents
est définie directement dans le fichier book.cls
Ici c’est la ligne 7 qui nous intéresse, puisqu’elle appelle la commande \chapter*
.
Il va s’agir de modifier ces lignes. Pour cela, nous allons utiliser la commande \patchcmd{commande}{recherche}{remplace}{succes}{echec}
package etoolbox
, qui est chargé par polyglossia
.
Cette commande remplace dans la commande commande
la valeur recherche
par remplace
. Si ce remplacement fonctionne, elle retourne succes
, sinon echec
.
Application pour l’index
Nos caractères à chercher dans le code de la commande contenant des @, nous entourons de \makeatletter
et \makeatother
.
Nous remplaçons dans la commande \theindex
, qui correspond à ce qui est exécuté en début d’environnement theindex
,
\@makeschapterhead{\indexname}
par
\phantomsection\addcontentsline{toc}{chapter}{\indexname}\@makeschapterhead{\indexname}
La commande addcontentsline
ajoute l’entrée dans la table des matières. La commande \phantomsection
sert au package hyperref
à avoir ses signets de navigation correctement placés.
Nous n’exécutons rien de particulier ni en cas de succès ni en cas d’échec.
Application à la table des matières
\patchcmd{\tableofcontents}{\chapter*}{\phantomsection\addcontentsline{toc}{chapter}{\contentsname}\chapter*}{}{}
Nous remplaçons dans la commande \tableofcontents
,
\chapter*
par
\phantomsection\addcontentsline{toc}{chapter}{\contentsname}\chapter*
Nous n’exécutons rien de particulier ni en cas de succès ni en cas d’échec.
Si vous n’utilisez pas le package hyperref
, ne mettez pas \phantomsection
.
Messages
16 septembre 2011, 14:33, par Raphaël Pinson
Le paquet imakeidx a une option intoc lors de la création d’un index, par exemple :
Voir en ligne : http://www.raphink.info
16 septembre 2011, 14:54, par Maïeul
a cool ca, tu sais si c’est compatible splitindex ? il faut que je teste
16 septembre 2011, 15:09, par Raphaël Pinson
splitindex est intégré dans imakeidx et utilisé à la demande (i.e. si le nombre de fichiers est trop important pour gérer le split en TeX). Dans mon cas, je split sans l’option splitindex car je n’ai que 2 indexes :
Voir en ligne : http://www.raphink.info
18 septembre 2011, 15:05, par Maïeul
a oui pas mal le coup de la compilation automatique.
Ceci dit cela est incompatible avec mon système pour indexer automatiquement les sources primaires, qui nécéssite un passage via un script python.
Bon tout cela m’embête bien, du coup je ne sais pas quelle solution indiquer dans le chapitre de mon bouquin.