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{#2}{\caption@letfloattype{#2}{#1}}}

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


  1. \storeglosentry{def1}{%
  2. name={def1},%
  3. description={...}%
  4. }
  5. \storeglosentry{def2}{%
  6. name={def2},%
  7. description={...}%
  8. }
  9. ...

Et mon document "mondocument.tex" ressemble à:


  1. \usepackage{glossary}
  2. \makeglossary
  3. \input{glossaire}
  4. \begin{document}
  5. \maketitle
  6. \tableofcontents
  7. \thispagestyle{empty}
  8. \newpage\pagenumbering{arabic}
  9. \thispagestyle{fancy}
  10. \addcontentsline{toc}{chapter}{Glossaire}
  11. \printglossary
  12. \input{chap/chapter2}
  13. \input{chap/chapter3}
  14. \input{chap/chapter4}
  15. \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