Glossare und Nomenklatur

Am Ende des Dokuments soll eine Liste von Abkürzungen und Begriffen oder eine Symboltabelle stehen, und zwar nur mit den tatsächlich im Text vorkommenden Einträgen, automatisch sortiert. Von Hand gepflegt führt schon ein neuer Begriff zu erneutem Sortieren und Nummernabgleich. LaTeX hat dafür zwei spezialisierte Werkzeuge. Das Paket glossaries und sein moderner Nachfolger glossaries-extra erzeugen ein Glossar von Begriffen und Abkürzungen; nomencl ist speziell für eine Nomenklatur, also eine Liste mathematischer Symbole, gedacht. Wie Index und Querverweise funktionieren beide, indem man Einträge im Text markiert, sie mit einem externen Programm sortiert und sie in einem zusätzlichen LaTeX-Lauf einliest.

Glossare — Grundlagen

glossaries erlaubt, jeden Begriff, jede Notation oder Abkürzung einmal in der Präambel zu definieren und dann im Text mit einem kurzen Befehl aufzurufen. Laden Sie zuerst das Paket und schreiben Sie dann \makeglossaries. Diese Zeile öffnet die Glossardateien; fehlt sie, wird überhaupt kein Glossar erzeugt. Hinweis: Wenn Sie hyperref verwenden, laden Sie glossaries nach hyperref; das ist eine Ausnahme von der Regel, hyperref zuletzt zu laden.

Einen Begriff definieren Sie mit \newglossaryentry{key}{name=..., description=...}. Das erste Argument key ist das Referenzetikett, eine frei gewählte Zeichenkette; das zweite ist eine Liste von key=value-Einstellungen, vor allem name als angezeigter Name und description als Erklärung. Im Text verwenden Sie den Begriff mit \gls{key}: Das fügt name ein und vermerkt zugleich, dass der Begriff im Glossar erscheinen soll.

latex
\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}

Zu \gls gibt es Varianten für Großschreibung und Plural; man wechselt durch Änderung der Anfangsbuchstaben. Der automatisch aus name gebildete Plural ist nur name plus „s“, daher muss eine unregelmäßige Form wie matrices ausdrücklich mit dem Schlüssel plural angegeben werden. Wenn die Referenzform vom Anzeigenamen abweichen soll, verwenden Sie text; ein zugehöriges Symbol kommt in den Schlüssel symbol.

BefehlAusgabeVerwendung
\gls{set}setGewöhnliche Referenz in Kleinschreibung
\Gls{set}SetErster Buchstabe groß, etwa am Satzanfang
\glspl{matrix}matricesPluralform
\Glspl{matrix}MatricesPlural mit großem Anfangsbuchstaben
\glsdesc{set}a collection of distinct objectsFügt das Feld description ein

Abkürzungen — beim ersten Auftreten ausschreiben

Für Abkürzungen gibt es den eigenen Befehl \newacronym{key}{short}{long}: short ist die Abkürzung, etwa SVM, long die Langform, etwa support vector machine. Ein Aufruf mit \gls{key} schaltet automatisch um: Beim ersten Auftreten erscheint „Langform (Kurzform)“, danach nur noch die Kurzform. So wird die Konvention, eine Abkürzung beim ersten Auftreten auszuschreiben, automatisch eingehalten. Für eine separate Abkürzungsliste laden Sie das Paket mit \usepackage[acronym]{glossaries}.

latex
\usepackage[acronym]{glossaries}
\makeglossaries

\newacronym{svm}{SVM}{support vector machine}

\begin{document}
\gls{svm} は強力だ。% 初出: support vector machine (SVM)
その後も \gls{svm} を使う。% 2回目以降: SVM
\end{document}

Das Erstverwendungs-Flag wird für jeden Eintrag über das ganze Dokument verfolgt. Um einen Begriff ab einer bestimmten Stelle erneut vollständig auszuschreiben, verwenden Sie \glsreset{key}; für alle Einträge zugleich \glsresetall. Wenn eine Beschreibung über mehrere Absätze reicht, verwenden Sie \longnewglossaryentry statt \newglossaryentry.

Der Build — makeglossaries ist nötig

Wie ein Index erscheint auch ein Glossar nicht nach einem einzigen LaTeX-Lauf. LaTeX schreibt die von \gls und ähnlichen Befehlen erfassten Begriffe nur in Hilfsdateien; es sortiert und formatiert sie nicht. Dafür läuft das externe Programm makeglossaries, ein Perl-Skript, das die Dokumenteinstellungen prüft und intern passend makeindex oder xindy aufruft, um ein sortiertes Glossar zu erzeugen. Der Ablauf hat drei Schritte.

terminal
pdflatex mydoc      # 用語をファイルへ書き出す / write the recorded terms
makeglossaries mydoc # 整列・整形(拡張子なし)/ sort & format (no extension)
pdflatex mydoc      # 用語集を本文へ流し込む / pull the glossary into the document

Wo Perl nicht verfügbar ist, etwa auf manchen Windows-Systemen, übernimmt das Lua-basierte makeglossaries-lite dieselbe Aufgabe. Wenn Sie makeglossaries auslassen und nur pdflatex erneut laufen lassen, bleibt das Glossar leer, genau wie ein Index ohne makeindex. Auf Overleaf laufen die nötigen Schritte im Hintergrund automatisch, sodass man sich selten um diese Reihenfolge kümmern muss.

Der moderne Weg — glossaries-extra und bib2gls

glossaries-extra vom selben Autor Nicola Talbot ist ein höheres Paket, das glossaries erweitert und derzeit die empfohlene Konfiguration ist. Die moderne Build-Methode dazu ist bib2gls. Die Idee ähnelt biber für Bibliografien: Sie sammeln die Begriffe in einer .bib-Datei, und bib2gls wählt nur die im Text tatsächlich verwendeten Begriffe, sortiert sie und liest sie ein. Ein einziges Programm übernimmt damit Auswahl und Sortierung, also die Rollen von makeindex/xindy.

Dazu laden Sie das Paket mit der Option record: \usepackage[record]{glossaries-extra}. Das ist der Schlüssel zur bib2gls-Integration: Die Indexierung mit makeindex/xindy wird ausgeschaltet, stattdessen werden Datensätze in die .aux-Datei geschrieben. Jeder Eintrag in der .bib-Datei verwendet einen Typ wie @entry für einen Begriff, @abbreviation für eine Abkürzung oder @symbol für ein Symbol.

terms.bib
@entry{set,
  name = {set},
  description = {a collection of distinct objects}
}

@abbreviation{svm,
  short = {SVM},
  long = {support vector machine}
}

Im Dokument laden Sie die .bib-Datei nicht mit \input, sondern mit \GlsXtrLoadResources[src={terms}]; src ist der Dateiname ohne Erweiterung. Begriffe verwenden Sie weiterhin mit \gls{set}, aber gedruckt wird wegen der bereits sortierten Einträge mit \printunsrtglossary. unsrt steht für unsorted: bib2gls hat schon sortiert, also wird unverändert ausgegeben.

latex
\usepackage[record]{glossaries-extra}
\GlsXtrLoadResources[src={terms}]% terms.bib を読む / load terms.bib

\begin{document}
\gls{set}\gls{svm} を本文で使う。
\printunsrtglossary
\end{document}

Beim Build rufen Sie statt makeglossaries bib2gls auf. Die Option --group teilt Einträge in Gruppenüberschriften nach Anfangsbuchstaben; pdflatex können Sie durch xelatex oder lualatex ersetzen.

terminal
pdflatex mydoc
bib2gls --group mydoc   # .aux を読み .glstex を書き出す / read .aux, write .glstex
pdflatex mydoc

Nomenklatur — das Paket nomencl

Wenn am Anfang einer Arbeit eine Liste der verwendeten Symbole stehen soll, geht das auch mit glossaries; für reine Symbole ist das leichte Paket nomencl aber bequem. Setzen Sie \usepackage{nomencl} und \makenomenclature in die Präambel, markieren Sie jedes Symbol beim ersten Auftreten mit \nomenclature{symbol}{description}, und schreiben Sie \printnomenclature an die Stelle, an der die Liste erscheinen soll. Symbole sind Mathematik, also stehen sie in $...$.

document.tex
\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}

Üblicherweise beendet man die Zeile direkt vor \nomenclature mit %, damit kein unerwünschtes Leerzeichen oder Zeilenende hineinkriecht; ein Leerzeichen um das Symbol stört die Sortierung. Für genaue Kontrolle der Reihenfolge können Sie einen Sortierschlüssel als optionales Argument angeben: In \nomenclature[<prefix>]{symbol}{description} wird <prefix> sortiert. Ein griechischer Buchstabe \sigma würde sonst wegen des führenden Backslash sehr früh einsortiert; mit \nomenclature[g-sigma]{$\sigma$}{...} steuern Sie seine Position.

nomencl bauen und anpassen

nomencl verwendet intern makeindex. Mit \makenomenclature schreibt LaTeX die Symbolinformationen in eine .nlo-Datei. Der nächste Befehl sortiert sie mit dem mitgelieferten Stil nomencl.ist und erzeugt die Ausgabe .nls. Nach einem weiteren LaTeX-Lauf wird .nls eingelesen und die Nomenklatur erscheint.

terminal
pdflatex mydoc
makeindex mydoc.nlo -s nomencl.ist -o mydoc.nls
pdflatex mydoc

Die Überschrift lautet standardmäßig „Nomenclature“. Sie können sie ändern, etwa mit \renewcommand{\nomname}{List of Symbols}. Soll sie im Inhaltsverzeichnis erscheinen, laden Sie das Paket als \usepackage[intoc]{nomencl}. Es gibt auch Optionen, die jeden Eintrag automatisch ergänzen: refpage hängt „, page n“ an, refeq „, see equation (n)“. Um Symbole in Gruppen wie physikalische Konstanten oder Variablen zu teilen, verwenden Sie den Sortierpräfix zusammen mit einer neu definierten \nomgroup-Anweisung für Untergruppen mit eigenen Überschriften.

  • Für Begriffe und Abkürzungen verwenden Sie glossaries/glossaries-extra. Erstverwendung, Plural und Großschreibung laufen automatisch.
  • Neu anfangen? Verwenden Sie glossaries-extra + bib2gls. Einträge stehen in einer .bib; \printunsrtglossary gibt nur verwendete, bereits sortierte Begriffe aus.
  • Für eine reine Liste mathematischer Symbole verwenden Sie nomencl. Es ist leichtgewichtig: mit \nomenclature markieren und einmal makeindex laufen lassen.
  • Alle benötigen einen zusätzlichen Lauf. Zwischen LaTeX-Läufe kommt ein externes Programm (makeglossaries / bib2gls / makeindex), danach läuft LaTeX erneut.