PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sectionname und Nummer statt \markright



jenethan
19-07-2010, 21:37
Hallo Community,

ich habe ein Problem, das mich fast zur Verzweiflung treibt. Ich habe ein Dokument, bei dem über den Einzelkapiteln bzw. Sektionen in der Kopfzeile nochmal der Sektionsname steht, jedoch innerhalb der einzelnen Sektionen mit \markright{blabla} nochmal inhaltlich etwas anders als der Sektionsname an sich. Normalerweise klappt das auch, nur leider nicht bei der ersten Seite der Sektion - dort steht in der Kopfzeile immer noch der normale lange Sektionsname, der auch im Inhaltsverzeichnis nebst Kapitelnummer angezeigt wird statt die kürzere \markright-Variante.

Ich hoffe, ihr versteht, was ich meine. Hier mal Teile meiner Präambel. Ich glaube, dass der rot-markierte Teil da nicht so hinhaut, wie ich es gerne hätte:



\documentclass[a4paper,14pt, bibtotoc, twoside]{scrreprt}
\usepackage{geometry}
\geometry{a4paper, top=35mm, bottom=25mm, left=30mm, right=30mm}
\addtocontents{toc}{\protect\thispagestyle{empty}}
\raggedbottom
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000
\usepackage[applemac]{inputenc}
\usepackage[USenglish,ngerman] {babel}
\usepackage{remreset}
\usepackage[bottom,hang]{footmisc}
\usepackage[automark,headsepline,plainheadsepline]{scrpage2}
\usepackage{longtable}
\usepackage{color}
\usepackage{url}
\urlstyle{rm}
\clearscrheadfoot
\renewcommand*{\chapterpagestyle}{plain}
\pagestyle{scrheadings}
\ohead{\pagemark}
\chead{\rightmark}
\rohead[\pagemark]{\pagemark}
\setlength{\footnotemargin}{15pt}
\setlength{\headheight}{1.1\baselineskip}
\usepackage{setspace}
\setstretch{1}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\makeatletter
\@removefromreset{footnote}{chapter}
\@removefromreset{footnote}{section}
\@removefromreset{footnote}{subsection}
\@removefromreset{footnote}{subsubsection}
\renewcommand*\bib@heading{%
\section*{\bibname}%
}
\makeatother



Danke schon mal für eure Hilfe. Hoffe, ihr könnt mir da weiterhelfen und wisst, was ich meine.

LG
JenEthan

lockstep
19-07-2010, 22:43
Statt Codefragmenten poste bitte zukünftig ein a) lauffähiges b) kleines Beispiel, das c) dein Problem demonstriert.

Ich bin mir nicht sicher, was genau du in den Kopfzeilen von linken und rechten Seiten stehen haben möchtest, habe aber ein Beispiel gebastelt, mit dem du herumspielen kannst.



\documentclass[twoside]{scrreprt}

\newcommand*{\myheadtext}{(Besonderer Kopfzeilentext)}
\newcommand*{\updatemyheadtext}[1]{%
\markright{#1}%
\renewcommand*{\myheadtext}{#1}%
}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ohead[\pagemark]{\pagemark}
\chead[\myheadtext]{\headmark}% Ev. \myheadtext statt \headmark

\usepackage{blindtext}

\begin{document}

\chapter{foo}

\section{bar}

\updatemyheadtext{Kopfzeilentext zu section bar}

\blindtext[10]

\end{document}


lockstep

Stefan_K
19-07-2010, 23:44
Hi JenEthan,

falls Du \markright oder \sectionmark o.ä. im Test selbst aufrufst, was wir in jenem Präambelteil nicht sehen können: schreib diesen Befehl auch in das Pflichtargument von \section. Ggf. verwende das optionale Argument für den Titeltext ohne diesen Befehl. Das Argument des zuerst aufgerufenen mark-Befehls wird in den header geschrieben.

Stefan

lockstep
20-07-2010, 07:27
Das Argument des zuerst aufgerufenen mark-Befehls wird in den header geschrieben.

Dies gilt anscheinend nicht für \markright auf der ersten Kapitelseite.



\documentclass{scrbook}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ohead[\pagemark]{\pagemark}
\chead[\headmark]{\headmark}

\usepackage{blindtext}

\begin{document}

\chapter{bla}

\chapter[foo]{foo\markright{test}}

\section[bar]{bar\markright{test}}

\markright{test}

\blindtext[10]

\end{document}


lockstep

Schweinebacke
20-07-2010, 08:05
Mal nur die relevanten Zeilen:



\newcommand*{\myheadtext}{(Besonderer Kopfzeilentext)}
\newcommand*{\updatemyheadtext}[1]{%
\markright{#1}%
\renewcommand*{\myheadtext}{#1}%
}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot

\chead[\myheadtext]{\headmark}% Ev. \myheadtext statt \headmark

\updatemyheadtext{Kopfzeilentext zu section bar}

lockstep, ich vermute, dass Du den Seitenumbruch bzw. die Ausgabe der Seiten nicht komplett verstanden hast. In dem Fall schreibst Du ja letztlich "Kopfzeilentext zu section bar" im plain-Seitenstil direkt in den Kopf. Das wird aber nicht unbedingt auf der Seite gemacht, auf der die Ausgabe des umgebenden Textes erfolgt, sondern es wird auf der Seite gemacht, die noch nicht ausgegeben ist, wenn diese Anweisung ausgeführt wird. Das kann im Extremfall viele Seite früher sein. Genau wegen dieses Problems mit der asynchronen Ausgabe gibt es den Mark-Mechanismus.

Ich vermute mal, dass dem OP mit dem optionalen Argument von \section ggf. mit einem \markright im nicht optionalen Argument geholfen wäre.

BTW: Die \rightmark und \leftmark verwenden unterschiedliche TeX-Marken. Während \rightmark auf \firstmark basiert, basiert \leftmark auf \botmark. Dazu steht auch etwas im KOMA-Script-Buch.

Achja: Auf komascript.de gibt es noch ein experimentelles Paket, mit dem man über das optionale Argument von \section etc. direkt bestimmen kann, was im Kolumnentitel und was im Inhaltsverzeichnis stehen soll, wobei die beiden unterschiedlich sein dürfen. Ich habe das aber noch nie verwendet.

jenethan
20-07-2010, 08:08
Hallo,

vielen Dank für eure Antworten. Mit diesem Codeteil in den jeweiligen Sektionen habe ich es hinbekommen: :)



\section[Blablablubb]{Blablablubb\sectionmark{Blabla}}
\sectionmark{Blabla}


Danke,
JenEthan

lockstep
20-07-2010, 13:19
Ich vermute mal, dass dem OP mit dem optionalen Argument von \section ggf. mit einem \markright im nicht optionalen Argument geholfen wäre.

In meinem Beispiel in Beitrag Nr. 4 ist \markright auf der ersten Kapitelseite unwirksam. Habe ich etwas Offensichtliches übersehen?

lockstep

Schweinebacke
20-07-2010, 13:49
In meinem Beispiel in Beitrag Nr. 4 ist \markright auf der ersten Kapitelseite unwirksam. Habe ich etwas Offensichtliches übersehen?
\chapter ruft \chaptermark auf, bevor das obligatorische Argument expandiert wird, um die Überschrift zu setzen. Dabei wird ein \markboth mit leerem zweiten Argument ausgeführt. Also ist \firstmark (und darauf basiert \rightmark im Gegensatz zu \leftmark) im rechten Argument leer. Lösung
\cleardoublepage
\markright{test}
\chapter...
Im KOMA-Script-Buch steht ja auch, dass es nicht so einfach ist, den Kolumnentitel auf die Kapitelanfangsseite zu bekommen. Ich vermute mal, dass das etwas damit zu tun hat. Es wird dort aber auch gesagt, dass man das eigentlich gar nicht will bzw. wollen sollte. ;)