Sie sind hier

section und chapter in Kopfzeile von scrreprt Dokument

Hallo,

ich schreibe gerade meine Diplomarbeit und nutze dafür Lyx und die KOMA-Script report Dokumentenklasse.
Soweit funktioniert alles hervorragend und seit dem ich scrpage2 für die Kopf- und Fußzeilen verwende
komme ich auch damit besser zu recht.

Was ich bisher leider noch nicht hinbekommen habe, ist die Ausgabe von chapter und section in der
Kopfzeile des einseitigen Dokumentes. Alle Bemühungen führten bisher nur zur Ausgabe von chapter
oder section. Ich habe bereits versucht etwas in den vorhandenen blogs und Forumeinträgen zu finden,
bisher leider ohne Erfolg (wenn ich was übersehen haben sollte - sorry).

Gibt es eine Möglichkeit beide Ebenen auf einer Seite auszugeben?

Vielen Dank

mfg Danny

Bild von Markus Kohm

Das geht, wenn man auch die Option autooneside bei scrpage2 verzichtet mit Hilfe von \automark, \leftmark und \rightmark. \headmark genügt in dem Fall nicht, weil das ja nur eine der Marken enthalten würde.

\documentclass{scrreprt}
\usepackage{scrpage2}
\ihead{\leftmark}
\ohead{\rightmark}
\chead{}
\pagestyle{scrheadings}
\automark[section]{chapter}
\begin{document}
\chapter{Kapitel}
\section{Abschnitt}
\clearpage
\null\clearpage
\end{document}

Bezüglich Kapitelanfangsseiten siehe KOMA-Script-Anleitung (auch Kapitel 3). Bezüglich näherer Informationen zu den verwendeten Anweisungen siehe ebenfalls KOMA-Script-Anleitung. Wie du die Anweisungen bei Lyx in die Präambel bekommst, wirst du als Lyx-Anwender sicher selbst wissen. Anderenfalls kannst du das in der Lyx-Anleitung nachlesen.

So ähnlich hatte ich mir das schon gedacht und auch entsprechend
versucht, leider führt das nicht zum gewünschten Ergebnis.
Bei Verwendung dieser Präambel wird bei mir das aktuelle Kapitel im
rechten und linken Bereich der Kopfzeile ausgegeben.

Kann das an meinen Lyx Einstellungen liegen?

Meine derzeitigen Einstellungen:

Lyx Dokumentformat:
Klasse: report (koma-script)
Seiten-Stil: default
Seiten: Einseitig
Zusatz-Optionen: smallheadings, BCOR10mm, liststotoc

Päambel:
% hyperref links and bookmarks for pdf files
\usepackage[bookmarks, bookmarksopen, bookmarksopenlevel=1, bookmarksnumbered=true]{hyperref}
% \euro symbol
\usepackage{eurosym}
% foot and head
\usepackage{scrpage2}
\ofoot[\pagemark]{\pagemark}
\cfoot[]{}
\setheadsepline{.2pt}
\ihead{\leftmark}
\ohead{\rightmark}
\chead{}
\pagestyle{scrheadings}
\automark[section]{chapter}

mfg Danny

ps: Was hat es eigentlich mit \null und \clearpage auf sich?

Bild von Markus Kohm

Da mein vollständiges Minimalbeispiel funktioniert (probier es doch bitte einmal aus), solltest du einfach einmal sehen, was der Unterschied zwischen meinem Beispiel und dem Quellcode eines von dir produzierten Beispiels ist. Mit deinem Codeschnipsel kann ich jedenfalls nichts anfangen. Da sind Teile drin, die mit dem Problem garantiert nichts zu tun haben (wie eurosym und vermutlich hyperref) und andererseits ist es nicht vollständig (keine Klasse, kein Body).

\null ist so etwas ähnliches wie \mbox{}. Es sorgt also dafür, dass etwas auf der Seite steht. Während also \clearpage\clearpage keine leere Seite erzeugen würde, erzeugt \clearpage\null\clearpage eine Seite mit leerem Satzspiegel (auf der in Wirklchkeit eine leere Box steht). Man könnte stattdessen beispielsweise auch ~ verwenden. Dann hätte man ein Leerzeichen in dem scheinbar leeren Satzspiegel.

Ich habe mich heute rangesetzt und die bisherigen Dokumente in
pures Latex umgewandelt - und siehe da es funktioniert. Lyx werde
ich wohl wieder über Board werfen, kann zwar eine Menge Arbeit
abnehmen, bringt aber andauernd irgenwelche Schwierigkeiten mit sich.

Also es funktioniert so wie Du es beschrieben hast.

Recht herzlichen Dank, Danny

Einen unschönen Effekt habe ich aber noch, für den ich bisher noch
keine Lösung gefunden habe. Der Kapitelanfang meiner Arbeit ist
teilweise zwei bis drei Seiten lang, was dazu führt, dass ab der
zweiten Kapitelseite die Kapitelüberschrift und -nummer bei der
vorgeschlagenen Lösung auf beiden Seiten im Kopf angezeigt wird
(siehe auch http://www.komascript.de/node/164).
Gleiches gilt auch für das Inhaltsverzeichnis (siehe auch
http://www.komascript.de/node/159). Grund ist anscheinend,
dass in dem Moment nur \chaptermark aber noch kein \sectionmark
definiert ist.

Wie kann ich das ändern, was für Möglichkeiten gibt es noch?

Danke für alle sachdienlichen Hinweise im Voraus,

mfg Danny

Bild von Markus Kohm

Die Lösung für das Inhaltsverzeichnis ist einfach: Erst nach den Verzeichnissen also unmittelbar vor dem ersten \chapter (und nach einem \clearpage) das Feld für die Abschnittsmarke im Kopf definieren. Vorher mit einer Definition arbeiten, die dort nichts setzt.

Die Lösung für die Kapitel mit besonders langer Einleitung ist fast so einfach: die section-Marke, die ja als rechte Marke definiert ist, wieder mit \markright löschen.

\documentclass{scrreprt}
\usepackage{scrpage2}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\ohead{\leftmark}
\ihead{}
\chead{}
\pagestyle{scrheadings}
\automark[section]{chapter}
 
\newcounter{loopcounter}
\newcommand*{\nsections}[1]{%
  \setcounter{loopcounter}{#1}%
  \whiledo{\value{loopcounter}>0}{%
  \section{Abschnitt}
  Dummytext
  \addtocounter{loopcounter}{-1}%
  }%
}
 
\newcommand*{\blindtext}[1]{%
  \setcounter{loopcounter}{#1}%
  \whiledo{\value{loopcounter}>0}{%
    \addtocounter{loopcounter}{-1}%
    Dies ist ein ganz kleiner Absatz, dessen Text ganz und gar nicht wichtig
    ist.\par
  }%
}
 
\begin{document}
\tableofcontents
\clearpage
\ihead{\rightmark}
\chapter{Kapitel}\markright{}
\blindtext{100}
\nsections{99}
\end{document}

Danke für die schnelle und ausführliche Antwort,
die Lösung funktioniert einwandfrei, hatte zuvor schon
versucht den Inhalt der Variablen zu setzen, aber den
\markright{} Aufruf habe ich wohl leider übersehen.

mfg Danny

ps: Ich glaub nach Beendigung der Arbeit werde ich mich mal
ein wenig genauer mit der "Programmierung" in Latex
auseinander setzen, die Lösung bzw. die Erzeugung des Inhaltes faziniert mich.

Hallo,

ich habe das gleiche Problem wie es Danny hatte. Ich habe ewig herumprobiert und die Lösung, die Markus Kohm gepostet hat, ausprobiert. Ich weiß, dass sie funktionieren sollte, doch obwohl ich der Meinung bin, alles richtig gemacht zu haben, klappt es nicht. Selbst wenn ich meine Arbeit aus LyX als reines Tex-file exportiere und daraus dann ein DVI-File erzeuge, wird mir die Kopfzeile nicht richtig angezeigt. Es scheint also ein Fehler im Latex-Vorspann zu sein, den ich nicht finden kann.
Ich möchte kurz das Problem beschreiben und hoffe, dass jemand den Fehler in der angehängten Preamble finden kann. Ich will, dass in der rechten Feld der Kopfzeile meines einseitigen Dokumentes automatisch das jeweilige Kapitel aufgeführt wird, in der linken (ebenfalls automatisiert) der aktuelle Abschnitt des Kapitels. Jetzt tritt bei mir folgendes Problem auf: Mein erstes Kapitel hat noch keine Abschnitte (die werde ich erst noch schreiben). Somit wird nur der Titel des Kapitels in der Kopfzeile angezeigt und zwar auf der rechten Seite (eingentlich müsste er ja auf der linken Seite auftauchen). Im folgenden zweiten und dritten Kapitel erscheinen dann auf beiden Seiten der Kopfzeile die Sections und nicht, wie es eigentlich sein müsste, links das Kapitel und rechts die jeweilige section. Allerdings ist mir aufgefallen, dass auf den Seiten, auf denen zwei sections beginnen, beide sections in der Kopfzeile stehen, wobei die frühere section auf der rechten und die spätere auf der linken Seite steht, also:
---------------------------------
3.9 blabla               3.8 bla
---------------------------------

Normalerweise sieht es so aus:
---------------------------------
3.7xy                     3.7 xy
---------------------------------

Aussehen sollte es jedoch generell so:
---------------------------------
3. Kapitel                3.8 bla
---------------------------------

Irgendwie komme ich mit der ganzen Sache nicht klar und wäre sehr dankbar, wenn mir einer von Euch Experten helfen könnte. Der LaTeX-Vorspann, den Lyx fabriziert, sieht bei mir so aus:

%% LyX 1.3 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[12pt,german]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{verbose,a4paper,tmargin=2.5cm,bmargin=3cm,lmargin=3cm,rmargin=2cm}
\pagestyle{headings}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\setlength\parskip{\medskipamount}
\setlength\parindent{0pt}
\usepackage{varioref}
\usepackage{setspace}
\onehalfspacing

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{scrpage2}
\ihead{\leftmark}
\ohead{\rightmark}
\chead{}
\pagestyle{scrheadings}
\automark[chapter]{section}
\setheadtopline{.2pt}
\setheadsepline{.4pt}
\setkomafont{pagehead}
{\normalfont\sffamily\mdseries}
\usepackage{babel} \usepackage[citefull=first,authorformat=smallcaps,titleformat=italic,ibidem=strict,commabeforerest,bibformat=ibidem,oxford]{jurabib}
\makeatother
\begin{document}
\chapter{Einleitung}
.
.
.
.
Für den rettenden Hinweis wäre Euch sehr dankbar,
Sebastian

leider habe ich es in Lyx nicht hinbekommen. Da ich aber mit der
Zeit eh immer mehr eigene Kommandos verwendet habe und somit die
Arbeit mit Lyx durch die Verwendung der eigebetteten Kommandos immer
umständlicher wurde, habe ich wieder zu reinem Latex gewechselt -
womit auch die geschilderte Lösung funktioniert.

mfg Danny

Ich bin jetzt auch auf die klassische TeX-Variante umgestiegen. Dann funktioniert der Code, den Markus Kohm gepostet hat, erwartungsgemäß tadellos! Interessant war folgendes: Ich habe einige Zeilen aus dem aus LyX exportierten .tex-file umgestellt und dann funktionierte es auch mit diesem Code! So funktionierte das Ganze erst dann richtig, als vor ich \usepackage{babel} und alle Bibliographieangaben vor \usepackage{scrpage2} im TeX-Code positionierte. Wahrscheinlich ist das für Leute mit TeX-Erfahrung ein alter Hut?! Außerdem wollte TeX nur dann meine Bibliographie und die Fußnoten richtig darstellen, wenn zugleich nur eine pagestyle-Angabe gemacht wurde, nämlich \pagestyle{scrheadings}. Im obigen von mir geposteten Code sieht man, dass LyX noch einen weiteren pagestyle angibt.
Ich werde auf jeden Fall weiter mit LyX arbeiten - es ist ja unbestritten sehr komfortabel. Am Ende jedoch, wenn es um den Textsatz gehen wird, werde ich einfach das TeX-File exportieren und die fehlerhafte LyX-Präambel duch die funktionierende ersetzen. Mir scheint, dass LyX einfach widersprüchliche Angaben in die Preamble schreibt und die Reihenfolge der Anweisungen missachtet, was dann zu dem Problem mit den Kopfzeilen führt. Da ich jedoch kaum Tex-Erfahrung habe, bin ich wohl nicht der richtige, wenn es darum geht, eine genaue Diagnose zu geben, weshalb der von LyX produzierte Code fehlerhaft ist und wie man das in LyX abstellen könnte. Offenbar eine Aufgabe für jemanden, der mehr davon versteht!

Dank und Gruß
Sebastian

Bild von Markus Kohm

Babel definiert \markboth um. Das ist deshalb ein Problem, weil vorher eventuell Seitenstile bereits etwas wie \let\@mkboth\markboth gemacht haben, also \@mkboth die aktuelle Bedeutung von \markboth gegeben haben. Intern wird dann zukünftig in den Klassen \@mkboth mit der alten Bedeutung von \markboth verwendet, obwohl eigentlich die neue Bedeutung von \markboth verwendet werden sollte. Das ist schonmal nicht gut. Bei scrpage2 kommt hinzu, dass für die Frage, ob \sectionmark (bzw. bei Verwendung von \markleft auch chaptermark) etwas tun soll oder nicht, verglichen wird, ob derzeit \markright mit \@mkboth identisch ist oder nicht. Das ist nicht mehr der Fall, wenn zwischenzeitig babel zugeschlagen hat.

Es gibt vier mögliche Lösungen für das Problem:

  1. In babel zusätzlich ein \let\@mkboth\markboth einfügen, wenn vor der Umdefinierung von \markboth bereits \ifx\@mkboth\markboth zutreffend war.
  2. In scrpage2 den Test von \ifx\@mkboth\markboth in \ifx\@mkboth\@gobbletwo\else ändern.
  3. babel immer vor scrage2 laden/li>
  4. Nach dem laden von babel ggf. ein \automark
  5. ausführen, weil damit dann wieder ein \let\@mkboth\markboth ausgeführt wird, falls das notwendig ist.

Die ersten beiden Lösungen müssten die Paketautoren durchführen, wobei die zweite Lösung eventuell wieder zu anderen, neuen Problemen führt (beispielsweise mit Tricks, wie in splitidx.sty verwendet). Die letzten beiden Lösungen kann jeder selbst verwenden.

Bild von Markus Kohm

Es macht einen deutlichen Unterschied, ob man \automark[section]{chapter} oder \automark{chapter}[section} schreibt und dann einfach \leftmark und \rightmark vertauscht. Warum das einen deutlochen Unterschied macht, ist den ausführungen zu \markleft und \markright in der Erklärung zu \chapterpagestyle in Kapitel 3 zu entnehmen.

Bild von Markus Kohm

Bitte nicht durch Definition eines laut ALIAS-Beschreibung unzulässigen URL-Aliases, die Forum-Datenbank durcheinander bringen! Das beschädigt beispielsweise den RSS-Zugang zu den Seiten. Außerdem hatten wir nun wirklich schon oft genug Konfussion in der Datenbank. Wenn das nochmal vorkommt, wird der entsprechende Benutzer gesperrt, und der Beitrag komplett gelöscht. Wenn es noch öfter vorkommt, wird das Forum abgeschaltet!

Bei Verwendung des aktuellen Kopfzeilenpakets scrlayer-scrpage muss die Option autooneside=false explizit gesetzt werden, wenn das optionale Argument von \automark bei einem einseitigen Dokument berücksichtigt werden soll.

\documentclass{scrreprt}
\usepackage{blindtext}
\usepackage[ngerman]{babel}
 
\usepackage[autooneside=false]{scrlayer-scrpage}% aktiviert automatisch Seitenstil scrheadings
\automark[section]{chapter}
\ohead{\leftmark}
\ihead{\ifstr{\rightmark}{\leftmark}{}{\rightmark}}% Vermeidung doppelter Kopfzeileneinträge
\chead{}
 
\begin{document}
\tableofcontents
\chapter{Kapitel}
\Blindtext[10]
\section{Abschnitt}
\Blindtext
\Blinddocument\Blinddocument\Blinddocument
\Blinddocument\Blinddocument\Blinddocument
\end{document}
Comments for "section und chapter in Kopfzeile von scrreprt Dokument" abonnieren