Sie sind hier

Kopfzeilenproblem: Referenzen funktionieren nicht in Kopfzeilen mit Großbuchstaben

Ich schreibe gerade meine Dissertation mit der Klasse "scrbook" und der Option "twoside". Die Kopfzeilen möchte ich in Großbuchstaben haben, und zwar auf geraden Seiten die Section, auf ungeraden das Chapter. Alles klappt eigentlich ganz gut, nur kann ich folgende zwei Fehler bisher nicht lösen, die meiner Meinung nach zusammenhängen und mit dem unten stehenden Minimalbeispiel reproduziert werden können.

(1) Das Package "babel" produziert eine Fehlermeldung: "You haven't defined the language ENGLISH yet"
(2) Wenn ich z.B. innerhalb einer Section-Überschrift auf etwas referenziere, dann liefert mir Miktex ein Warning: "Reference `CHAPTER:BLABLUBB' on page 5 undefined on input line 3"

Der Fehler ist eigentlich klar. Miktex wandelt die Option von "english" in "ENGLISH" um, und kann dann die Sprache nicht mehr finden. Beim zweiten Fehler wandelt Miktex die Referenz in Großbuchstaben um, und kann dann das Label nicht mehr finden (welches in Kleinbuchstaben geschrieben ist). Weiß wer eine Lösung dazu?

Und hier ist mein Minimalbeispiel:

\documentclass[a4paper, 12pt, twoside]{scrbook}

\usepackage{scrpage2} 
\usepackage[english]{babel}
\usepackage{blindtext}

\clearscrheadings
\clearscrplain

\pagestyle{scrheadings}
\lehead{\MakeUppercase\pagemark}
\rohead{\MakeUppercase\pagemark}
\rehead{\MakeUppercase\headmark}
\lohead{\MakeUppercase\headmark}

\begin{document}

\chapter{bla}

\Blindtext[2][3]

\chapter{blablubb}
\label{chapter:blablubb}

\Blindtext[2][4]

\section{Referenz auf \ref{chapter:blablubb}}

\Blindtext[2][4]

\end{document}

Bild von Markus Kohm

\MakeUppercase eignet sich überhaupt nicht, um mehr als einen Buchstaben in Großbuchstaben zu wandeln. Vesalsatz, also der Satz von Wörtern oder Passagen in Versalien (=Großbuchstaben), benötigt immer Sperrung. Dabei darf auch nicht einfach konstant mit beispielsweise 1,5 pt gesperrt werden, sondern die Sperrung muss abhängig von den Buchstabenkombinationen erfolgen. Theoretisch könnte man sich dabei am Kerning orientieren, doch leider sind Großbuchstabenkombinationen oft gar nicht unterschnitten, obwohl sie es nötig hätten. \MakeUppercase kümmert sich leider noch nicht einmal um eine konstante Sperrung. Man müsste also die Kolumnentitel ohnehin von Hand sperren (Vorsicht, das benötigt Übung). Nach meiner Erfahrung ist

\addtokomafont{pagehead}{\scshape}

ein halbwegs brauchbarer Kompromiss. Jedenfalls sind die Kapitälchen oftmals wesentlich besser zu lesen. Auch das Kerning ist viel besser. Ggf. könnte man mit Hilfe neuer pdfTeX-Features hier zusätzlich ein wenig sperren, falls es erforderlich wäre.

Ansonsten könnte man die Umschaltung auf Versalien in die Befehle für die Marken verschieben und gleichzeitig die Referenz auf Kleinbuchstaben festnageln:

\documentclass[a4paper, 12pt, twoside]{scrbook}

\usepackage[english]{babel}
\usepackage{scrpage2} 
\usepackage{blindtext}

\newcommand*{\MarkBoth}{}
\let\MarkBoth\markboth
\renewcommand*{\markboth}[2]{\MarkBoth{\MakeUppercase{#1}}{\MakeUppercase{#2}}}

\newcommand*{\MarkRight}{}
\let\MarkRight\markright
\renewcommand*{\markright}[1]{\MarkRight{\MakeUppercase{#1}}}

\newcommand*{\MarkLeft}{}
\let\MarkLeft\markleft
\renewcommand*{\markleft}[1]{\MarkLeft{\MakeUppercase{#1}}}

\clearscrheadings
\clearscrplain

\pagestyle{scrheadings}
\lehead{\pagemark}
\rohead{\pagemark}
\rehead{\headmark}
\lohead{\headmark}

\begin{document}

\chapter{bla}

\Blindtext[2][3]

\chapter{blablubb}
\label{chapter:blablubb}

\Blindtext[2][4]

\section{Referenz auf \MakeLowercase{\ref{chapter:blablubb}}}

\Blindtext[2][4]

\end{document}

Übrigens sollte man babel immer vor scrpage2 laden, weil es \markboth umdefiniert, \@mkboth aber vergisst.

Danke, du hast mir sehr geholfen.

Comments for "Kopfzeilenproblem: Referenzen funktionieren nicht in Kopfzeilen mit Großbuchstaben" abonnieren