Section-Nummer und Section-Titel in Kopfzeile passen nicht

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


me@goLaTeX
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 29. Jun 2010, 10:56

Section-Nummer und Section-Titel in Kopfzeile passen nicht

Beitrag von me@goLaTeX »

Hallo,

ich schreibe meine 2. Projektarbeit (4. Semester) in LaTeX.
Ich benutze dabei TeXnicCenter und MiKTeX 2.8.

Jetzt habe ich ein Problem beim gestalten meiner Kopfzeilen.
Und zwar möchte ich auf den geraden (linken) Seiten links die Nummer der Section und rechts den Titel der Section stehen haben.
Auf den ungeraden (rechten) Seiten links die Nummer des Kapitels und rechts den Titel des Kapitels.

Bei den Sections hab ich nun das Problem, dass die Nummer der Section derjenigen entspricht, die als letztes auf der Seite beginnt und den Namen der Section derjenigen entspricht, die als erstes auf der Seite beginnt.

Hab ich also auf einer Seite 4 Sections, z.B.:
1.1 LaTeX
1.2 Word
1.3 Notepad
1.4 Stift und Papier,

so steht in der Kopfzeile (links, mitte, rechts):
ABSCHNITT 1.4, , LaTeX

Ich hab mal folgendes Minimalbeispiel erstellt:
% Papierformat
\documentclass[%
    ngerman,%
    twoside,%
    fontsize=12pt,%
    chapterprefix=true%
]{scrbook}

% Deutsche Silbentrennung und Umlaute, Schriften
\usepackage[ngerman]{babel}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}

% Weitere Pakete
\usepackage{lipsum}
\usepackage[%
    automark,%	
    markuppercase%
]{scrpage2}
\usepackage[%
    bookmarks,%
    bookmarksopen=false,%
    bookmarksnumbered=true,%
    pdfauthor={Autor},%
    pdftitle={Titel},%
    pdfpagelabels,%
    plainpages=false,%
    colorlinks=true,%
    linkcolor=black,%
    citecolor=black,%
    urlcolor=black%
]{hyperref}

% Formatierungsanweisungen
\setlength{\parindent}{0cm}	% kein Einzug bei neuen Absaetzen

	% Kopf- und Fusszeilen
	\clearscrheadfoot
	\pagestyle{scrheadings}

	% \renewcommand{}{}, um Kapitel- und Abschnittsnummern beim Aufruf von \head- bzw. \rightmark zu unterdrücken
	\renewcommand{\chaptermark}[1]{\markleft{\MakeUppercase{#1}}}
	\renewcommand{\sectionmark}[1]{\markright{\MakeUppercase{#1}}}

	
	\cfoot[\pagemark]{}	   % Seitenzahlen in der Mitte der Fusszeile (bei plain-Seitenstil bspw. durch \chapter)
	\ofoot{\pagemark}    % Seitenzahlen in der Fußzeile aussen
	\lohead{KAPITEL \thechapter}    % Kapitelnummer in der Kopfzeile links bei ungeraden Seiten
	\rohead{\leftmark}    % Kapitelname in der Kopfzeile rechts bei ungeraden Seiten
	\lehead{ABSCHNITT \thesection}    % Section-Nummer in der Kopfzeile links bei geraden Seiten
	\rehead{\rightmark}    % Section-Titel in der Kopfzeile rechts bei geraden Seiten

\begin{document}

\chapter{Kapitel 1}
\section{Abschnitt 1}
\lipsum[1]
\section{Abschnitt 2}
\lipsum[2]
\section{Abschnitt 3}
\lipsum[3]
\section{Abschnitt 4}
\lipsum[4]
\section{Abschnitt 5}
\lipsum[5]
\section{Abschnitt 6}
\lipsum[6]
\section{Abschnitt 7}
\lipsum[7]
\section{Abschnitt 8}
\lipsum[8]
\section{Abschnitt 9}
\lipsum[9]
\section{Abschnitt 10}
\lipsum[10]
\section{Abschnitt 11}
\lipsum[11]
\section{Abschnitt 12}
\lipsum[12]

\end{document}
Das kompilierte Minimalbeispiel findet ihr im Anhang.

Vielen Dank im Voraus.
Dateianhänge
Minimalbeispiel.pdf
Kompiliertes Minimalbeispiel
(63.26 KiB) 648-mal heruntergeladen

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Das ist kein Wunder. \thesection zum Zeitpunkt, wenn die Kopfzeile gesetzt wird und \thesection zum Zeitpunkt, wenn \sectionmark aufgerufen wird, müssen nicht identisch sein. Deshalb sollte man Gliederungsnummern wie den Überschriftentext selbst auch niemals direkt in den Kopf setzen, sondern immer per mark-Mechanismus.

BTW: Nach den typografischen Regeln ist Versalsatz (also wenn Wörter komplett in Großbuchstaben gesetzt werden) immer zu sperren, \MakeUppercase macht genau das nicht und taugt daher alleine nicht, um ganze Wörter in Großbuchstaben zu wandeln.

me@goLaTeX
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 29. Jun 2010, 10:56

Beitrag von me@goLaTeX »

Ich hab auch schon gelesen, dass \MakeUppercase nicht immer das Gelbe vom Ei ist, aber ich kenn einfach nix anderes und es funktioniert ja ganz gut :)

Wie bekomm ich dann ohne \thechapter bzw. \thesection die Nummer des Kapitels/Abschnittes in meine Kopfzeile?

Ich (oder mehr mein Betreuer, der auch meine Arbeit benotet) möchte die Nummer und den Titel eben getrennt haben, sonst würde ich das \renewcommand einfach weglassen und mit \rightmark bzw. \leftmark den Titel und die Nummer zusammen hinschreiben.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wieso ohne \thesection und \thechapter. Selbstverständlich mit, aber eben mit mark-Mechanismus. Dazu definierst Du Dir entweder eigene Marken (siehe e-TeX-Manual) oder Du verwendest die triviale Lösung:
% Papierformat
\documentclass[%
    ngerman,%
    twoside,%
    fontsize=12pt,%
    chapterprefix=true%
]{scrbook}

% Deutsche Silbentrennung und Umlaute, Schriften
\usepackage[ngerman]{babel}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}

% Weitere Pakete
\usepackage{lipsum}
\usepackage[%
    automark,%  
    markuppercase%
]{scrpage2}
\usepackage[%
    bookmarks,%
    bookmarksopen=false,%
    bookmarksnumbered=true,%
    pdfauthor={Autor},%
    pdftitle={Titel},%
    pdfpagelabels,%
    plainpages=false,%
    colorlinks=true,%
    linkcolor=black,%
    citecolor=black,%
    urlcolor=black%
]{hyperref}

% Formatierungsanweisungen
\setlength{\parindent}{0cm}   % kein Einzug bei neuen Absaetzen
                              % HINWEIS: DIE HIER VERWENDETE SCHEINLÖSUNG IST
                              % GANZ SCHLECHT, WEIL DAMIT ABSÄTZE GAR NICHT
                              % MEHR AUSGEZEICHNET WERDEN. BESSER IST DIE
                              % LÖSUNG ÜBER OPTION parskip, DIE IN DER
                              % KOMA-SCRIPT-ANLEITUNG ZU FINDEN IST.

% Kopf- und Fusszeilen
\clearscrheadfoot
\pagestyle{scrheadings}

% \renewcommand{}{}, um Kapitel- und Abschnittsnummern beim Aufruf von \head- bzw. \rightmark zu unterdrücken
\renewcommand{\chaptermark}[1]{\markleft{\MakeMarkcase{\chapapp~\thechapter}\hfill\MakeMarkcase{#1}}}
\renewcommand{\sectionmark}[1]{\markright{\MakeMarkcase{\sectionname~\thesection}\hfill\MakeUppercase{#1}}}


\cfoot[\pagemark]{}      % Seitenzahlen in der Mitte der Fusszeile (bei plain-Seitenstil bspw. durch \chapter)
\ofoot{\pagemark}    % Seitenzahlen in der Fußzeile aussen
\chead{\headmark}

\providecaptionname{ngerman}{\sectionname}{Abschnitt}
\begin{document}

\chapter{Kapitel 1}
\section{Abschnitt 1}
\lipsum[1]
\section{Abschnitt 2}
\lipsum[2]
\section{Abschnitt 3}
\lipsum[3]
\section{Abschnitt 4}
\lipsum[4]
\section{Abschnitt 5}
\lipsum[5]
\section{Abschnitt 6}
\lipsum[6]
\section{Abschnitt 7}
\lipsum[7]
\section{Abschnitt 8}
\lipsum[8]
\section{Abschnitt 9}
\lipsum[9]
\section{Abschnitt 10}
\lipsum[10]
\section{Abschnitt 11}
\lipsum[11]
\section{Abschnitt 12}
\lipsum[12]

\end{document}
Es geht aber auch noch einfacher, wenn man die dafür vorgesehene Schnittstelle verwendet:
% Papierformat
\documentclass[%
    ngerman,%
    twoside,%
    fontsize=12pt,%
    chapterprefix=true%
]{scrbook}

% Deutsche Silbentrennung und Umlaute, Schriften
\usepackage[ngerman]{babel}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}

% Weitere Pakete
\usepackage{lipsum}
\usepackage[%
    automark,%  
    markuppercase%
]{scrpage2}
\usepackage[%
    bookmarks,%
    bookmarksopen=false,%
    bookmarksnumbered=true,%
    pdfauthor={Autor},%
    pdftitle={Titel},%
    pdfpagelabels,%
    plainpages=false,%
    colorlinks=true,%
    linkcolor=black,%
    citecolor=black,%
    urlcolor=black%
]{hyperref}

% Formatierungsanweisungen
\setlength{\parindent}{0cm}   % kein Einzug bei neuen Absaetzen
                              % HINWEIS: DIE HIER VERWENDETE SCHEINLÖSUNG IST
                              % GANZ SCHLECHT, WEIL DAMIT ABSÄTZE GAR NICHT
                              % MEHR AUSGEZEICHNET WERDEN. BESSER IST DIE
                              % LÖSUNG ÜBER OPTION parskip, DIE IN DER
                              % KOMA-SCRIPT-ANLEITUNG ZU FINDEN IST.

% Kopf- und Fusszeilen
\clearscrheadfoot
\pagestyle{scrheadings}

% \renewcommand{}{}, um Kapitel- und Abschnittsnummern weit vom Namen zu setzen
\renewcommand*{\chaptermarkformat}{\chapapp~\thechapter\autodot\hfill}
\renewcommand*{\sectionmarkformat}{\sectionname~\thesection\autodot\hfill}


\cfoot[\pagemark]{}      % Seitenzahlen in der Mitte der Fusszeile (bei plain-Seitenstil bspw. durch \chapter)
\ofoot{\pagemark}    % Seitenzahlen in der Fußzeile aussen
\chead{\headmark}

\providecaptionname{ngerman}{\sectionname}{Abschnitt}
\begin{document}

\chapter{Kapitel 1}
\section{Abschnitt 1}
\lipsum[1]
\section{Abschnitt 2}
\lipsum[2]
\section{Abschnitt 3}
\lipsum[3]
\section{Abschnitt 4}
\lipsum[4]
\section{Abschnitt 5}
\lipsum[5]
\section{Abschnitt 6}
\lipsum[6]
\section{Abschnitt 7}
\lipsum[7]
\section{Abschnitt 8}
\lipsum[8]
\section{Abschnitt 9}
\lipsum[9]
\section{Abschnitt 10}
\lipsum[10]
\section{Abschnitt 11}
\lipsum[11]
\section{Abschnitt 12}
\lipsum[12]

\end{document}
Der Versalsatz in der Kopfzeile sieht übrigens wirklich grauenvoll aus. Von "funktioniert" kann da nicht die Rede sein. Zumindest das dumme Sperren, das das Paket microtype bietet, sollte man mal versuchen.

me@goLaTeX
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 29. Jun 2010, 10:56

Beitrag von me@goLaTeX »

Dankeschön.
Da er bei mir nen Fehler wirft, wenn ich \sectionname benutze, hab ich es folgendermaßen gemacht:
% ...
% ...

% Kopf- und Fusszeilen 
\clearscrheadfoot 
\pagestyle{scrheadings} 

% \renewcommand{}{}, um Kapitel- und Abschnittsnummern weit vom Namen zu setzen 
\renewcommand*{\chaptermarkformat}{\chapapp~\thechapter\hfill} 
\renewcommand*{\sectionmarkformat}{\thesection\hfill}

\cfoot[\pagemark]{}    % Seitenzahlen in der Mitte der Fusszeile
\cohead{ABSCHNITT \rightmark}
\cehead{\leftmark}

\begin{document}

% ...
% ...
So passt jetzt alles :)

PS: Entgegen meines Startposts hab ich Kapitelnummer u. -titel jetzt doch auf geraden Seiten - hab's mir halt anders überlegt ;)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

me@goLaTeX hat geschrieben:Dankeschön.
Da er bei mir nen Fehler wirft, wenn ich \sectionname benutze
Mit meinem Original-Code? Kann ich kaum glauben. Wie alt ist denn Deine KOMA-Script-Version? Oder nachdem Du etas geändert hast? Dann hast Du entweder
\providecaptionname{ngerman}{\sectionname}{Abschnitt}
aus dem Beispiel entfernt oder verwendest eine andere Sprache als ngerman, solltest also ggf. \sectionname für die verwendete Sprache ebenfalls noch definieren.
me@goLaTeX hat geschrieben:
\cohead{ABSCHNITT \rightmark}
Wenn Du den Text dort hin packen würdest, wo er hingehört, nämlich in die Definition von \sectionmarkformat, dann könntest Du Dir dir Umstände mit zwei unterschiedlichen Kopfdefinitionen und \rightmark und \leftmark sparen.

Im übrigen solltest Du Fehlermeldungen immer angeben, statt nur zu erwähnen, dass Du eine Fehlermeldung bekommst.

me@goLaTeX
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 29. Jun 2010, 10:56

Beitrag von me@goLaTeX »

Ja, es lag an
\providecaptionname{ngerman}{\sectionname}{Abschnitt}
welches ich nicht mit übernommen habe aus deinem Beispiel.
Wenn ich das einfüge funktionierts :)

Für die Kopfzeilen hab ich jetzt anstelle von
\chead{\headmark}
den Befehl
\ohead{\headmark}
Bei den Kapiteln ändert das (auf dem ersten Blick) nichts,
aber Kopfzeile vom Inhaltsverzeichnis ist dann der Text auch außen und nicht in der Mitte.

PS: Ich hab KOMA-Script 3.03

Antworten