tuteurs.ens.fr/logiciels/latex/makeindex.tml
2002-11-13 11:15:42 +00:00

218 lines
8.4 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!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
<em>Mémoires</em> 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>
<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 makeidx et non
makeindex) :</p>
<pre>\usepackage{makeidx}</pre>
<p class="continue">Ensuite, dans la suite du préambule, mettez la
commande</p>
<pre>\makeindex</pre>
<p class="continue">qui demande à MakeIndex de se mettre au travail.
Enfin, placez la commande</p>
<pre>\printindex</pre>
<p class="continue">à l'endroit où vous désirez placer l'index (à la fin,
normalement).</p>
<h2>Les bases</h2>
<p>Pour obtenir une entrée dans l'index, il faut l'indiquer par la
commande <code>\index{mon_entree}</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 makeindex :</p>
<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
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="attention"><p>Il faut préciser à chaque fois à
<code>makeindex</code> ce que vous voulez indexer, il ne le fait pas
automatiquement. Pourquoi ? Bien sûr, voue préfereriez avoir à ne donner
le mot à indexer qu'une seule fois et laisser l'ordinateur faire le
reste, mais cette procédure manque de souplesse. 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 ». 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 »,
etc... 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></div>
<h3>Récapitulatif</h3>
<p>Il faut en tout trois compilations pour que l'index soit effectif :</p>
<pre>latex exemple.tex ; makeindex exemple.idx ; latex exemple.tex</pre>
<h2>Spécifier les entrées de l'index</h2>
<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>
<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>
<div class="attention"> Prenez garde à l'environnement dans lequel vous
êtes ! Un <code>\index{Louis XIV}</code> dans du texte « normal » et
un <code>\index{Louis XIV}</code> dans dans une note en bas de page, ou
dans un tableau, ne produiront pas une entrée avec deux références, mais
deux entrées identiques ! Pour remédier à ce problème, il vous suffit de
placer votre <code>\index{}</code> juste avant ou juste après
l'environnement dans lequel se trouve l'expression à référencer.</div>
<h3>Caractères accentués</h3>
<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 (@).</p>
<pre>\index{Princes etrangers@Princes étrangers}</pre>
<p class="continue">veut dire que vous demandez à MakeIndex de classer
« Princes étrangers » comme s'il n'y avait pas d'accent dans
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>
<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>
<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>
<h3>Entrées et sous-entrées</h3>
<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.
Ainsi, si l'on reprend notre exemple, vous voulez faire du mot
« registres » une sous-entrée de « service des Cérémonies » :</p>
<pre>\index{Ceremonies@Cérémonies, service de!registres}</pre>
<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>
<h3>Références croisées</h3>
<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>
<pre> \index{Bouillon|see{Princes étrangers}}</pre>
<p class="continue">vous donnera :</p>
<pre>Bouillon, voir Princes étrangers</pre>
<p>La traduction de <code>|see{}</code> dépend du package de Babel que
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>
<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>
(<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>
<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>
<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>
<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).
Dernière modification le 2002-11-13 par François-Xavier Coudert. </div>
</body> </html>