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

TUDreport: leere Seite nach Titelblatt

Posted by quark007 | Posted in Fehler, LaTeX | Posted on 21-01-2011-05-2008

0

Bei der Erstellung einer Diplomarbeit gab es ein Problem: nach dem Titelblatt, wird eine leere Seite eingefügt, die eigentlich dazu dient, dass auf der Rückseite des Titelblattes kein Text erscheint sondern erst wieder auf der nächsten rechten Seite.

Das Problem wurde im Endeffekt von der Option „longdoc“ verursacht. Wird diese Option aus der Angabe der \documentclass entfernt, so wird die leere Seite nicht mehr eingefügt. Ist jedoch longdoc von Nöten, so muss man sich die Definition von Longdoc einmal genauer anschauen und den Part mit \openright entfernen.

So weit ich weiß, trifft das auf alle Dokumentenklassen zu, die mit dem KOMA Skript arbeiten.

Tabular/Longtable: !Misplaced \omit

Posted by quark007 | Posted in Fehler, LaTeX | Posted on 21-01-2011-05-2008

7

Folgender Fehler ergab sich mir, den ich beim googlen im Internet nicht erfolgreich gelöst bekam:

! Misplaced \omit.
\multispan ->\omit
\@multispan
l.1068 …-mechanismen (einzeln oder kombiniert)}} &    \textbf{Beispiel}    \\ \h…
I expect to see \omit only after tab marks or the \cr of an alignment. Proceed, and I’ll ignore this case.

Ich hatte mir schon gedacht, dass es um das \multicolumn{} ging, jedoch war ich auf einer falschem Fährte.

Nach dem Fehler wird ausgegeben, in welchem Abschnitt sich der Fehler befindet. Diese Angabe ist in diesem Fall aber irreführend. Der Fehler liegt vor dem Quellcode-Ausschnitt.

Der Fehler will sagen, dass vor einem \multicolumn{} oder auch \multirow{} kein weiterer Wert stehtn darf. Das soll heißen, dass vor \multicolumn{} bzw \multirow{} ein Spaltentrenner also & stehen muss oder eben eine neue Zeile angefangen worden sein muss.

Mich hat verwirrt, dass ich keinen \cr Fehler bekam, der normalerweise ausgegeben wird, wenn die Spaltenangaben der Tabelle nicht mit dem Inhalt der Tabelle übereinstimmen. Dieser Fehler kommt jedoch nicht, sodass ich EINIGE Zeit nach dem Fehler gesucht habe.

Package inputenc Error

Posted by quark007 | Posted in Fehler | Posted on 03-01-2011-05-2008

0

Beim kompilen meines aktuellen Projektes bekam ich den folgenden Fehler

! Package inputenc Error: Keyboard character used is undefined
(inputenc) in inputencoding 'latin1'.
See the inputenc package documentation for explanation.
Type H<return> for immediate help.

Zunächst dachte ich an ein Zeichen, dass meine Tastatur zwar kennt LaTeX aber nicht… Diese Vermutung stellt sich aber als falsch heraus.

Den bearbeiteten Text habe ich aus einem anderen PDF übernommen, also mit copy&paste übernommen. Was ich jedoch natürlich nicht bedacht habe, dass Bindestriche (Gedankenstriche) auch anders kodiert sein könnten. Nach ein wenig googlen habe ich meinen Fehler dann gefunden.

Gleiches gilt im Übrigen auch für Anführungszeichen die einfach so übernommen werden! Diese müssen in LaTeX nochmals neu eingegeben werden um die Kodierung korrekt zu gestallten.

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

URL in Text einfügen

Posted by quark007 | Posted in LaTeX | Posted on 20-05-2010-05-2008

0

Häufig werden für Protokolle im Internet aufgefundene Bilder eingefügt. Jedoch muss deren Herkunft angegeben werden. Nichts einfacher als das, jedoch gibt LaTeX einige Fehler aus, wenn die URL sowie sie im Browser steht eingegeben wird.

Abhilfe schafft da ein kleines Package: URL. Mit diesem Package ist es nun ganz simpel eine URL einzugeben. Gleichzeitig macht dieses Packet die URL im PDF auch noch anklickbar. Der Befehl dafür lautet einfacher Weise:

\url{htt://www.deine-url.com/ordner/file.pdf}

So schlägt man zwei Fliegen ganz einfach mit einer Klappe. Lediglich die Paketliste erhöht sich etwas, wobei das Paket recht klein ist und somit die Compilierungszeit nicht wirklich erhöht.

Hier findet ihr dazu auch noch Beispiel und etwas weiter gehende Erklärungen
http://www.rohrbold.de/cs_latex.php

Abstand nach Punkt z.B. bei Abkürzungen

Posted by quark007 | Posted in LaTeX | Posted on 29-04-2010-05-2008

1

Viele Schreibfaule Menschen benutzen gerne Abkürzungen in ihren Protokollen oder sonstigen geschriebenen Texten. Doch was auffällt: wenn man eine Abkürzung wie „z.B.“ verwendet, fügt LaTeX nach dem letzten Punk einen größeren Abstand ein. Das kann jedoch verhindern.

Durch ein \ vor dem Leerzeichen wird dies verhindert. Ein Beispiel

i.\ Allgemeinen

Soll ein bestimmter Textbaustein nicht getrennt werden, also z.B. ein Titel und ein Name, muss an Stelle des Leerzeichens eine Tilde ~ eingefügt werden. Das verhindert außerdem, dass ein größerer Abstand nach dem Punkt eingefügt wird. Hier ein kleines Beispiel

Dr.~Matzat

Außerdem wird ein Punkt hinter einem Großbuchstaben nicht als Satzende erkannt. Da ein Punkt nach einem Großbuchstaben so ungewöhnlich ist, verhindert LaTeX das automatisch. Sollte der Satz  trotzdem so formatiert werden, mus vor ihm \@ eingefügt werden.