Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 9
kleine Anpassung an aktuelle KOMA-Script-Versionen

13 Jun '21, 23:42

gast3's gravatar image

gast3
(ausgesetzt)

#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][2] stieß uns auf diese Lösung, die von [Markus Kohm][1] 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}{}{% \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}{}{% \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} [1]: http://www.komascript.de/node/1766 [2]: http://texwelt.de/wissen/benutzer/4/clemens [3]: http://www.komascript.de/
Klicke auf Einblenden/Ausblenden von Überarbeitungen 8
addchap funktioniert nicht mehr

15 Feb '17, 11:39

sudo's gravatar image

sudo
2.0k61521

#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 `\addchap`-Befehl `\addchaptertocentry`-Befehl [Clemens][2] stieß uns auf diese Lösung, die von [Markus Kohm][1] 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. ## 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][2] stieß uns auf diese Lösung, die von [Markus Kohm][1] 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} [1]: http://www.komascript.de/node/1766 [2]: http://texwelt.de/wissen/benutzer/4/clemens [3]: http://www.komascript.de/
Klicke auf Einblenden/Ausblenden von Überarbeitungen 7
Quellcode Variante von KOMA

25 Okt '13, 17:45

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 6

23 Okt '13, 23:05

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 5
hyperref

23 Okt '13, 23:01

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 4
Verweis auf clemens

22 Okt '13, 18:09

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3
komascript-Lösung

22 Okt '13, 15:36

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
autodot

22 Okt '13, 12:29

sudo's gravatar image

sudo
2.0k61521

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

22 Okt '13, 12:23

sudo's gravatar image

sudo
2.0k61521