\@ in vertical mode

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


betty
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 22. Jul 2014, 11:00

\@ in vertical mode

Beitrag 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

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Schreib \makeatletter (=make @ letter) vor \@ifundefined, damit @ als Buchstabe erlaubt ist und damit im Befehlsnamen benützt werden kann.

Besserwisser

Beitrag 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.

Besserwisser

Beitrag 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.

Besserwisser

Beitrag 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.

betty
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 22. Jul 2014, 11:00

Beitrag 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!

Antworten