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:

Öffne in Overleaf
 1. Einleitung
 2. Blabla
 A. Spektren
 A.1. Erstes Spektrum
 B. Mehr

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

Öffne in Overleaf
1. Einleitung
2.Blabla
Anhang A. Spektren
A.1. Erstes Spetrum
Anhang B. Mehr

Der von mir verwendete Code sieht folgendermassen aus:

Öffne in Overleaf
\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

Öffne in Overleaf
\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, 09:52

ToF-SIMS's gravatar image

ToF-SIMS
61224
Akzeptiert-Rate: 0%

bearbeitet 15 Feb '17, 12:55

gast3's gravatar image

gast3
(ausgesetzt)

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

(22 Okt '13, 10: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, 10:47) ToF-SIMS
2
(22 Okt '13, 14:29) cgnieder

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, 14: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, 15: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, 15:28) stefan ♦♦
Ergebnis 5 von 6 show 1 more comments

Update (Februar 2017)

@saputello wies darauf hin, dass \addchap unter Umständen ein anderes Aussehen erzeugt, als der normale \chapter-Befehl. Davon abgesehen, läuft diese Variante mit \addchap auch nicht mehr, da dieser Befehl im aktuellen KOMA-Script scheinbar auf dem \chapter-Befehl aufbaut und es infolgedessen zu rekursiven Aufrufen kommt, bis der Speicher von TeX überläuft. Es wird daher die Verwendung des folgenden Ansatzes empfohlen.

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}

Ursprüngliche Lösung, die nicht mehr funktioniert.

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}
Permanenter link

beantwortet 22 Okt '13, 12:23

sudo's gravatar image

sudo
2.0k51421
Akzeptiert-Rate: 39%

bearbeitet 13 Jun '21, 23:42

gast3's gravatar image

gast3
(ausgesetzt)

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, 13: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, 16:51

ToF-SIMS's gravatar image

ToF-SIMS
61224
Akzeptiert-Rate: 0%

bearbeitet 23 Okt '13, 00:38

cgnieder's gravatar image

cgnieder
22.1k243463

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, 23:04) sudo
1

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, 08:27) sudo
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×130
×77
×13
×2

gestellte Frage: 22 Okt '13, 09:52

Frage wurde gesehen: 32,570 Mal

zuletzt geändert: 15 Feb '17, 12:57