Vous voulez une liste d’abréviations et de termes, ou une table de symboles, en fin de document, avec seulement les termes réellement employés et un tri automatique. Construire cette table à la main impose de retrier et renuméroter dès qu’un terme apparaît. LaTeX fournit deux outils spécialisés. Le package glossaries, et son successeur moderne glossaries-extra, crée un glossaire de termes et d’abréviations ; le package nomencl est conçu pour une nomenclature, une liste de symboles mathématiques. Comme l’index et les références croisées, les deux fonctionnent en marquant les entrées dans le corps, en les triant avec un programme externe, puis en les réinjectant lors d’une compilation supplémentaire.
Glossaires — bases
glossaries permet de définir chaque terme, notation ou abréviation une fois dans le préambule, puis de l’appeler dans le corps par une courte commande. Chargez d’abord le package, puis écrivez \makeglossaries. Cette ligne déclare l’ouverture des fichiers de glossaire ; si vous l’oubliez, aucun glossaire n’est produit. Attention : si vous utilisez hyperref, chargez glossaries après hyperref, exception à la règle habituelle qui veut que hyperref soit chargé en dernier.
Un terme se définit avec \newglossaryentry{key}{name=..., description=...}. Le premier argument, key, est l’étiquette de référence, une chaîne libre ; le second est une liste de paramètres key=value, principalement name, le nom affiché, et description, la définition. Pour utiliser le terme dans le corps, écrivez \gls{key} : cela insère name et enregistre en même temps que le terme doit figurer dans le glossaire.
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{set}{%
name={set},
description={a collection of distinct objects}%
}
\newglossaryentry{matrix}{%
name={matrix},
plural={matrices},% 不規則な複数形を明示 / irregular plural
description={a rectangular array of numbers}%
}
\begin{document}
本文で \gls{set} と \glspl{matrix} に言及する。
\printglossary
\end{document}\gls possède des variantes pour la capitale initiale et le pluriel ; il suffit de changer les premières lettres de la commande. Le pluriel construit automatiquement depuis name ajoute simplement « s » ; une forme irrégulière comme matrices doit donc être donnée explicitement avec la clé plural. Si la forme de référence doit différer du nom affiché, utilisez text ; un symbole associé va dans la clé symbol.
| Commande | Sortie | Usage |
|---|---|---|
\gls{set} | set | Référence ordinaire en minuscules |
\Gls{set} | Set | Mettre la première lettre en majuscule |
\glspl{matrix} | matrices | Forme plurielle |
\Glspl{matrix} | Matrices | Pluriel avec capitale initiale |
\glsdesc{set} | a collection of distinct objects | Insère le champ description |
Acronymes — développer à la première occurrence
Les abréviations ont une commande dédiée, \newacronym{key}{short}{long} : short est l’abréviation, par exemple SVM, et long la forme complète, par exemple support vector machine. Appelez-la avec \gls{key} et le basculement se fait automatiquement : la première occurrence affiche « forme longue (forme courte) », puis les suivantes seulement la forme courte. La convention consistant à développer une abréviation à sa première apparition est donc appliquée par le système. Pour rassembler les acronymes dans une liste séparée, chargez le package avec \usepackage[acronym]{glossaries}.
\usepackage[acronym]{glossaries}
\makeglossaries
\newacronym{svm}{SVM}{support vector machine}
\begin{document}
\gls{svm} は強力だ。% 初出: support vector machine (SVM)
その後も \gls{svm} を使う。% 2回目以降: SVM
\end{document}Le drapeau de première occurrence est suivi entrée par entrée dans tout le document. Pour forcer un terme à être redéveloppé à partir d’un point donné, utilisez \glsreset{key} ; pour tout réinitialiser, \glsresetall. Si une description est assez longue pour couvrir plusieurs paragraphes, utilisez \longnewglossaryentry au lieu de \newglossaryentry.
Build — makeglossaries est nécessaire
Comme l’index, un glossaire n’apparaît pas après une seule compilation. LaTeX se contente d’écrire les termes enregistrés par \gls et autres dans des fichiers auxiliaires ; il ne les trie ni ne les met en forme. Il faut donc lancer le programme externe makeglossaries, un script Perl qui inspecte les réglages du document et appelle en interne makeindex ou xindy selon le cas, produisant un glossaire trié. La procédure comporte trois étapes.
pdflatex mydoc # 用語をファイルへ書き出す / write the recorded terms
makeglossaries mydoc # 整列・整形(拡張子なし)/ sort & format (no extension)
pdflatex mydoc # 用語集を本文へ流し込む / pull the glossary into the documentLà où Perl n’est pas disponible, par exemple sous Windows, makeglossaries-lite, écrit en Lua, joue le même rôle. Si vous oubliez makeglossaries et relancez seulement pdflatex, le glossaire reste vide, exactement comme un index sans makeindex. Sur Overleaf, les étapes nécessaires s’exécutent automatiquement en arrière-plan ; il est donc rare d’avoir à penser à cette séquence.
La méthode moderne — glossaries-extra et bib2gls
Du même auteur, Nicola Talbot, glossaries-extra est un package de niveau supérieur qui étend glossaries et constitue aujourd’hui la configuration recommandée. La méthode de build moderne à lui associer est bib2gls. L’idée ressemble à biber pour les bibliographies : vous regroupez les termes dans un fichier .bib, et bib2gls sélectionne seulement ceux réellement utilisés dans le corps, les trie et les importe. Un seul programme reprend les rôles de makeindex/xindy, sélection et tri.
Pour l’utiliser, chargez le package avec l’option record : \usepackage[record]{glossaries-extra}. C’est la clé de l’intégration bib2gls : l’indexation par makeindex/xindy est désactivée, et les enregistrements sont écrits dans le fichier .aux. Chaque entrée du fichier .bib utilise un type comme @entry pour un terme, @abbreviation pour une abréviation, ou @symbol pour un symbole.
@entry{set,
name = {set},
description = {a collection of distinct objects}
}
@abbreviation{svm,
short = {SVM},
long = {support vector machine}
}Dans le document, au lieu de \input, chargez le .bib avec \GlsXtrLoadResources[src={terms}] ; src est le nom de fichier sans extension. Les termes s’utilisent toujours avec \gls{set}, mais comme les entrées sont déjà triées, on imprime avec \printunsrtglossary. unsrt signifie unsorted : bib2gls les a déjà ordonnées, on les émet donc telles quelles.
\usepackage[record]{glossaries-extra}
\GlsXtrLoadResources[src={terms}]% terms.bib を読む / load terms.bib
\begin{document}
\gls{set} と \gls{svm} を本文で使う。
\printunsrtglossary
\end{document}Pour le build, vous appelez bib2gls à la place de makeglossaries. L’option --group divise les entrées en groupes par initiale ; vous pouvez remplacer pdflatex par xelatex ou lualatex.
pdflatex mydoc
bib2gls --group mydoc # .aux を読み .glstex を書き出す / read .aux, write .glstex
pdflatex mydocNomenclature — le package nomencl
Si vous voulez une liste des symboles au début d’un article, glossaries peut le faire, mais pour les seuls symboles le package léger nomencl est pratique. Placez \usepackage{nomencl} et \makenomenclature dans le préambule, marquez chaque symbole à sa première apparition avec \nomenclature{symbol}{description}, puis écrivez \printnomenclature là où la liste doit apparaître. Les symboles sont mathématiques ; entourez-les donc de $...$.
\documentclass{article}
\usepackage{nomencl}
\makenomenclature
\begin{document}
重力加速度を $g$ とする。%
\nomenclature{$g$}{gravitational acceleration}%
質量 $m$ の物体には $F = mg$ が働く。%
\nomenclature{$m$}{mass of the object}%
\nomenclature{$F$}{force}%
\printnomenclature
\end{document}Il est d’usage de terminer la ligne juste avant \nomenclature par %, afin qu’aucun espace ou retour à la ligne parasite ne s’insère ; un espace autour du symbole fausse le tri. Pour contrôler précisément l’ordre, donnez une clé de tri en argument optionnel : dans \nomenclature[<prefix>]{symbol}{description}, c’est <prefix> qui sert au tri. Par exemple, la lettre grecque \sigma se placerait trop tôt à cause de la barre oblique inverse initiale ; on ajuste sa position avec un préfixe comme \nomenclature[g-sigma]{$\sigma$}{...}.
Construire et régler nomencl
nomencl utilise makeindex en interne. Avec \makenomenclature, LaTeX écrit les informations de symboles dans un fichier .nlo. La commande suivante les trie avec le style nomencl.ist fourni par nomencl et produit le fichier .nls. Compilez encore une fois : .nls est lu et la nomenclature apparaît.
pdflatex mydoc
makeindex mydoc.nlo -s nomencl.ist -o mydoc.nls
pdflatex mydocLe titre par défaut est l’anglais « Nomenclature ». Vous pouvez le changer, par exemple avec \renewcommand{\nomname}{List of Symbols}. Pour l’ajouter à la table des matières, chargez le package comme \usepackage[intoc]{nomencl}. Des options annotent aussi chaque entrée automatiquement : refpage ajoute « , page n », et refeq ajoute « , see equation (n) ». Pour répartir les symboles en groupes, constantes physiques, variables, etc., utilisez le préfixe de tri avec une redéfinition de \nomgroup afin de produire des sous-groupes titrés.
- Pour un glossaire de termes et d’abréviations, utilisez
glossaries/glossaries-extra. Développement à la première occurrence, pluriels et capitalisation sont automatiques. - Pour un nouveau projet, utilisez
glossaries-extra+bib2gls. Écrivez les entrées dans un.bib, et\printunsrtglossaryémet seulement les termes utilisés, déjà triés. - Pour une simple liste de symboles mathématiques, utilisez
nomencl. Il est léger : marquez avec\nomenclatureet lancezmakeindexune fois. - Tous demandent une compilation supplémentaire. Insérez le programme externe (
makeglossaries/bib2gls/makeindex), puis relancez LaTeX.