Ich habe folgendes Problem bzw. würde gerne in meinem Inhaltsverzeichnis eine Änderung vornehmen. Ich benutzte als Dokumentenkallse scrbook und zur Zeit sieht mein Inhaltsverzeichnis folgendermaßen aus:

 1. Einleitung
 2. Blabla
 A. Spektren
 A.1. Erstes Spektrum
 B. Mehr

Jetzt hätte ich es aber gerne, dass das Inahltsverzeichnis so aussieht:

1. Einleitung
2.Blabla
Anhang A. Spektren
A.1. Erstes Spetrum
Anhang B. Mehr

Der von mir verwendete Code sieht folgendermassen aus:

\documentclass[paper=a4, ngerman, twoside, headlines=2.1, fontsize=12pt, parskip=never]{scrbook}
\usepackage{scrhack} 
\usepackage{babel}
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[toctextentriesindented]{tocstyle}
\usetocstyle{KOMAlike}
\usepackage{fancyhdr}
\newcommand*{\appendixmore}{%
\renewcommand*{\chapterformat}{%
\appendixname~\thechapter\autodot\enskip}%
\renewcommand*{\chaptermarkformat}{%
\appendixname~\thechapter\autodot\enskip}}
\begin{document}
\pagestyle{fancy}
\tableofcontents
\chapter{Einleitung}
So
\chapter{BlaBla}
aha
\appendix
\renewcommand{\chaptermark}[1]
{\markboth{Anhang \thechapter.\ #1}{Anhang\\thechapter.\ #1}}
\chapter{Spektrum}
\section{erstes Spektrum}
\chapter{Mehr}
\end{document}

Hat jemand vielleicht einen Tip, wie man dieses Problem lösen kann ohne das Problem das jedes Kapitel vor dem Anhang mit Kapitel 1 statt 1 im geschriebenen Text auftaucht?

Mit dem Tip von sudo funktioniert das ganze zwar, aber durch Einfügen seines Vorschlags, gibt es die Warnung

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):

hskip 5.87357pt

replace by space on inputline [chapter{Spektrum}]

hier dazu das entsprechende Minimalbeispiel

\documentclass[paper=a4, ngerman, oneside, 
 headlines=2.1, fontsize=12pt, parskip=never]{scrbook} 
\usepackage{babel}
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage{hyperref} 
\usepackage{tocstyle}

\newcommand*{\appendixmore}{%
\renewcommand*{\chapterformat}{%
\appendixname~\thechapter\autodot\enskip}%
\renewcommand*{\chaptermarkformat}{%
\appendixname~\thechapter\autodot\enskip}}

\makeatletter
 \g@addto@macro\appendix{%
  \@autodottrue
  \let\original@chapter\chapter % Sichern des Original \chapter-Befehls
  \renewcommand{\chapter}[2][\@empty]{% Neuer \chapter-Befehl mit optionalem Argument
   \refstepcounter{chapter}% Referenzschritt des chapter-Zählers
   \ifx\@empty#1 % Überprüfen ob optionales Argument nicht vergeben.
    \addchap[\chapterformat#2]{\chapterformat#2}% Variante mit \appendixname auch in der Überschrift, falls appendixprefix=true
   \else
    \addchap[\appendixname~\thechapter\autodot\enskip#1]{\thechapter\autodot\enskip#2}% Variante nur mit \appendixname in Kopf und Inhaltsverzeichnis unabhängig von der Option appendixprefix
   \fi
  }%
 }%
\newcommand{\postappendix}{\let\chapter\original@chapter}% Befehl für das Verhalten nach dem Anhang
\makeatother

\usepackage{blindtext}
\begin{document}
\tableofcontents 
\chapter{Einleitung}
\blindtext[7]
\chapter{Text}
\blindtext[7]
\appendix
\chapter{Spektrum}
\blindtext[7]
\end{document}

gefragt 22 Okt '13, 03:52

ToF-SIMS's gravatar image

ToF-SIMS
61124
Akzeptiert: 0%

bearbeitet 22 Okt '13, 09:30

Johannes's gravatar image

Johannes
7.2k132759

Sehr minimal ist dein Beispiel leider nicht. Hilft dir vielleicht appendixprefix=true? Die KOMA-Dokumentation liefert weitere Details.

(22 Okt '13, 04:16) Johannes

Danke für deinen Tip, leider funktioniert er aber nicht, da durch die Definition

newcommand{appendixmore}{% renewcommand{chapterformat}{% appendixname~thechapterautodotenskip}

appendixprefix nicht benutzt werden kann.

Kommentiert man diesen Teil aus, so kann man zwar deinen Tip nutzen, allerdings wird dann natürlich im Anhang nicht neben sondern unter Anhang A. die Überschrift geschrieben. Außerdem taucht das Wort Anhang trotzdem nicht in Inhaltsverzeichnis auf.

(22 Okt '13, 04:47) ToF-SIMS
2
(22 Okt '13, 08:29) Clemens

Kannst du bitte einmal die Markdown-Syntax durchlesen. So ist dein Code nicht vernünftig zu lesen. Ich kann, wenn ich alles richtig kopiert habe, deinen Fehler allerdings nicht reproduzieren.

BTW: Das \newcommand{\appendixmore} solltest du jetzt doch eigentlich nicht mehr brauchen.

(22 Okt '13, 08:37) sudo

Danke für eure Hilfe! Aus der von Markus Kohm geschriebenen Anleitung und meinem eingenen Code habe ich nun endlich alles so wie ich es haben wollte.

(22 Okt '13, 09:15) ToF-SIMS
1

@ToF-SIMS Es wäre schön, wenn Du Deine Lösung unten als Antwort posten würdest. Dann steht die Frage nicht weiter als offen hier, und vor allem Leute die nach ähnlichem googlen und hier landen, finden dann auch die Lösung und sind nicht enttäuscht. Danke!

(22 Okt '13, 09:28) stefan ♦♦
Ergebnis 5 von 6 Alle anzeigen

Der \addchap-Befehl

fügt ein Kapitel ohne Nummerierung ein. Dies kann man dazu ausnutzen die Nummerierung oder in deinem Fall das Präfix hinzuzufügen oder zu ändern. Ich habe nun den \appendix-Befehl derart ergänzt, dass \chapter entsprechend umdefiniert wird. Ich habe dabei noch zwei Varianten. Einmal wird entsprechend der Option appendixprefix das Präfix auch im Inhaltsverzeichnis ergänzt, einmal wird unabhängig von dieser Option nur in Inhaltsverzeichnis und Kopfzeile das Präfix ausgegeben.

Code

\documentclass[ngerman, appendixprefix]{scrbook}
\usepackage{blindtext}
\usepackage{babel}
\usepackage[T1]{fontenc}
\providecommand*\appendixmore{}% falls appendixprefix=false
\makeatletter
\newcommand*\original@chapter{}% Um sicherzugehen, dass \original@chapter nicht schon anders verwendet wird.
\g@addto@macro\appendixmore{%
  \@autodottrue
  \let\original@chapter\chapter % Sichern des Original \chapter-Befehls
  \renewcommand{\chapter}[2][\@empty]{% Neuer \chapter-Befehl mit optionalem Argument
    \refstepcounter{chapter}% Referenzschritt des chapter-Zählers
    \ifx\@empty#1 % Überprüfen ob optionales Argument nicht vergeben.
      \addchap[\chapterformat#2]{\chapterformat#2}% Variante mit \appendixname auch in der Überschrift, falls appendixprefix=true
    \else
      \addchap[\appendixname~\thechapter\autodot\enskip#1]{\thechapter\autodot\enskip#2}% Variante nur mit \appendixname in Kopf und Inhaltsverzeichnis unabhängig von der Option appendixprefix
    \fi
  }%
}%
\newcommand{\postappendix}{\let\chapter\original@chapter}% Befehl für das Verhalten nach dem Anhang
\makeatother
\begin{document}
\tableofcontents
\chapter{Einleitung}
\blindtext[7]
\chapter{BlaBla}
\blindtext[7]
\appendix
\chapter{Spektrum}
\section{erstes Spektrum}
\blindtext[7]
\chapter[more]{Mehr}
\end{document}

Der \addchaptertocentry-Befehl

Clemens stieß uns auf diese Lösung, die von Markus Kohm stammt, den in der KOMA-Script-Anleitung dokumentierten \addchaptertocentry-Befehl nutzt und damit eine Befehlsebene tiefer ansetzt. Diese Befehl übernimmt in den KOMA-Script-Klassen die Einträge ins Inhaltsverzeichnis, so dass der gewünschte Effekt leicht erreicht werden kann.

\documentclass[ngerman]{scrbook}
\usepackage{blindtext}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\providecommand*{\appendixmore}{}% Falls Option headings=appendixprefix nicht verwendet wurde.
\newcommand*{\SavedOriginaladdchaptertocentry}{}
\appto\appendixmore{%
  \let\SavedOriginaladdchaptertocentry\addchaptertocentry
  \renewcommand*{\addchaptertocentry}[2]{%
    \ifstr{#1}{}{% Eintrag ohne Nummer
      \SavedOriginaladdchaptertocentry{#1}{#2}%
    }{% Eintrag mit Nummer
      \SavedOriginaladdchaptertocentry{}{%
            \string\expandafter\string\MakeUppercase\string\appendixname
            ~#1:\string\enskip{}#2%
          }%
    }%
  }%
}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{Einleitung}
\blindtext[7]
\chapter{BlaBla}
\blindtext[7]
\appendix
\chapter{Spektrum}
\section{erstes Spektrum}
\blindtext[7]
\chapter[more]{Mehr}
\end{document}

Mit hyperref

werden ohne die Option bookmarks=false automatisch pdf-Bookmarks/Outlines/Lesezeichen erstellt. Bei der \addchap-Variante versucht LaTeX \endash bzw. die expandierte Variante \hskip 5.44394pt in die Lesezeichen einzutragen. Da das nicht geht, wandelt LaTeX diese mit einer Warnung in ein Leerzeichen um. Bei der \addchaptertocentry-Variante scheint es ebenfalls ein Problem bei PDF-Lesezeichen zu geben. So steht dort expandafter MakeUppercase appendixname"Buchstabe":enskip"Name" statt Anhang "Buchstabe": "Name". Da die Kapitel im Normalfall nur mit Namen ohne Nummer in die Lesezeichen eingetragen werden, soll das auch bei den Kapiteln im Anhang der Fall zu sein. Zu diesem Zweck stellt hyperref Befehl \texorpdfstring zur Verfügung.

\documentclass[ngerman, appendixprefix]{scrbook}
\usepackage{blindtext}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\providecommand*\texorpdfstring[2]{#1}% falls hyperref nicht geladen wird
\providecommand*\appendixmore{}% falls appendixprefix=false
\newcommand*{\SavedOriginalchaptertocentry}{}
\appto\appendixmore{%
  \let\SavedOriginaladdchaptertocentry\addchaptertocentry
  \renewcommand*{\addchaptertocentry}[2]{%
    \ifstr{#1}{}{% Eintrag ohne Nummer
      \SavedOriginalchaptertocentry{#1}{#2}%
    }{% Eintrag mit Nummer
      \SavedOriginaladdchaptertocentry{}{%
        \texorpdfstring{
          \string\expandafter\string\MakeUppercase\string\appendixname
          ~#1:\string\enskip{}#2
        }{#2}%
      }%
    }%
  }%
}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{Einleitung}
\blindtext[8]
\appendix
\chapter{Spektrum}
\section{erstes Spektrum}
\blindtext[18]
\chapter[more]{Mehr}
\end{document}
Permanenter link

beantwortet 22 Okt '13, 06:23

sudo's gravatar image

sudo
1.9k1817

bearbeitet 25 Okt '13, 11:45

Danke, dass funktioniert so weit, allerdings bekomme ich jetzt aus irgendeinem Grund in meinem tatsächlichen Latexcode die Warnung Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): hskip 6.0pt replace by space on inputline [chapter{Spektrum}] den gleichen Fehler erhalte ich für das nächste Kapitel

(22 Okt '13, 07:02) ToF-SIMS

Die Lösung meines Problem war folgenden Text in die Präambel einzufügen:

\usepackage{etoolbox}
\providecommand*{\appendixmore}{
\renewcommand*{\chapterformat}{%
\appendixname~\thechapter\autodot\enskip}}% sorgt dafür das Anhang vor dem Buchstaben des jeweiligen Anhangs steht, ohne das man headings benutzt
\newcommand*{\SavedOriginalchaptertocentry}{}
\appto\appendixmore{%
  \let\SavedOriginaladdchaptertocentry\addchaptertocentry
  \renewcommand*{\addchaptertocentry}[2]{%
    \ifstr{#1}{}{% Eintrag ohne Nummer
      \SavedOriginalchaptertocentry{#1}{#2}%
    }{% Eintrag mit Nummer
      \SavedOriginaladdchaptertocentry{}{%
        \string\expandafter\string\MakeUppercase\string\appendixname
        ~#1.\string\enskip{}#2}%
    }%
  }%
}

da ich auch das Paket fancyhdr benutzte und möchte das jeweils auch das Wort Anhang im Header vorkommt, musste ich zusätzlich folgendes an der entsprechenden Textstelle einfügen.

\appendix 
\renewcommand{\chaptermark}[1]
        {\markboth{Anhang \thechapter\ #1}{Anhang\
\thechapter.\ #1}}% dies sorgt für das Wort Anhang im Seitenheader
Permanenter link

beantwortet 22 Okt '13, 10:51

ToF-SIMS's gravatar image

ToF-SIMS
61124

bearbeitet 22 Okt '13, 18:38

Clemens's gravatar image

Clemens
19.0k113060

Ich habe das Verhalten gerade noch einmal gründlich überprüft. Dein \renewcommand{\chaptermark} brauchst du nicht. Zu deinen Warnungen habe ich noch einen Teil in meiner Antwort ergänzt.

(23 Okt '13, 17:04) sudo

Ist dir bewusst, dass deine Kopfzeile im Anhang deutlich anders aussieht als im Hauptteil? \chaptermark scheint mir ursprünglich mit \MakeUppercase definiert zu sein. Wenn du es also schon im Anhang umdefinierst, dann doch bitte auch wieder mit \MakeUppercase. Außerdem solltest du dort auch lieber \appendixname statt Anhang schreiben. Dann ist es auch für Dokumente in anderen Sprachen gültig und man hat eine Schnittstelle falls man diesen einmal anders bezeichnen möchte. Für die Anpassung der Kopfzeile solltest du bei einer KOMA-Script-Klasse übrigens lieber scrpage2 verwenden.

(24 Okt '13, 02:27) sudo
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×73
×46
×8
×2

Frage gestellt: 22 Okt '13, 03:52

Frage wurde angeschaut: 13,960 Mal

Zuletzt aktualisiert: 25 Okt '13, 11:45