tuteurs.ens.fr/logiciels/latex/makeindex.tml

233 lines
8.4 KiB
Text
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
2002-11-13 12:15:42 +01:00
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Index</title>
</head>
<body>
<h1>Faire un index avec MakeIndex</h1>
<p>Vous disposez d'un fichier TeX qui contient votre maîtrise, votre
autobiographie, ce que vous voulez. Pour faciliter la vie du lecteur
de votre document final, vous désirez indexer les termes clefs de
votre texte. Le package MakeIndex vous permet de créer un index. Tout
au long de ce cours nous allons utiliser un petit texte d'exemple,
tiré des <cite>Mémoires</cite> du duc de Luynes (vous pouvez le
télécharger : <a href="exemple.txt">exemple.txt</a>) :</p>
<pre>
À la mort de M. le duc de Bourgogne, lorsqu'il fut question d'aller
jeter de l'eau bénite, le feu Roi décida que si les princes lorrains
s'y presenteroient, qu'eux ni les ducs n'en jetteroient ; mais que si
MM. de Rohan et de Bouillon y étoient, les ducs jetteroient de l'eau
bénite avant eux : ce qui arriva effectivement ; mais MM. de Rohan et
de Bouillon, voyant les ducs passer avant eux, s'en allèrent. Ce qui
avoit été décidé en faveur de MM. les ducs fut écrit sur le registre
de M. de Dreux ; mais deux ans après, les représentations de Mme de
Maintenon déterminèrent le Roi à faire un changement et à ordonner à
M. de Dreux que cet article seroit rayé sur le registre. Il fut mis en
marge que le Roi n'avoit jamais voulu décider entre les ducs et MM. de
Rohan et de Bouillon. </pre>
2002-11-13 12:15:42 +01:00
<h2>Avant toute chose</h2>
<p>Commencez par indiquer dans le préambule de votre document que vous
voulez le charger (attention, il faut bien écrire <code>makeidx</code>
et non <code>makeindex</code>) :</p>
2002-11-13 12:15:42 +01:00
<pre>\usepackage{makeidx}</pre>
<p class="continue">Ensuite, dans la suite du préambule, mettez la
2002-11-13 12:15:42 +01:00
commande</p>
<pre>\makeindex</pre>
<p class="continue">qui demande à MakeIndex de se mettre au travail.
2002-11-13 12:15:42 +01:00
Enfin, placez la commande</p>
<pre>\printindex</pre>
<p class="continue">à l'endroit où vous désirez placer l'index (à la
fin, normalement).</p>
2002-11-13 12:15:42 +01:00
<h2>Les bases</h2>
<p>Pour obtenir une entrée dans l'index, il faut l'indiquer par la
commande <code>\index{<var>mon_entree</var>}</code>. Lors d'une première
compilation, LaTeX repérera tous les <code>\index</code> et écrira
pour chacun d'entre eux une entrée dans <a
href="exemple.idx"><code>exemple.idx</code></a>. Ensuite il faudra
faire une deuxième compilation à l'aide de la commande
<code>makeindex</code> :</p>
2002-11-13 12:15:42 +01:00
<pre>makeindex exemple.idx</pre>
<p class="continue">MakeIndex interprétera les entrées de
<code>exemple.idx</code> et les formatera, générant deux nouveaux
fichier, <a href="exemple.ilg"><code>exemple.ilg</code></a> qui
contient les messages de compilation de MakeIndex, et <a
2002-11-13 12:15:42 +01:00
href="exemple.ind"><code>exemple.ind</code></a> qui contient l'index
formaté. Il faut ensuite une troisième compilation, avec latex, pour
que <code>exemple.ind</code> soit intégré à <code>exemple.tex</code>
et produise l'index.</p>
<div class="encadre">
<strong>Important</strong> : il faut préciser <strong>à chaque
fois</strong> à <code>makeindex</code> ce que vous voulez indexer, il
ne le fait pas automatiquement.
</div>
<p>
Pourquoi ? Bien sûr, vous préfereriez avoir à ne donner le mot à
indexer qu'une seule fois et laisser l'ordinateur faire le reste, mais
cette procédure <em>manque de souplesse</em>. Admettons que vous
vouliez créer une entrée d'index « Louis XIV ». Un indexage
automatique vous permettrait bien sûr de recenser toutes les
occurrences de « Louis XIV ».
</p>
<p class="continue">
Mais vous aimeriez sans doute aussi recenser les pages ou vous n'avez
pas écrit textuellement « Louis XIV », mais où vous en avez parlé sous
les périphrases « le roi de France », « le monarque », voire un bête
« il ». Ce que vous permet l'apposition à la main de commandes
<code>\index{Louis XIV}</code> après chaque mot ou expression que vous
voulez voir référencé.</p>
2002-11-13 12:15:42 +01:00
<h3>Récapitulatif</h3>
2002-11-13 12:15:42 +01:00
<p>Il faut en tout <strong>trois compilations</strong> pour que
l'index soit effectif :</p>
<pre>latex exemple.tex
makeindex exemple.idx
latex exemple.tex</pre>
2002-11-13 12:15:42 +01:00
<h2>Spécifier les entrées de l'index</h2>
2002-11-13 12:15:42 +01:00
<p>La procédure de base est la suivante : vous voulez indexer, dans le texte
d'exemple, les ducs et pairs. Vous placez donc, après l'expression à
référencer, un <code>\index{}</code> :</p>
2002-11-13 12:15:42 +01:00
<pre>
À la mort de M. le duc de Bourgogne, lorsqu'il fut question d'aller
jeter de l'eau bénite, le feu Roi décida que si les princes lorrains
s'y presenteroient, qu'eux ni les ducs\index{Ducs et pairs} n'en
jetteroient (...)
</pre>
<h3>Caractères accentués</h3>
2002-11-13 12:15:42 +01:00
<p>
MakeIndex n'a pas été conçu pour les langues possédant des accents :
dès qu'un mot contenant des caractères accentués se trouvera dans
votre <code>\index{}</code>, il le classera au début des mots
commençant par cette même lettre... Il vous faut donc indiquer
vous-même à MakeIndex où classer la référence : on utilise pour cela
une arobase (<code>@</code>) et le code
<code>\index{<var>sans_accents</var>@<var>avec_accents</var>}</code>.
Par exemple,
</p>
2002-11-13 12:15:42 +01:00
<pre>\index{Princes etrangers@Princes étrangers}</pre>
2002-11-13 12:15:42 +01:00
<p class="continue">veut dire que vous demandez à MakeIndex de classer
« Princes étrangers » comme s'il n'y avait pas d'accent dans
2002-11-13 12:15:42 +01:00
l'expression.</p>
<p><strong>À noter :</strong> Vous pouvez utiliser cette technique pour
classer par exemple des membres d'une même famille dans l'ordre
chronologique, et non pas par ordre alphabétique de leur prénom :</p>
2002-11-13 12:15:42 +01:00
<pre>
\index{Guise1@Guise, Henri de Lorraine, duc de}
\index{Guise2@Guise, Charles de Lorraine, duc de}
</pre>
<p class="continue">Vous pouvez également l'utiliser pour formater à
votre goût l'aspect d'une entrée d'index. Ainsi,</p>
2002-11-13 12:15:42 +01:00
<pre>\index{Bourgogne@\textsc{Bourgogne}, Louis de France, duc de}</pre>
<p class="continue">vous permet d'avoir le nom de famille en petites
majuscules. Vous pouvez évidemment remplacer <code>\textsc{}</code> par
n'importe quel type de fonte (italique, gras, penché...).</p>
2002-11-13 12:15:42 +01:00
<h3>Entrées et sous-entrées</h3>
2002-11-13 12:15:42 +01:00
<p>Pour produire une sous-entrée, vous devez d'abord indiquer l'entrée
principale puis la sous-entrée, séparée par un point d'exclamation.
2002-11-13 12:15:42 +01:00
Ainsi, si l'on reprend notre exemple, vous voulez faire du mot
« registres » une sous-entrée de « service des Cérémonies » :</p>
2002-11-13 12:15:42 +01:00
<pre>\index{Ceremonies@Cérémonies, service de!registres}</pre>
2002-11-13 12:15:42 +01:00
<p>Vous pouvez faire des sous-sous-entrées. MakeIndex et LaTeX ne
supportent que trois niveaux d'indexation : vous ne pouvez pas avoir de
sous-sous-sous-entrées.</p>
2002-11-13 12:15:42 +01:00
<h3>Références croisées</h3>
2002-11-13 12:15:42 +01:00
<p>MakeIndex vous permet de faire des références croisées, qui ne renvoient
pas à une page, mais à une autre entrée. Ainsi, dans notre exemple, on
veut que le lecteur qui cherche une entrée à Bouillon soit renvoyé à
« princes étrangers » :</p>
2002-11-13 12:15:42 +01:00
<pre> \index{Bouillon|see{Princes étrangers}}</pre>
2002-11-13 12:15:42 +01:00
<p class="continue">vous donnera :</p>
2002-11-13 12:15:42 +01:00
<pre>Bouillon, voir Princes étrangers</pre>
2002-11-13 12:15:42 +01:00
<p>La traduction de <code>|see{}</code> dépend du package de Babel que
2002-11-13 12:15:42 +01:00
vous utilisez.</p>
<h2>Formatage de l'index</h2>
<p>Par défaut, l'index ressemble à ceci (c'est le résultat de
<a href="exemple.tex"><code>exemple.tex</code></a>) :</p>
2002-11-13 12:15:42 +01:00
<div class="illustration"><img src="index.jpg" alt="Un index"/></div>
<p>Le texte s'étend sur deux colonnes. Si vous voulez modifier le
formatage de l'index, il vous faudra créer un fichier <code>.ist</code>
2002-11-13 12:15:42 +01:00
(<code>perso.ist</code>, par exemple) contenant vos personnalisations.
Pour utiliser ce fichier <code>.ist</code>, il faut le donner en option à
MakeIndex pendant la deuxième compilation :</p>
2002-11-13 12:15:42 +01:00
<pre>makeindex -s perso.ist exemple.idx</pre>
<h3>Ajouter une lettre entre chaque groupe</h3>
<p>Il faut insérer dans votre perso.ist les lignes suivantes :</p>
2002-11-13 12:15:42 +01:00
<pre>
heading_prefix "{\\bfseries\\hfil "
heading_suffix "\\hfil}\\nopagebreak\n"
headings_flag 1
</pre>
<div class="illustration"><img src="myhead.jpg" alt="C'est joli" /></div>
<h3>Ajouter des lignes de points</h3>
<p>Il faut insérer dans votre perso.ist les lignes suivantes :</p>
2002-11-13 12:15:42 +01:00
<pre>
delim_0 "\\dotfill"
delim_1 "\\dotfill"
delim_2 "\\dotfill"
</pre>
<div class="illustration"><img src="mylist.jpg" alt="Encore plus joli" /></div>
<div class="metainformation"> Auteurs : Marie-Lan Nguyen (2000) et
François-Xavier Coudert (2002).
<date value="from git" />
</div>
2002-11-13 12:15:42 +01:00
</body> </html>