Hallo,
bei meinem Versuch eine Kopfzeile für die Klasse scrbook zu formatieren (siehe Anhang) scheitere ich momentan an den unterschiedlichen Längenangaben. Mein Problem beginnt damit, eine Kopfzeile zu definieren, die am äußeren Seitenrand beginnt, und am inneren Textrand endet.
Nach meinem bisherigen Verständnis setzt sich der Satzspiegel wie folgt zusammen:
Aus der Differenz \paperwidth
-\textwidth
bestimme ich die Randbreite je Seite; diese teile ich gemäß dem obigen Verhältnis auf den äußeren und inneren Seitenrand auf. Anschließend verschiebe ich die Kopfzeile um die Breite des äußeren Seitenrandes nach links. Hierbei treten mehrere unerklärliche Effekte auf:
\setheadwidth[0cm]{\paperwidth}
, erwarte ich auf einer linken Seite, dass die Kopfzeile bündig mit dem linken Textrand steht. Tatsächlich ragt sie jedoch weit über den äußeren Rand hinaus. Warum?Folgenden Code habe ich bisher geschrieben:
% Automatische Berechnung des Satzspiegels durch DIV=calc % Seitenrand oben : Seitenrand unten | 1:2 % Seitenrand links : Seitenrand rechts | 1:1 % Seitenrand außen : Seitenrand innen | 1:2 \documentclass[a4paper,12pt,BCOR=5mm,DIV=calc]{scrbook} % Textbereich ohne vertikalen Ausgleich \raggedbottom % Textbereich mit vertikalem Ausgleich % \flushbottom % Spracheinstellungen \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} % Seitenlayout \usepackage[olines]{scrlayer-scrpage} \pagestyle{scrheadings} \newlength{\marginWidth} \setlength{\marginWidth}{\dimexpr\paperwidth-\textwidth\relax} \newlength{\leftMarginWidth} \setlength{\leftMarginWidth}{0.66\marginWidth} \newlength{\rightMarginWidth} \setlength{\rightMarginWidth}{0.33\marginWidth} \addtolength{\rightMarginWidth}{5mm} \KOMAoptions{headwidth=\textwidth:0cm:\leftMarginWidth} \setheadsepline[\textwidth]{1pt} % Schriftart der Kopf- und Fußzeile definieren % \setkomafont{pageheadfoot}{\rmfamily\scshape\normalsize} % Seitenstil manuell definieren % \usepackage[includehead,includefoot,inner=2.5cm,outer=5cm,top=2cm, % bottom=2cm]{geometry} % Zeilenabstand ändern % \usepackage[onehalfspacing]{setspace} % Grafiken \usepackage{graphicx} % Sonstige \usepackage{xcolor} \usepackage{blindtext} \usepackage{layouts} \begin{document} \blinddocument \blinddocument \end{document}
Folgenden Ausschnitt habe ich aus "Einführung in LaTeX" von Herbert Voß. Leider fehlten notwendige Pakete und einige Anweisungen im Beispiel, die ich mir erst wieder erarbeiten musste. Die auskommentierten Abschnitte funktionieren noch immer nicht.
% Automatische Berechnung des Satzspiegels durch DIV=calc % Seitenrand oben : Seitenrand unten | 1:2 % Seitenrand links : Seitenrand rechts | 1:1 % Seitenrand außen : Seitenrand innen | 1:2 \documentclass[parskip=half,pagesize]{scrbook} % Textbereich ohne vertikalen Ausgleich \raggedbottom % Textbereich mit vertikalem Ausgleich % \flushbottom % Spracheinstellungen \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} % Seitenlayout \usepackage[olines]{scrlayer-scrpage} \pagestyle{scrheadings} % Schriftart der Kopf- und Fußzeile definieren % \setkomafont{pageheadfoot}{\rmfamily\scshape\normalsize} % Seitenstil manuell definieren % \usepackage[includehead,includefoot,inner=2.5cm,outer=5cm,top=2cm, % bottom=2cm]{geometry} % Zeilenabstand ändern % \usepackage[onehalfspacing]{setspace} % Grafiken \usepackage{graphicx} % Sonstige \usepackage{xcolor} \usepackage{blindtext} \usepackage{layouts} \begin{document} \setheadwidth[\marginparsep]{textwithmarginpar} \lehead[\clearscrheadfoot]{ \mbox{ \smash{ \setlength\fboxsep{0pt} \raisebox{-2pt}{ \colorbox{black!80}{ \makebox[22mm][r]{ \ifnum\value{chapter}>0 \textcolor{white}{ \fontsize{18}{19}\selectfont \thechapter }~ \fi \rule[-2.85pt]{2mm}{12mm} } } } } } \quad\small\leftmark } \rohead[\clearscrheadfoot]{\small\rightmark\quad\makebox[22mm]{}} \lefoot[\clearscrheadfoot]{ \small\llap{ \thepage~\rule[-13mm]{.6pt}{18mm} \hspace{1mm} } } \rofoot[\clearscrheadfoot]{ \small\hfill\rlap{\hspace{1mm}\rule[-13mm]{.6pt}{18mm}\ \thepage} } \rohead[\clearscrheadfoot]{\small\rightmark\quad\makebox[22mm]{}} \setheadsepline[\linewidth]{0.8pt} %\setheadsepline[\fullwidth]{0.8pt} \renewcommand\chaptermark[1]{\markboth{#1}{}} %\renewcommand\sectionmark[1]{ % \markright{ % \ifnum\c@secnumdepth>\@ne % \thesection % \quad #1 % \fi % } %} \makeatother \blinddocument \blinddocument \end{document}
Ich bin dankbar für jede Hilfe.
Beste Grüße
[Admin-Edit:] Formatierung vielfach korrigiert (Inline-Code, Aufzählungen, …)
Anhang | Größe |
---|---|
Beispiel_Kopfzeile.png | 2.69 KB |
Das sind viele Fragen
Das sind viele Fragen auf einmal und die Beschreibungen Deines Ziels bzw. Deiner Probleme ist zumindest für mich nicht ganz eindeutig. Erschwerend kommt hinzu, dass teilweise Befehle verwendet werden, die nur aus Kompatibilitätsgründen zum veralteten Paket scrpage2 existieren und die eigentlich mit scrlayer-scrpage nicht mehr genutzt werden sollen.
Die Bindekorrektur gehört nicht zum inneren Rand. Du musst deshalb im ersten Schritt neben der Textbreite auch die Bindekorrektur von der Papierbreite abziehen. Das fehlt in Deinem Code oben, weshalb die von Dir berechneten Ränder zusammen um genau die 5mm zu breit sind. Die verbleibende Breite wird im Verhältnis 2:1 auf äußeren und inneren Rand aufgeteilt. Bei der Berechnung des Abstandes von innerer Papierkante zum inneren Papierrand muss die Bindekorrektur natürlich wie in Deinem Beispiel oben wieder zum inneren Rand hinzuaddiert werden.
\setheadwidth
ist einer der Befehle, die nur der Kompatibilität zum veralteten scrpage2 dienen. Das optionale Argument gibt die horizontale Verschiebung der Kopfzeile relativ zum inneren Rand des Textbereichs an. Mit\setheadwidth[0pt]{\paperwidth}
wäre die Kopfzeile also bündig zum inneren Textrand, auf linken Seiten ist das der rechte Textrand. Damit würde die Kopfzeile dann aber um die Breite des inneren Randes und der Bindekorrektur über den äußeren Rand (auf linken Seiten den linken Rand) hinausragen. Das ist also nicht verwunderlich. Die aktuelle Syntax wäre übrigens\KOMAoptions{headwidth=\paperwidth:0pt}
oder mit dem symbolischen Wert
paper
\KOMAoptions{headwidth=paper:0pt}
In Deinem Codebeispiel verwendest Du allerdings
\KOMAoptions{headwidth=\textwidth:0cm:\leftMarginWidth}
Deine Kopfzeile ist also nur so breit wie der Textkörper. Auf rechten Seiten beträgt die horizontale Verschiebung relativ zum inneren Rand 0pt und somit ist die Kopfzeile dort vollständig am Text ausgerichtet. Auf linken Seiten wird die Kopfzeile dagegen um
\leftMarginWidth
nach außen geschoben, was in Deinem Beispiel ja etwas mehr als die Breite des äußeren Randes zuzüglich Bindekorrektur war.Wenn ich die Beschreibung Deines Wunsches richtig verstehe, dann möchtest Du etwas wie
Wobei ich vielleicht sogar
headwidth=\paperwidth-1in-\hoffset-\oddsidemargin:0mm
verwenden würde.Falls Du die Ränder mit dem Paket geometry selbst einstellen willst, muss das vor der Berechnung der Kopfzeilenbreite erfolgen.
In dem unteren Beispiel wurde offensichtlich von einer speziellen Anpassung der Ränder mit dem Paket geometry ausgegangen. Mir ist jetzt nicht klar, ob Du diese verwenden willst. Ein Vorschlag wäre:
Deine Beispiele tut genau,
Deine Beispiele tut genau, was ich mir vorgestellt habe. Danke dafür schonmal! Nun hätte ich es gerne noch, dass die Trennlinie zwischen Kopfzeile und Text auf der rechten Seite nur textbreit ist - also nicht in den Seitenrand hineinragt; die Trennlinien sollen also auf geraden und ungeraden Seiten unterschiedlich formatiert werden.
Das Paket geometry möchte ich vermeiden, um möglichst wenig in die LaTeX und KOMA-Script¹ eigenen Berechnungen und Formatierungen einzugreifen.
Das Makro
\raggedbottom
² benutze ich, weil es wirklich bescheiden aussieht, wenn z.B. Aufzählungen gefühlte 5 verschiedene vertikale Abstände verwenden. Gibt es eine Möglichkeit, das Problem (bezogen auf Aufzählungen) geschickter zu lösen? Mir fiele spontan noch ein, die Aufzählung mitminipage
² oder\makebox
¹² einzuboxen ... hat aber andere Nachteile.Was ist die Funktion von
\smash
²? Es reduziert die Höhe einer Box auf den Wert 0, wenn ich es richtig verstehe. Aber welchen Nutzen hat das?Beste Grüße
[Admin-Edit:]- Schreibweise korrigiert
- <latex></latex> Tags eingefügt (siehe Formatierungshinweise)
Kopfzeilenbreite gerader Seiten anpassen
Wenn nur die Kopfzeilen der geraden Seiten breiter sein sollen als der Text, dann braucht man die die Kopfzeilenbreite nur für diese Seiten anzupassen:
Im Argument für
\rohead
steht dann nur noch\rightmark
.\smash
in\chaptermarkformat
hatte tatsächlich keinen Effekt, weil\chaptermarkformat
selbst im Argument des\smash
von\lehead
zur Anwendung kommt. Letzteres ist aber notwendig, um die Höhe der grauen Box zu verbergen, die größer als\headheight
ist, was zu einer Warnung und Anpassungen des Seitenlayouts durchscrlayer-scrpage
führen würde.Danke! Ich habe die Layer in
Danke! Ich habe die Layer in der Doku gesehen, mich aber nicht so recht herangetraut. Scheint in diesem Fall aber relativ simpel zu sein.
[Admin-Edit:] Beitrag passend verschoben (da vermutlich kein Kommentar auf die Frage selbst).