ConTeXt/Bibliographie et index/Index
|
Part. IV, ch. 11 • Index manuel, index automatisé • Sommaire |
▶ |
Index manuel, index automatisé
[modifier | modifier le wikicode]Objectifs de cette page
- Comprendre à quoi sert un index et dans quels cas il est indispensable.
- Créer un index manuel simple dans ConTeXt.
- Structurer des entrées hiérarchiques (entrée / sous-entrée).
- Gérer plusieurs index (auteurs, notions, œuvres, lieux).
- Comprendre les principes de l’indexation automatisée (Python, Lua, Perl).
- Mettre en place une méthode fiable pour les documents longs.
1. À quoi sert un index ?
[modifier | modifier le wikicode]Un index est un outil de navigation transversale dans un ouvrage. Il permet au lecteur de retrouver rapidement :
- une notion ;
- un auteur ;
- une œuvre ;
- un lieu ;
- un terme technique.
Contrairement à la table des matières, l’index **ne reflète pas la structure du texte**, mais les **points d’entrée possibles pour le lecteur**.
Tous les ouvrages ne possèdent pas d’index. Cependant, dans les cas suivants, il devient souvent indispensable :
| Type d’ouvrage | Rôle de l’index |
|---|---|
| Manuel, ouvrage pédagogique | Fortement recommandé |
| Thèse, ouvrage savant étendu | Presque indispensable |
| Édition critique, corpus | Essentiel |
| Roman, nouvelles | Jamais |
| Essais historiques | cf. Ouvrages savants |
| Essais philosophiques | Parfois |
2. Index manuel et index automatisé
[modifier | modifier le wikicode]On distingue deux grandes approches :
- index manuel : l’auteur décide explicitement quelles occurrences sont indexées ;
- index automatisé : un script génère automatiquement les entrées à partir de listes ou de règles.
Dans la pratique, les projets sérieux combinent souvent les deux.
3. Index manuel dans ConTeXt
[modifier | modifier le wikicode]3.1 Créer un index simple
[modifier | modifier le wikicode]Dans le texte :
Kant\index{Kant}
En fin de document :
\placeindex
ConTeXt produit alors un index alphabétique normalisé.
3.2 Entrées hiérarchiques (entrée / sous-entrée)
[modifier | modifier le wikicode]\index{Philosophie!Antique}
\index{Philosophie!Moderne}
Sortie typique :
Philosophie Antique, 12 Moderne, 98
Ce mécanisme est particulièrement adapté aux notions et aux thèmes.
4. Plusieurs index dans un même document
[modifier | modifier le wikicode]Pour les ouvrages complexes, il est préférable de séparer les registres.
\defineindex[Auteurs]
\defineindex[Notions]
\defineindex[Oeuvres]
\defineindex[Lieux]
Dans le texte :
Aristote\Auteurs{Aristote}
vertu\Notions{vertu}
Poétique\Oeuvres{Poétique}
Athènes\Lieux{Athènes}
Insertion :
\placeAuteurs
\placeNotions
\placeOeuvres
\placeLieux
Cette séparation améliore considérablement la lisibilité de l’index.
5. Index et Unicode
[modifier | modifier le wikicode]ConTeXt gère les index en UTF-8 :
- accents français ;
- alphabet grec ;
- cyrillique ;
- autres écritures non latines.
Pour dissocier tri et affichage :
\index{λόγος@logos}
Affichage : « λόγος » Tri : « logos »
6. Problèmes fréquents et bonnes pratiques
[modifier | modifier le wikicode]Une entrée n’apparaît pas
[modifier | modifier le wikicode]- espace parasite dans la commande ;
- problème Unicode ;
- compilation insuffisante (au moins deux passes).
Une entrée est mal classée
[modifier | modifier le wikicode]\index{Œdipe@Oedipe}
Une entrée apparaît sous plusieurs formes
[modifier | modifier le wikicode]Il faut normaliser les formes canoniques.
Astuce
Définissez un fichier séparé (par exemple liste-index.tex)
contenant les formes canonisées, puis importez-le au début du document :
\input liste-index.tex
7. Pourquoi automatiser un index ?
[modifier | modifier le wikicode]Pour des documents longs (manuels, thèses, corpus, ouvrages collectifs), l’indexation manuelle devient vite impraticable.
Un index automatisé permet de :
- gagner du temps ;
- assurer une cohérence globale ;
- produire plusieurs index à partir de listes contrôlées.
Mais il ne dispense jamais d’une relecture humaine.
8. Principe général de l’indexation automatisée
[modifier | modifier le wikicode]Le principe est toujours le même :
- définir une liste contrôlée de termes ;
- parcourir le fichier source ;
- insérer automatiquement des commandes d’index ;
- relire et nettoyer le résultat ;
- compiler ConTeXt en plusieurs passes.
Les outils les plus courants sont Python, Lua et Perl.
9. Index automatisé avec Python (explication du code)
[modifier | modifier le wikicode]Python est souvent choisi parce qu’il est lisible, portable, et très pratique pour manipuler des fichiers texte. Le principe de ce type d’automatisation est simple :
- on lit le fichier source ConTeXt (
input.tex) ; - on repère les occurrences de certains termes (liste contrôlée) ;
- on insère automatiquement
\index{...}; - on écrit un nouveau fichier (
output.tex) que l’on compile ensuite.
9.1 Le script
[modifier | modifier le wikicode]import re
# Liste des termes à indexer (vocabulaire contrôlé)
terms = ["Aristote", "Platon", "vertu"]
# 1) Lecture du fichier source ConTeXt en UTF-8
with open("input.tex", "r", encoding="utf-8") as f:
text = f.read()
# 2) Insertion d'une commande \index{...} après chaque occurrence
for t in terms:
# Mot entier : \b...\b (évite "vertu" dans "vertueuse")
# re.escape(t) : protège les caractères spéciaux si un terme en contient
# (?!\\index\{) : évite d’indexer si \index{...} suit déjà immédiatement
pattern = rf"\b{re.escape(t)}\b(?!\\index\{{)"
replacement = rf"{t}\\index{{{t}}}"
text = re.sub(pattern, replacement, text)
# 3) Écriture du fichier de sortie
with open("output.tex", "w", encoding="utf-8") as f:
f.write(text)
9.2 Explication ligne par ligne
[modifier | modifier le wikicode]import re- On importe le module
re(regular expressions), qui permet de faire des recherches/remplacements plus précis quereplace().
terms = [...]- C’est la liste des mots (ou expressions) que l’on décide d’indexer.
- En pratique, on construit cette liste à partir d’un vocabulaire contrôlé (auteurs, notions, œuvres, lieux).
open(..., encoding="utf-8")- On lit le fichier en UTF-8, indispensable pour les accents et les alphabets non latins.
text = f.read()- On charge tout le contenu du fichier dans une variable
text(une grande chaîne de caractères).
for t in terms:- On traite chaque terme à indexer l’un après l’autre.
pattern = ...(c’est le point important)\bsignifie « frontière de mot » : on évite d’indexer un terme à l’intérieur d’un autre mot- (ex.
vertune déclenche pas dansvertueuse). re.escape(t)protège un terme si celui-ci contient des caractères spéciaux (parenthèses, points, etc.).(?!\\index\{)est une « condition négative » : on refuse de remplacer si la commande\index{suit déjà immédiatement, ce qui limite la double indexation.
replacement = ...- On reconstruit le texte en gardant le terme, puis en ajoutant une commande ConTeXt juste après :
AristotedevientAristote\index{Aristote}.
- Pourquoi
\\indexet pourquoi{{ }}? - En Python, le caractère
\est spécial : pour produire un seul antislash dans le fichier TeX, on écrit\\. - Dans les chaînes formatées (
f"..."), les accolades servent à insérer des variables. - Pour écrire des accolades littérales
{et}(celles de\index{...}), on les double :{{et}}.
9.3 Exemple (avant / après)
[modifier | modifier le wikicode]Avant (input.tex) :
Aristote développe une théorie de la vertu. Platon discute la vertu autrement.
Après (output.tex) :
Aristote\index{Aristote} développe une théorie de la vertu\index{vertu}.
Platon\index{Platon} discute la vertu\index{vertu} autrement.
9.4 Utilisation
[modifier | modifier le wikicode]- Sauvegarder le script dans
indexer.py. - Mettre le manuscrit dans
input.tex. - Lancer :
python indexer.py
- Compiler ensuite :
context output.tex
(Remarque : on relance souvent ConTeXt au moins une seconde fois pour stabiliser index et références.)
9.5 Limites (à connaître)
[modifier | modifier le wikicode]Même bien écrit, ce script reste une automatisation :
- il ne comprend pas le sens (homonymies, emplois non pertinents) ;
- il ne sait pas quelles occurrences sont réellement importantes ;
- il peut indexer des zones que l’on ne souhaite pas (titres, légendes, code, bibliographie).
Conclusion : un index automatisé est fiable **si** l’on contrôle la liste des termes, et si l’on relit/épure le résultat.
10. Lua et Perl : quand les utiliser ?
[modifier | modifier le wikicode]- Lua est intégré à ConTeXt et permet des traitements internes,
mais il demande une bonne maîtrise de l’écosystème ConTeXt.
- Perl est apprécié pour les traitements massifs et les expressions régulières,
notamment dans des chaînes d’outils Unix.
Quel que soit l’outil, l’automatisation doit rester **au service d’une stratégie éditoriale**.
11. Méthode recommandée pour un index fiable
[modifier | modifier le wikicode]- rédiger le texte ;
- établir un vocabulaire contrôlé ;
- automatiser l’insertion des entrées ;
- relire et corriger manuellement ;
- compiler ConTeXt ;
- valider l’index final.
Un index automatisé n’est jamais entièrement automatique : il est assisté par la machine, contrôlé par l’auteur.