====== Wie erstelle ich eine Nomenklatur/ Abkürzungsverzeichnis/ Formelzeichenverzeichnis? ======
Es gibt mehrere Pakete die sich mit dem Erstellen der oben genannten
Verzeichnisse beschäftigen. Die bekanntesten sind nomencl und glossaries. Das
glossary Paket ist veraltet und sollte nicht mehr verwendet werden.
Das nomencl Paket ist nur zu empfehlen wenn man nur eines der genannten
Verzeichnisse erstellen möchte. Wer eine Kombination von Verzeichnissen
benötigt, also z.B. Abkürzungs- und Formelzeichenverzeichnis, der ist besser
mit dem glossaries Paket beraten da sich dieses leichter konfigurieren lässt.
Beide Pakete haben den gleichen Grundansatz:
Man definiert Begriffe, Formelzeichen o.ä. mit einem vom Paket
bereitgestellten Befehl. Beim Kompilieren mit (pdf)latex werden diese Befehle
erkannt, gesammelt und in eine neue Datei geschrieben. Zum Sortieren der
Einträge wird dann makeindex aufgerufen. Makeindex ist ein externes Programm
das sowohl MikTeX als auch TeXlive standardmäßig beiliegt.
Makeindex liest die Datei in der die Begriffe gesammelt wurden ein,sortiert diese und schreibt erneut eine Datei mit den sortierten Begriffen und eventuellen Sonderinformationen wie z.B. die Seiten auf denen der Begriff verwendet wurde.
Nomencl und glossaries benötigen einen spezifischen Aufruf von makeindex der
in der Regel im Editor nicht voreingestellt ist. Dies ist eine häufige
Fehlerquelle. Mehr zum Aufruf von makeindex ist in den unterstehenden
Beispielen zu finden.
Eine insbesondere für UTF8 / Unicode Dokumente sinnvolle Alternative zu //makeindex// ist //xindy//. Dafür ist dies als Option in //\usepackage[xindy]{glossaries}// einzufügen, zudem die Option //-shell-escape// für den LaTeX-Compiler (pdflatex, xelatex, lualatex).
===== glossaries =====
Ein Verzeichnis (Beispiel: Glossar)
Glossaries hat ein Standardverzeichnis 'main' das man z.B. als Glossar direkt verwenden kann.
%Datei glossarbsp.tex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{glossaries}
\makeglossaries
%Begriffdefinition
\newglossaryentry{apf}{name=Apfel, description={Ost aus der Gruppe der Kernobstgewächse}}
\begin{document}
%Verwendung des Labels, wird im Text als 'Apfel' angezeigt.
\gls{apf}
%Ausgabe mit gewünschter Verzeichnisüberschrift
\printglossary[title=Glossar]
\end{document}
Folgende Kompilierreihenfolge ist einzuhalten:
- pdf(latex)
- makeindex
- (pdf)latex
Für den makindex Aufruf hat man nun zwei Möglichkeiten. Expliziter Aufruf oder
Aufruf über das mitgelieferte Perl-Skript. Tipp: Der Aufruf per Skript ist
auf jeden Fall zu empfehlen wenn man mehrere Verzeichnisse möchte.
1) Explizit:
Am einfachsten ist der Aufruf in einem Terminal. (Zur Vereinfachung lässt sich dieser Schritt auch im Editor als Prozedur einrichten)
Windows:
Start -> Programme ->Zubehör -> Eingabeaufforderung
Von dort aus in das Projektverzeichnis in dem ''glossarbsp.tex'' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeindex -s glossarbsp.ist -t glossarbsp.glg -o glossarbsp.gls glossarbsp.glo
Linux:
Ein Terminal öffnen (z.B. Strg+Alt+T drücken).
Von dort aus in das Projektverzeichnis in dem ''glossarbsp.tex'' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeindex -s glossarbsp.ist -t glossarbsp.glg -o glossarbsp.gls glossarbsp.glo
2) Perl-Skript
Glossaries bringt ein Perl-Skript mit welches den Aufruf von makeindex stark vereinfacht
Windows:
Es wird ein installierter Perl Interpreter benötigt. Kostenlos ist z.B. Active Perl.
Start ->Programme ->Zubehör -> Einbageaufforderung
Von dort aus in das Projektverzeichnis in dem ''glossarbsp.tex'' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeglossaries glossarbsp
Linux:
Ein Terminal öffnen (z.B. Strg+Alt+T drücken).
Von dort aus in das Projektverzeichnis in dem ''glossarbsp.tex'' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeglossaries glossarbsp
Mehrere Verzeichnisse (Beispiel: Glossar, Abkürzungen, Formelzeichen)
Ein Glossar wird mit dem Standardverzeichnistyp 'main' erstellt. Per Option wird außerdem ein Abkürzungsverzeichnis erstellt
\usepackage[acronym]{glossaries}
Um auch noch ein Formelzeichen-Verzeichnis zu bekommen, muss ein neuer Eintragtyp definiert werden.
\newglossary[fog]{formel}{foi}{foo}{Formelzeichen}
''foi'' und ''foo'' sind hierbei die Dateiendungen die die neuen Dateien erhalten die im laufe des Kompilierens erstellt werden, ''fog'' ist der Name der log-Datei.
Bei Formelzeichen merkt man schnell, dass man mit den vorhandenen Eintragtypen nicht auskommt. Denn ein Zeichen hat einen Namen (name=), eine Beschreibung (description=) ein mathematisches Symbol (symbol=) aber oft auch eine Einheit. Dafür kann man einen der user-Einträge verwenden.
\newglossaryentry{dichte}{
name=Dichte,
description={Verhältnis von Gewicht zu Volumen},
symbol={$\rho$},
type=formel,
user1={kg/m3}
}
Erstellt man nun das Verzeichnis stellt man fest, dass die Einheit nicht mit ausgegeben wird. Das liegt daran, dass glossaries nicht weiß wo es diesen Eintrag darstellen soll. Deshalb muss man einen eigenen 'style' bemühen der diesen Eintrag mit anzeigt. Hier im Beispiel wird eine longtable-Tabelle verwendet. Der Stil wird unter eigenem Namen als 'mytab' abgespeichert. Bei der Ausgabe wird dann mit ''style=mytab'' explizit der Stil des Verzeichnisses angegeben. Möchte man im ''symbol='' mathematischen Zeichen angeben, muss außerdem dem Paket die Option ''sanitize={symbol=false}'' mitgegeben werden.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{longtable}
\usepackage[acronym,sanitize={symbol=false}]{glossaries}
%Neuer Eintragstyp
\newglossary[fog]{formel}{foi}{foo}{Formelzeichen}
%Ein neuer Verzeichnisstil der auch die Einheit mit ausgibt
\newglossarystyle{mytab}{%
% Verzeichnis wird ein 'longtable' mit 5 Spalten
\renewenvironment{theglossary}%
{\begin{longtable}{lccp{\glsdescwidth}p{\glspagelistwidth}}}%
{\end{longtable}}%
% Kopf der Tabelle
\renewcommand*{\glossaryheader}{%
\bfseries Name & \bfseries Symbol & \bfseries Einheit & %
\bfseries Bescheibung & \bfseries Seite(n) %
\\\endhead}%
% Kein Abstand zwischen Gruppen
\renewcommand*{\glsgroupheading}[1]{}%
%
\renewcommand*{\glossaryentryfield}[5]{%
% \glsentryitem{##1}% Entry number if required
\glstarget{##1}{##2}% Name
& ##4 %Symbol
& \glsentryuseri{##1}%Einheit
& ##3% Description
& ##5% Page list
\\% end of row
}%
% The command \glsgroupskip specifies what to do between glossary groups.
% Glossary styles must redefine this command. (Note that \glsgroupskip
% only occurs between groups, not at the start or end of the glossary.)
\renewcommand*{\glsgroupskip}{\relax}
}
\makeglossaries
%Einteag im Glossar
\newglossaryentry{apf}{name=Apfel,
description={Ost aus der Gruppe der Kernobstgewächse}}
%Eintrag ins Abkürzungsverzeichnis
\newacronym{cd}{CD}{Compact Disk}
\newglossaryentry{dichte}{
name=Dichte,
description={Verhältnis von Gewicht zu Volumen},
symbol={$\rho$},
type=formel,
user1={km/m3}
}
\begin{document}
\gls{apf}
\gls{cd}
\gls{dichte} % =Dichte
\glssymbol{dichte} %= $\rho$
\printglossary[title=Glossar,type=main]
\printglossary[title=Abkürzungen,type=\acronymtype]
\printglossary[title=Formelzeichen,type=formel,style=mytab]
\end{document}
Folgende Kompilierreihenfolge ist einzuhalten:
- pdf(latex)
- makeindex
- (pdf)latex
Für den makindex Aufruf hat man nun zwei Möglichkeiten. Expliziter Aufruf oder Aufruf über das mitgelieferte Perl-Skript.
Tipp: Der Aufruf per Skript ist auf jeden Fall zu empfehlen wenn man mehrere Verzeichnisse möchte.
1) Explizit:
Am einfachsten ist der Aufruf in einem Terminal. (Zur Vereinfachung lässt sich dieser Schritt natürlich auch im Editor als Prozedur einrichten)
Windows:
Start ->Programme ->Zubehör -> Einbageaufforderung
Von dort aus in das Projektverzeichnis in dem 'glossarbsp.tex' liegt navigieren.
Im Verzeichnis dann folgende Befehle ausführen:
makeindex -s glossarbsp.ist -t glossarbsp.glg -o glossarbsp.gls glossarbsp.glo
makeindex -s glossarbsp.ist -t glossarbsp.alg -o glossarbsp.acr glossarbsp.acn
makeindex -s glossarbsp.ist -t glossarbsp.fog -o glossarbsp.foi glossarbsp.foo
Linux:
Ein Terminal öffnen (z.B. Strg+Alt+T drücken).
Von dort aus in das Projektverzeichnis in dem 'glossarbsp.tex' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeindex -s glossarbsp.ist -t glossarbsp.glg -o glossarbsp.gls glossarbsp.glo
makeindex -s glossarbsp.ist -t glossarbsp.alg -o glossarbsp.acr glossarbsp.acn
makeindex -s glossarbsp.ist -t glossarbsp.fog -o glossarbsp.foi glossarbsp.foo
2) Perl-Skript
Glossaries bringt ein Perl-Skript mit welches den Aufruf von makeindex stark vereinfacht
Windows:
Es wird ein installierter Perl Interpreter benötigt. Kostenlos ist z.B. Active Perl.
Start ->Programme ->Zubehör -> Einbageaufforderung
Von dort aus in das Projektverzeichnis in dem 'glossarbsp.tex' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeglossaries glossarbsp
Linux:
Ein Terminal öffnen (z.B. Strg+Alt+T drücken).
Von dort aus in das Projektverzeichnis in dem 'glossarbsp.tex' liegt navigieren.
Im Verzeichnis dann folgenden Befehl ausführen:
makeglossaries glossarbsp