Latex création d'un glossaire
Bonjour cher lecteur,
Je suis un utilisateur courant de latex pour la création de document pdf. Récemment j'ai eu le besoin de mettre un glossaire dans mon document. Je souhaite faire part de mon expérience et des problèmes rencontrés dans l'espérance de vous faire gagner un précieux temps.
Moteur de recherche
Première chose que j'ai faite c'est de rechercher comment créer un glossaire avec latex, il existe différent package pour cela, dont :
Péripétie
La littérature du web décrit glossary comme un paquet "périmé" soit, je ne m'attarde pas dessus et je passe à makeglos. Je recherche la documentation les exemples sur le web ... frustré par le peu de documentation je me dis allons bon va pour le package glossaries.
Glossaries
je récupère via le CTAN le package, lis le fichier INSTALL et procède à l'installation.
Récupération des sources
$ su - # wget http://mirror.ctan.org/macros/latex/contrib/glossaries.zip # unzip glossaries.zip
Création des dossiers
# mkdir /usr/share/texmf/tex/latex/glossaries # mkdir /usr/share/texmf/doc/latex/glossaries # mkdir /usr/share/texmf/tex/latex/glossaries/base/ # mkdir /usr/share/texmf/tex/latex/glossaries/styles # mkdir /usr/share/texmf/doc/latex/glossaries/samples
Installation des fichier *.tex
# install glossariesbegin.tex /usr/share/texmf/tex/latex/glossaries/ # install glossaries-user.tex /usr/share/texmf/tex/latex/glossaries/ # install glossary2glossaries.tex /usr/share/texmf/tex/latex/glossaries/ # install mfirstuc-manual.tex /usr/share/texmf/tex/latex/glossaries/
Installation des styles de base
# install glossaries-babel.sty /usr/share/texmf/tex/latex/glossaries/base/ # install glossaries-compatible-207.sty /usr/share/texmf/tex/latex/glossaries/base/ # install glossaries-polyglossia.sty /usr/share/texmf/tex/latex/glossaries/base/ # install glossaries.sty /usr/share/texmf/tex/latex/glossaries/base/ # install mfirstuc.sty /usr/share/texmf/tex/latex/glossaries/base/
Installation dans expl
# install glossaries-accsupp.sty /usr/share/texmf/tex/latex/glossaries/expl/
Installation des fichiers *.dict
# cp *.dict /usr/share/texmf/tex/latex/glossaries/dict/
Installation de la documentation
# cp samples/*.tex /usr/share/texmf/doc/latex/glossaries/samples
mise à jour pour la recherche de package
# texhash
Suppression du dossier téléchargé
# rm -fr glossaries glossaries.zip
Je teste avec l'exemple minimal ...
# latex sample/minimalgls
La compilation échoue il manque le package xfor et etoolbox!
xfor
Installation rapide
# wget http://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/xfor/xfor.sty -O /usr/share/texmf/tex/latex/xfor/xfor.sty # mkdir -p /usr/share/texmf/tex/latex/xfor/ # wget http://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/xfor/xfor.sty -O /usr/share/texmf/tex/latex/xfor/xfor.sty # texhash
etoolbox
Installation
# wget http://www.ctan.org/tex-archive/install/macros/latex/contrib/etoolbox.tds.zip # unzip etoolbox.tds.zip -d etoolbox # mv etoolbox/doc/* /usr/share/texmf/doc/ # mv etoolbox/tex/latex/* /usr/share/texmf/tex/latex/ # texhash # rm -fr etoolbox.tds.zip -d etoolbox
Dernier essai
Je teste avec l'exemple minimal ...
# cd /usr/share/texmf/doc/latex/glossaries/sample/ # latex minimalgls
ça marche! Tout content j'essaye dans mon document la compilation échoue car "AtBeginEnvironment" est déjà définie! Je souhaite en avoir le coeur net, ni une ni deux je vérifie:
# find /usr/share/texmf/tex/latex/ -type f | xargs grep AtBeginEnvironment /usr/share/texmf/tex/latex/etoolbox/etoolbox.sty:\\newrobustcmd{\\AtBeginEnvironment}[1]{% /usr/share/texmf/tex/latex/etoolbox/etoolbox.sty: '\\string\\AtBeginEnvironment' will not work\\@gobble}} /usr/share/texmf/tex/latex/caption/caption3.sty:\\providecommand*\\AtBeginEnvironment[1]{% /usr/share/texmf/tex/latex/caption/caption3.sty:\\@onlypreamble\\AtBeginEnvironment /usr/share/texmf/tex/latex/caption/caption.sty: \\AtBeginEnvironment{\\caption@letfloattype}}
Eh oui! en effet le package caption utilise également le même nom! Par conséquent on ne peut pas utiliser caption et etoolbox en même temps (donc glossaries!)
Pour finir
Je suis revenu au bon vieux package glossary. Le package glossary est livré avec TexLive donc rien à faire. Dans un fichier glossaire.tex je mets les définitions
-
\\storeglosentry{def1}{%
-
name={def1},%
-
description={...}%
-
}
-
\\storeglosentry{def2}{%
-
name={def2},%
-
description={...}%
-
}
-
...
Et mon document "mondocument.tex" ressemble à:
-
\\usepackage{glossary}
-
\\makeglossary
-
\\input{glossaire}
-
\\begin{document}
-
\\maketitle
-
\\tableofcontents
-
\\thispagestyle{empty}
-
\\newpage\\pagenumbering{arabic}
-
\\thispagestyle{fancy}
-
\\addcontentsline{toc}{chapter}{Glossaire}
-
\\printglossary
-
\\input{chap/chapter2}
-
\\input{chap/chapter3}
-
\\input{chap/chapter4}
-
\\end{document}
Pour référencer une définition, il suffit d'utiliser \\gls{monlabel} à chaque fois que l'on rencontre une référence dans notre texte.
La compilation s’effectue de la manière suivante (la première compilation échoue c'est normal):
$ pdflatex --file-line-error-style mondocument.tex $ makeindex mondocument.glo -s mondocument.ist -t mondocument.glg -o mondocument.gls $ pdflatex --file-line-error-style mondocument.tex
Bref le package glossary fonctionne très bien et conviendra à la plupart des utilisateurs.
Liens externes:
Signé: bioinfornatics, Jonathan MERCIER