Sie sind hier

Zugriff auf Kapitelnamen bzw. Kurzform

Hallo,
ich würde gerne mit dem Beispiel aus dem neuen KOMA-Script Buch ein Daumenregister für mein Fachbuch erstellen.
Schöner als ein REgister mit den Kapitelnummern, wäre aber ein Daumenregister mit der Kurzform des Kapitelnamens also z. B.
\chapter[Frühling]{Im Frühling wird es endlich wärmer}¹

Wie kann ich auf den Text in den eckigen Klammern zugreifen und für das Daumenregister als "Frühling" verwenden?

Vielen Dank!!!

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

Das müsste eigentlich in \leftmark, \rightmark oder \headmark gespeichert sein. Je nach Einstellungen …

Tobi W_
Grafikdesign und TeX-Beratung

tobiw.de
mail@tobiw.de

Mein Blog: TeX-Beispiel des Monats

Bild von Markus Kohm

Wenn man die Kapitelmarken über den Seitenstil bzw. mit scrlayer über eine Ebene realisiert, dann kann man i. d. R. in \leftmark Nummer und Titel des aktuellen Kapitels finden und zwar die Version, die auch als Kolumnentitel in den Kopf gesetzt wird bzw. würde, denn sowohl im Kopf als auch am rechten oder äußeren Rand fände ich das dann doch sehr übertrieben.

Bei einseitigen Dokumenten kann \leftmark auch leer sein. Das hängt dann von den Einstellungen beispielsweise für scrlayer-scrpage ab.

Mein "Minimalbeispiel " unten funktioniert mit 12 Fehlern. Im Text bekomme ich 2x Frühling, das Daumenregister stimmt aber..?
In der Datei chapterthumb.sty von Markus habe ich folgende Zeilen geändert:¹

%\newcommand*{\chapterthumbformat}{\@chapapp~\thechapter}
\newcommand*{\chapterthumbformat}{\leftmark}

Hier mein Beispiel:¹

\documentclass[paper = 155mm:220mm, DIV=15, headinclude, twoside, 10pt, BCOR=17mm, headsepline]{scrbook}
\usepackage{chapterthumb}
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\AddLayersToPageStyle{@everystyle@}{chapterthumb}
\addtokomafont{chapterthumb}{\bfseries}
 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{blindtext}
 
\pagestyle{headings}
 
\begin{document}
 
\tableofcontents 
 
\chapter[Frühling]{Im Frühling wir es endlich wärmer}
\blindtext
\blindtext
\blindtext
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark
 
\chapter[Sommer]{Im Sommer ist es sehr heiß}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark
 
\chapter[Herbst]{Im Herbst fallen die Blätter}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark
 
\chapter[Winter]{Im Winter gibt es endlich Schnee}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark
 
\end{document}

EDIT: sorry, wie kann ich denn zwei Code-Umgebungen machen?

[Admin-Edit:]

  1. Code-Ende-Tag korrigiert in </code> (siehe Formatierungshinweise)

Bild von Markus Kohm

Neuere Versionen von babel fügen in die Marken ein \foreignlanguage ein, das leider nicht voll expandierbar ist. Daher funktionieren Vergleiche mit dem voll expandierten Inhalt von \leftmark nicht mehr. Genau ein solcher Vergleich wird in \chapterthumbbox aber durchgeführt. Statt voll zu expandieren darf man an der Stelle nur teilweise expandieren, wenn \leftmark im Daumenindex verwendet wird.

\documentclass[paper = 155mm:220mm, DIV=15, headinclude, twoside, 10pt, BCOR=17mm, headsepline]{scrbook}
\usepackage{chapterthumb}[2014/01/15]% ältere Versionen arbeiten noch mit scrpage2
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\AddLayersToPageStyle{@everystyle@}{chapterthumb}
\addtokomafont{chapterthumb}{\bfseries}
\renewcommand*{\chapterthumbformat}{\leftmark}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\chapterthumbbox{\edef\reserved@a{\chapterthumbformat}}
                          {\protected@edef\reserved@a{\chapterthumbformat}}
                          {\typeout{\string\chapterthumbbox patched}}
                          {\typeout{\string\chapterthumbbox patch not needed}}
\makeatother
 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{blindtext}
 
\pagestyle{headings}
 
\begin{document}
 
\tableofcontents 
 
\chapter[Frühling]{Im Frühling wir es endlich wärmer}
\blindtext
\blindtext
\blindtext
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark, weil \verb|\leftmark| nur
im Seitenstil richtig sinnvoll ist aber weniger im Inhalt der Seite.
 
\chapter[Sommer]{Im Sommer ist es sehr heiß}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark, weil \verb|\leftmark| nur
im Seitenstil richtig sinnvoll ist aber weniger im Inhalt der Seite.
 
\chapter[Herbst]{Im Herbst fallen die Blätter}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark, weil \verb|\leftmark| nur
im Seitenstil richtig sinnvoll ist aber weniger im Inhalt der Seite.
 
\chapter[Winter]{Im Winter gibt es endlich Schnee}
\blindtext
 
Hier ergibt \textbackslash leftmark das \leftmark, weil \verb|\leftmark| nur
im Seitenstil richtig sinnvoll ist aber weniger im Inhalt der Seite.
 
\end{document}

Im übrigen gibt es mehrere Versionen von chapterthumb. Das alte arbeitet noch mit scrpage2 und insgesamt etwas anders. Das neue arbeitet mit scrlayer. Deshalb sollte man immer die verwendete Version mit angeben bzw. einen Link auf die verwendete Version setzen. Ich gehe oben davon aus, dass Du die Version aus der 5. Auflage des KOMA-Script-Buches verwendest.

\documentclass[paper = 155mm:220mm, DIV=15, headinclude, twoside, 10pt, BCOR=17mm, headsepline]{scrbook}
 
\usepackage{chapterthumb}[2014/01/15]% ältere Versionen arbeiten noch mit scrpage2
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\AddLayersToPageStyle{@everystyle@}{chapterthumb}
\addtokomafont{chapterthumb}{\bfseries}
\renewcommand*{\chapterthumbformat}{\leftmark}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\chapterthumbbox{\edef\reserved@a{\chapterthumbformat}}
                          {\protected@edef\reserved@a{\chapterthumbformat}}
                          {\typeout{\string\chapterthumbbox patched}}
                          {\typeout{\string\chapterthumbbox patch not needed}}
\makeatother
 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{blindtext}
 
\pagestyle{headings}
 
\begin{document}
 
\tableofcontents 
 
\chapter[Frühling]{Im Frühling wir es endlich wärmer}
\blindtext
\blindtext
\blindtext
\blindtext
 
\chapter[Sommer]{Im Sommer ist es sehr heiß}
\blindtext
 
\chapter[Herbst]{Im Herbst fallen die Blätter}
\blindtext
 
\chapter[Winter]{Im Winter gibt es endlich Schnee}
\blindtext
 
\end{document}

Ja, ich habe mir die 5. Auflage gekauft und verwende deshalb scrlayer.
Nun, mit Deinem Beispiel fehlen leider die Umlaute und ich erhalte deshalb Fehler. Z.b. "PAckage inputemc Error: Unicode char ätt (U+EC)" so wird auch "Blätter" dann "Bler" :(
funktioniert bei Dir das Minimalbeispiel?

Bild von Markus Kohm

Ja, mein Beispiel funktioniert einwandfrei. Voraussetzung ist natürlich, dass die Datei auch tatsächlich mit der Codierung UTF8 gespeichert wird und pdflatex für die Übersetzung verwendet wird. Wenn Du hingegen beispielsweise ISO-Latin-1 im Editor eingestellt hast, musst Du auch die Option beim Laden von inputenc entsprechend anpassen. Ich würde jedoch empfehlen, grundsätzlich UTF8 zu verwenden. Siehe auch Wie überprüfe ich die Standardeingabekodierung in meinem Editor?

BTW: Mit der neusten Version von chapterthumb.sty (das wäre derzeit Version 0.3a) muss man \chapterthumbbox nicht mehr patchen. Da funktioniert dann auch ohne jede Änderung:

\documentclass[paper = 155mm:220mm, DIV=15, headinclude, twoside, 10pt, BCOR=17mm, headsepline]{scrbook}
 
\usepackage{chapterthumb}[2014/01/15]% ältere Versionen arbeiten noch mit scrpage2
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\AddLayersToPageStyle{@everystyle@}{chapterthumb}
\addtokomafont{chapterthumb}{\bfseries}
\renewcommand*{\chapterthumbformat}{\leftmark}
\usepackage{xpatch}
 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{blindtext}
 
\pagestyle{headings}
 
\begin{document}
 
\tableofcontents 
 
\chapter[Frühling]{Im Frühling wir es endlich wärmer}
\blindtext
\blindtext
\blindtext
\blindtext
 
\chapter[Sommer]{Im Sommer ist es sehr heiß}
\blindtext
 
\chapter[Herbst]{Im Herbst fallen die Blätter}
\blindtext
 
\chapter[Winter]{Im Winter gibt es endlich Schnee}
\blindtext
 
\end{document}

Du hast im Editor ev. nicht die korrekte Codierung eingestellt
ja, das stimmte. Jetzt gehts! Vielen Dank für Deine Bemühungen und das Buch :-)

Ich habe noch ein Problem. Gibt es eine Möglichkeit die Schriftgröße in dem Daumenregister zu verkleinern ohne die normale Kapitelüberschriften zu ändern? Danke!

Bild von Markus Kohm

Der Font im Daumenregister hat rein gar nichts mit dem in den Überschriften zu tun. Du hast den selbst auch schon um \bfseries erweitert. Daher verstehe ich die Frage nicht so ganz. Im Buch, auf Seite 600, ist das Element zusammen mit seiner Voreinstellung auch dokumentiert.

Comments for "Zugriff auf Kapitelnamen bzw. Kurzform" abonnieren