Utilisation du package Glossaries

Le package glossaries se veut être le remplaçant du vieillissant glossary. Comme son nom l’indique, glossaries permet de générer plusieurs glossaires. Son utilisation est assez facile, pour peu qu’on l’ai paramétré proprement, ce qui n’est pas forcément gagné… C’est pourquoi je vais essayer de résumer la configuration minimale qui vous permettra une prise en main (presque) rapide.

J’avais déjà fait allusion à ce package dans mon billet sur le template pour manuscrit de thèse, mais je n’avais pas le temps de trop développer cet aspect.

Compilation

Que vous utilisiez ou non xindy (voir plus bas), c’est bien avec makeglossaries que vous génèrerez vos glossaires. Pour avoir toutes les références croisées à jour, c’est le même délire qu’avec bibtex, à savoir :

pdflatex Document.tex
makeglossaries Document
pdflatex Document.tex
pdflatex Document.tex

 

En anglais

Je vais commencer par développer l’utilisation pour la langue de Freddie Mercury, car c’est celle qui demande le moins de paramétrage.

Chargement du package

Il faut charger glossaries après hyperref pour avoir les liens actifs. De plus, il faut penser à demander les glossaires :

\usepackage[pdfborder={0 0 0}]{hyperref}
\usepackage{glossaries}
	\makeglossaries

Définir des acronymes

\newacronym{<label>}{<acronyme>}{<Définition>}

Ensuite, vous appelez les acronymes grâce à la commande \gls{. A la première occurrence de chacun d’eux, la définition sera affichée, suivie de l’acronyme entre parenthèses. Aux occurrences suivantes, seul l’acronyme sera affiché. On dispose de plus des commandes suivantes :

  • \glspl{} : pluriel
  • \Gls{} : majuscule au premier mot (si c’est la définition qui est affichée)
  • \Glspl{} : combinaison des deux commandes précédentes

Exemple :

\usepackage{glossaries}
	\makeglossaries
 
\newacronym{tem}{TEM}{Transmission Electron Microscope}
\newacronym{sem}{SEM}{Scanning Electron Microscope}
 
\begin{document}
	One can use a \gls{sem}. \Glspl{sem} are different from \glspl{tem}.
\end{document}

Exemple d'utilisation des acronymes

Et pour afficher la liste des acronymes :

\printglossary[type=\acronymtype]

Il est de plus possible de définir spécifiquement les pluriels des acronymes ou des définitions en option des \newacronym et même le texte à afficher à la première occurrence :

\newacronym[	plural={<acronyme pluriel>},
		first={<texte à afficher à la première occurrence>},
		firstplural={<idem, mais au pluriel>}
]{<label>}{<acronyme>}{<Définition>}

Définir un glossaire

Chaque entrée se définit comme suit :

\newglossaryentry{<label>}{
	name={<mot à afficher dans le texte>},
	plural={<pluriel du mot>},
	description={<définition affichée dans le glossaire>}
	}

Les commandes pour afficher l’entrée restent les mêmes que précédemment : \gls, \Gls etc.

A l’endroit où vous souhaitez voir le glossaire, mettez :

\printglossary

Attention si utilisez à la fois les acronymes et les glossaires : par défaut, il n’y aura qu’un seul glossaire pour les deux. Si vous souhaitez les séparer (de façon à avoir un « Glossary » et « Acronyms », il faut préciser l’option acronym lors du chargement du package glossaries :

\usepackage[acronym]{glossaries}

Liste des symboles (ou nomenclature)

Pour cela, on va commencer par définir un nouveau type de glossaire, que l’on appellera intelligemment notation. Juste après avoir chargé le package, placez :

\newglossary[nlg]{notation}{not}{ntn}{Notations}

Les différentes options servent à définir les noms des extensions pour les fichiers de compilation et le titre du glossaire affiché. Ensuite, chaque symbole se définit ainsi :

\newglossaryentry{<label>}
{
  type=notation,
  name={<caractère mathématique à afficher>},
  description={<définition à afficher dans la nomenclature>},
  sort={<nom donné pour le classement>}
}

Pour définir le nom, une très bonne habitude est d’utiliser la commande \ensuremath{}, qui vous permettra ainsi d’appeler le symbole avec la commande \gls{}, indifféremment dans du texte ou dans une équation. L’option sort permet de contrôler le classement des symboles dans l’ordre alphabétique (vous mettriez Φ avant ou après π ?).

Pour afficher la nomenclature :

\printglossary[type=notation]

Exemple :

\newglossaryentry{a}
{ type=notations,
  name={\ensuremath{a}},
  description={Some kind of constant},
  sort={a}
}
 
\newglossaryentry{phi}
{ type=notations,
  name={\ensuremath{\Phi}},
  description={Another constant},
  sort={phi}
}
\begin{document}
One can define \gls{a} as a function a \gls{phi}:
\begin{equation}
	\gls{a}=\gls{phi}+\pi
\end{equation}
 
\printglossaries
\end{document}

Exemple d'utilisation de la nomencalture

Afficher tous les glossaires en même temps

\pringlossaries

Ajouter les glossaires à la table des matières

Il faut préciser l’option toc (table of content) lors de l’appel du package glossaries :

\usepackage[toc]{glossaries}

 

 

 

En français

Outre les titres à corriger (« Acronyms » et autre « Glossary »), il faut s’assurer que glossaries saura classer les mots accentués, et surtout que les pluriels soient corrects. En effet, comme on l’a vu précédemment, en anglais les acronymes prennent un « s » au pluriel, ce qui n’est pas le cas en français.

xindy

Pour s’assurer de la compatibilité du packages glossaries avec les caractères français, il est préférable d’utiliser xindy, qui est une surcouche pour la commande makeglossaries. Il faut alors préciser son utilisation lors de l’appel du package glossaries :

\usepackage[xindy]{glossaries}

Virer les « s » pour les pluriels des acronymes

Placez la commande suivante dans le préambule :

\renewcommand{\glspluralsuffix}{}

Par contre les pluriels des définitions ne fonctionneront plus non plus. Vous devrez donc définir vous même, pour chaque entrée dans la liste des acronymes, le pluriel correspondant (avec l’option firstplural, voir plus haut).

Titres des glossaires

Pour chaque commande \printglossary, il suffit de préciser en option un « title ». On peut de plus choisir le titre affiché dans la table des matières (toc) :

\printglossary[type=\acronymtype , title={Liste des acronymes}, toctitle={Liste des acronymes}]
\printglossary[type=notation , title={Nomenclature}, toctitle={Nomenclature}]
\printglossary[title={Glossaire}, toctitle={Glossaire}]

 

 

 

Pour aller plus loin

Pour finir, voici quelques astuces qui peuvent vous sauver de la calvitie forcée.

Réinitialiser les acronymes

Pour que les acronymes soient de nouveau affiché comme au premier jour (c’est-à-dire avec la définition) :

\glsresetall

Afficher correctement les titres des glossaires dans les entêtes

Par défaut, les titres des glossaires affichés dans les entêtes avec fancyhdr sont en minuscule, ce qui jure un peu avec les autres titres. Pour corriger cela, il faut rajouter ucmark en option du package :

\usepackage[ucmark,toc]{glossaries}

Utiliser un fichier spécifique pour les entrées des glossaires

Plus qu’une astuce, c’est un conseil : si vous utilisez glossaries, c’est a priori que vous êtes sur un gros coup ! Donc vous aurez tout intérêt à définir un fichier spécifique, par exemple Glossaire.tex, et l’appeler avec la commande suivante :

\loadglsentries{Glossaire}

Afficher un texte arbitraire à la place d’une entrée

Il est possible de citer une entrée avec un texte de votre choix (ce qui aura pour effet d’ajouter la page correspondante au glossaire et ajouter l’hyperlien dans le PDF) :

\glsdisp{<label>}{<texte à afficher>}

 

Je suis loin d’avoir fait le tour de glossaries, donc si vous voulez plus d’info, je vous invite à vous rendre sur la page de la documentation ou sur le WikiBook dédié.

Utilisation du package Glossaries
4.6 (91.11 %) 9 votes
  • Pingback: Template complet pour manuscrit de thèse | Le Blog de Dorian()

  • Fred02840

    Bonjour,

    J’ai un document .tex (voir ci-dessous) qui me sert à tester Glossaries. L’objectif est de créer un lexique sans me baser sur un texte utilisant au préalable les mots répertoriés (d’où la commande glsaddall). Dans TeXmaker (après être passé par TeXShop, TeXStudio et TeXworks), j’ai créé une commande de compilation personnelle (makeglossaries, puis makeglossaries %). La compilation se fait en quatre étapes : Latex (ou pdflatex : j’ai essayé aussi…) – Makeglossaries – Latex – Latex. Et j’obtiens une superbe sortie pdf avec un numéro de page (1, pour être précis). Mais pas la moindre trace du glossaire.

    Comment faire ?

    Merci de votre réponse,
    Fred

    documentclass[french]{article}
    usepackage[utf8]{inputenc}
    usepackage[T1]{fontenc}
    usepackage{lmodern}
    usepackage[a4paper]{geometry}
    usepackage{babel}
    usepackage[xindy,ucmark]{glossaries}

    makeglossaries

    newglossaryentry{tex}{%
    name={TeX},
    description={système de composition de beaux documents}
    }

    newglossaryentry{latex}{%
    name={LaTeX},
    description={collection de macro-commandes destinées à faciliter l’utilisation de gls{tex}}
    }

    newglossaryentry{r0}{name=glslink{R0}{ensuremath{R_{0}}},text=F »{o}rster distance,description={F »{o}rster distance, where 50% …}, sort=R}

    newglossaryentry{kdeac}{name=glslink{R0}{ensuremath{k_{DEAC}}},text=$k_{DEAC}$, description={is the rate of deactivation from … and emission)}, sort=k}

    glsaddall

    begin{document}
    printglossary
    end{document}

    • Salut !
      Désolé pour la réponse tardive, je rentre tout juste de vacances.
      Dans tes entrées, tu fais référence à « R0 », qui n’existe pas (et tu sembles voir faire un lien de R0 vers elle-même, ce qui est un peu curieux 🙂 .
      Pourquoi veux-tu compiler deux fois avec avec makeglossaries ? D’autant plus que ta première compilation avec makeglossaries se fait sans fichier cible (pas de « % »).

      Bonne soirée.

  • Pingback: Principales règles typographiques pour les articles scientifiques | Le Blog de Dorian()