Abkürzungsverzeichnis mit acronym

Posted by quark007 | Posted in LaTeX | Posted on 31-01-2011-05-2008

1

Nachdem ich in einem früheren Beitrag mich mit dem Abkürzungsverzeichnis schon einmal beschäftigt habe, bin ich nun auf ein weiteres Paket gestoßen, was meiner Meinung nach effektiver und auch umfangreicher ist. Es geht dabei um das acronym-Paket.

Ich war auf der Suche nach „anklickbaren“ Abkürzungen um nicht immer manuell auf die Seite des Abkürzungsverzeichnisses scrollen zu müssen. Google liefert da auch ein schönes Ergebnis, was leider nicht sonderlich schön verpackt ist! Daher möchte ich das Paket hier nochmal genauer Vorstellen.

Wie schön erwähnt, das Paket heißt acronym und lässt sich genauso einbinden, wie alle anderen Pakete auch. Um das Paket zu laden wird folgender Code in den Header geschrieben

\usepackage[]{acronym}

Als nützliche Optionen haben sich für mich die folgenden zwei herauskristallisiert:

  • printonlyused (nur auch benutzte Abkürzungen erscheinen)
  • withpage (die Seitenzahl auf der die Abkürzung das erste mal verwendet wurde erscheint)

Damit ist nun das Paket geladen und man kann sich dran machen, die gewünschten Abkürzungen zu definieren. Das funktioniert wie folgt:

\phantomsection \addcontentsline{toc}{section}{Abkürzungsverzeichnis}
\renewcommand\refname{Abkürzungsverzeichnis} \section*{Abkürzungsverzeichnis}
\begin{acronym}[NMWC] % längste Abkürzung steht in eckigen Klammern
    \setlength{\itemsep}{-\parsep} % geringerer Zeilenabstand
    \acro{krz}{kubisch raumzentriert}
    \acro{hdp}{hexagonal dichteste Packung}
    \acro{FRQ}{Frank-Read-Quelle}
\end{acronym}

Die ersten beiden Zeilen dienen dazu, dass das Abkürzungsverzeichnis im Inhaltsverzeichnis auftaucht und unter einer eigenen Section steht. Die Option des acronym-Bereichs gibt die längste aller Abkürzungen an. Danach wird die Breite der Spalte im Verzeichnis angepasst.

Der obige Code MUSS im Document-Bereich stehen, da an dieser Stelle ebenfalls direkt das Abkürzungsverzeichnis aufgerufen wird. Soll das Abkürzungsverzeichnis jedoch nicht als section sondern als chapter eingefügt werden, so muss lediglich die beiden ersten Zeilen durch diese ersetzt werden:

\phantomsection \addcontentsline{toc}{chapter}{Abkürzungsverzeichnis}
\renewcommand\refname{Abkürzungsverzeichnis} \chapter*{Abkürzungsverzeichnis}

Soll das Abkürzungsverzeichnis mit numeriert werden, einfach das Sternchen* nach \chapter bzw. \section entfernen.

Sind die Abkürzungen nun einmal definiert, so können sie im Text aufgerufen werden, was meiner Meinung nach extrem einfach funktioniert:

\ac{krz}

wobei in diesem Fall „krz“ für die Abkürzung steht. Acronym ist so konfiguriert, dass beim ersten Aufruf einer Abkürzung die volle Bezeichnung mit der Abkürzung in Klammern dahinter ausgegeben wird. Beim nächsten Aufruf erscheint nur noch die Abkürzug, die aber in beiden Fällen anklickbar ist.

Das Paket bietet aber noch viel viel mehr. So lassen sich von von Abkürzungen auch immer die Abkürzung anzeigen (\acs{krz}) oder die volle Bezeichnung (\acf{krz}) oder auch immer beides zusammen (\acl{krz}).

Der Vorteil, dass die Abkürzungen anklickbar sind, besteht jedoch nur, wenn auch das Paket hyperref geladen wurde. Da dieses Paket aber recht nützliche ist, auch um etwa Links in Literaturverzeichnissen oder auch im Text einzufügen, wird es kaum weh tun, dieses auch noch einzubinden.

Abschließend: natürlich ist es wie bei nomencl auch möglich, die Abkürzungen zu verdeutlichen, indem man die zur Abkürzung gehörigen Buchstaben in der vollen Bezeichnung unterstreicht. Das funktioniert entweder mit \markup (dazu muss allerdings ein extra Paket geladen werden) oder mit \underline (was jedoch angeblich Probleme mit dem Zeilenumbruch verursacht: mir noch nicht aufgefallen).

Hier noch ein paar Links euch vielleicht noch weiter helfen:

  • [LINK] Dokumentation zu acronym (für tiefergehende Befehle)
  • [LINK] (09.12.2010) Erklärung zum Einfügen in das Inhaltsverzeichnis
  • [LINK] zu meinem Beitrag über nomencl als Alternative zu acronym

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