Seite 1 von 1

\@ in vertical mode

Verfasst: Di 22. Jul 2014, 11:19
von betty
Hallo,

ich versuche gerade ein Akronymverzeichnis zu erstellen, sowie "List of Figures" oder "List of Tables". Dafür bin ich folgendem Beispiel gefolgt:

http://jevopi.blogspot.se/2009/09/acron ... latex.html

und habe die folgenden Zeilen in mein Dokument eingefügt:

\usepackage{acronym}

% code um \listofacronyms zu definieren

\@ifundefined{listofacronymsname}{\newcommand{\listofacronymsname}{Acronyms}}{}
\@ifundefined{chapter}{%
\newcommand{\listofacronyms}{%
\section*{\listofacronymsname}%
\addcontentsline{toc}{section}{\listofacronymsname}%
\label{sec:acronyms}%
\markboth{\listofacronymsname}{\listofacronymsname}%
}}{%
\newcommand{\listofacronyms}{%
\chapter*{\listofacronymsname}%
\addcontentsline{toc}{chapter}{\listofacronymsname}%
\label{sec:acronyms}%
\markboth{\listofacronymsname}{\listofacronymsname}%
}}

Dabei habe ich die folgende Fehlermeldung bekommen:

! You can't use `\spacefactor' in vertical mode.

Beim googlen bin ich über die folgenden zwei Seiten gefunden, die wie ich denke mein Problem beschreiben und auch eine Lösung dafür liefern. Allerdings verstehe ich nicht genug von LaTeX um diese zu verstehen.

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=atvert

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=atsigns

Ich hoffe ihr könnt mir da ein wenig weiter helfen. Vielen Dank!
Betty

Verfasst: Di 22. Jul 2014, 11:31
von u_fischer
Schreib \makeatletter (=make @ letter) vor \@ifundefined, damit @ als Buchstabe erlaubt ist und damit im Befehlsnamen benützt werden kann.

Verfasst: Di 22. Jul 2014, 11:32
von Besserwisser
Bitte mach immer ein VM (mit Anleitung zur Erstellung nicht nur für Anfänger), damit wir deinen Code auch wirklich testen können.

Dessen ungeachtet dürfte »Was machen eigentlich \makeatletter und \makeatother?« dein Problem erklären und lösen.

Verfasst: Di 22. Jul 2014, 11:36
von Besserwisser
Falls Du eine KOMA-Script-Klasse wie scrreprt, scrbook oder scrartcl verwendest, solltest Du Dir übrigens in dessen Anleitung mal die Befehle \addchap und \addsec anschauen. Damit wird Dein Code schon deutlich einfacher. Mit dem Befehl \ifundefinedorrelax könntest Du außerdem die @ in den Befehlsnamen einsparen und hättest damit das Problem gar nicht erst.

Die genannten Befehle sind in der KOMA-Script-Anleitung bzw. im KOMA-Script-Buch erklärt.

Verfasst: Di 22. Jul 2014, 11:38
von Besserwisser
Und dann sei noch auf das Paket acro hingewiesen, das als Alternative zu acronym verwendet werden kann und dessen Autor hier AFAIK auch mitliest.

Verfasst: Mi 23. Jul 2014, 13:43
von betty
Vielen Dank fuer die schnellen Antworten!

\makeatletter hat funktioniert.

Demnächst werde ich eine VM erstellen, denn ich denke das hier wird nicht meine einzige Frage bleiben. Von KOMA-Script verstehe ich leider auch nicht besonders viel, aber ich werde mir die Anleitung bei Gelegenheit mal ansehen.

Habe angefangen mit acro zu spielen. Mal schauen was dabei raus kommt.

Vielen Dank noch mal!