Abkürzungsverzeichnis mit nomencl

Posted by quark007 | Posted in LaTeX | Posted on 13-12-2010-05-2008

9

Ich habe mich heute intensiver mit einem Abbildungsverzeichnis auseinander gesetzt und gemerkt, dass es garnicht so einfach ist, wie es ausschaut. Leider gibts es auch kein Paket das man einbindet und ohne weiteres loslegen kann. Es ist noch etwas Handarbeit notwendig. Ich habe das Problem mit dem Paket nomencl gelöst.

zunächst ist wie bei allen Anderen Erweiterungen auch hier wieder ein Paket einzubinden. Funktioniert ganz einfach mittels

\usepackage{nomencl}

Doch damit ist es noch nicht getan. Das Paket funktioniert zwar, aber es gibt noch einige Dinge die zunächst erledigt werden müssen. Diese habe ich in foldem Code zusammen gefasst:

\usepackage{nomencl}
\renewcommand{\nomname}{Überschrift für das Abkürzungsverzeichnis}
\setlength{\nomlabelwidth}{.20\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
\setlength{\nomitemsep}{-\parsep}
\makenomenclature
  1. Die erste Zeile erklärt sich von alleine, dabei wird lediglich die Erweiterung geladen.
  2. Der zweite Befehl ändert den Titel des Abkürzungsverzeichnisses. Dieser ist beliebig zu wählen.
  3. Mit \setlength wird der Abstand zwischen Abkürzung und Erläuterung festgelegt.
  4. Anschließend wir noch der Zwischenraum mit Punkte ausgefüllt zur leichteren Zuordnung von Abkürzung und Erklärung
  5. Es folgt die Variation des Abstandes der einzelnen Abkürzungen zu einander.
  6. \makenomenclature ist dabei jedoch der wichtigste Befehl: mit ihm wird festgelegt, dass ein Index erzeugt werden soll, in dem alle Abkürungen auftauchen. Wird dieser nicht erstellt, so kann auch das Abkürzungsverzeichnis nicht erstellt werden.

!!ACHTUNG!! Außerdem muss dieser Befehl auch im Header, also vor \begin{document} geschrieben werden !!ACHTUNG!!

Um das Abkürzungsverzeichnis auch im Inhaltsverzeichnis aufgelistet zu sehen muss noch eine Option beim Laden des Paketes gesetzt werden. Der Befehl sieht dann wie folgt aus:

\usepackage[intoc]{nomencl}

mit [intoc] tauchen die Abkürzungen dann auch im Inhaltsverzeichnis auf. Wo diese Liste auftaucht kann ganz einfach mit bestimmt werden.

Abkürzungen selber werden wie folgt definiert:

\nomenclature[prefix]{symbol}{description}

Die Abkürzungen müssen nicht im Header sondern können auch im Fließtext definiert werden. Zum Beispiel sähe dies wie folgt aus

\nomenclature{PC}{\uline{P}ersonal \uline{C}omputer}

Um das Abkürzungsverzeichnis abzubilden muss an diese Stelle lediglich der folgende Befehl eingefügt werden:

\printnomenclature

Jetzt kommt aber die eigentliche Schwierigkeit: LaTeX gibt lediglich (in den neuen Versionen) eine *.nlo-Datei aus. Darin sind die Abkürzungen jedoch noch nicht sortiert und außerdem kann LaTeX mit dem File so noch nichts anfangen! Dieses muss erst noch konvertiert werden. Dazu kopiert (oder läd sich) die Datei nomencl.ist in das aktuelle Arbeitsverzeichnis (anders hat es bei mir nicht geklappt). Mit dieser Datei kann nun die *.nlo in eine *.nls konvertiert werden, die LaTeX dann lesen kann und auch als Abkürzungsverzeichnis einbinden kann. Der Code dafür

makeindex [Dokument].nlo -s nomencl.ist -o [Dokument].nls

muss über die Eingabeaufforderung (CMD) in dem aktuellen Arbeitsverzeichnis ausgeführt werden, in dem sich also die LaTeX-Dateien befinden. Navigieren funktioniert immernoch über „..“ (eine Ebene zurück) und „cd [ORDNER-NAME]“ (In den angebenen Ordner wechseln).

Benutzt man allerdings das TexnicCenter so gibt es eine Vereinfachung: man kann diesen Befehl als standardmäßig ausführen lassen. Dazu geht man wie folgt vor:

  1. Im TexnicCenter auf „Ausgabe“ in der Datei-Leiste klicken und „Ausgabeprofile definieren“ auswählen
  2. „LaTeX =>pdf (oder euer entsprechends Profil auswählen)
  3. Den Reiter „Nachbearbeitung“ aufrufen.
  4. Dort eine neue Prozedur hinzufügen (oben rechts sind die Knöpfe dafür)
  5. Einen Namen eingeben für die Prozedur
  6. als Anwendung den Pfad zu eurer makeindex eingeben (z.B. C:\MiKTeX\miktex\bin\makeindex.exe)
  7. "%bm".nlo -s nomencl.ist -o "%bm".nls

    als Argumente übergeben Lars hat darauf hingewiesen, dass meine Losung bei ihm zu Fehlern führte. Beim ihm mussten die Argumente wie folgt aussehen:

    %tm.nlo" -s "C:\Pfad zu MiKTeX 2.9\makeindex\nomencl\nomencl.ist" -o "%tm.nls<\pre> vielleicht hilft das dem einen oder Anderen weiter
    
  8. auf OK klicken und das Dokument nun wie gewohnt kopilieren

Das ganze sieht dann so aus:TexnicCenter Konfiguration

Falls man kein TexnicCenter benutzen möchte kann man sich alternativ auch eine *.bat-Datei schreiben und diese immer vorm kompilieren manuell ausführen :P

Nun noch ein paar Links die mir nützlich waren und euch vielleicht auch noch weiter helfen:

  • [LINK] Dokumentation zu nomencl
  • [LINK] ein Blog von Timo Meinen
  • [LINK] nochmals ein Blog diesmal von Stefan Macke