Sie sind hier

Kolumnentitel in scrbook

ich möchte meine Kolumnentitel so einrichten, dass auf den rechten Seite immer der Name des 'part' angegeben wird, während auf der linken Seite der Kolumnentitel entweder den Namen des 'chapter' oder den Namen der 'section' enthält, je nach dem, welche Gliederungsebene gerade aktuell ist. außerdem möchte ich im \ihead immer die Nummer des aktuellen 'chapters' oder der aktuellen 'section' ausgeben. Ist das irgendwie möglich?

Also ungefähr so:

\documentclass[11pt,twoside,DIV10,BCOR0mm,smallheadings,pointednumbers,openany]{scrbook}

%header
\pagestyle{scrheadings}
\clearscrheadings
\ohead{\pagemark}
\renewcommand{\partmarkformat}{}
\renewcommand{\chaptermarkformat}{}
\chead{\headmark}
\ihead{N. THECHAPTER ODER THESECTION}
FALLS DIE AKTUELLE EBENE \chapter IST:
\automark[chapter]{part}
FALLS DIE AKTUELLE EBENE \section IST:
\automark[section]{part}

Danke schonmal im voraus,

remueh

Bild von Markus Kohm

Nummer und Titel werden als Einheit in die Marken geschrieben. Du bräuchtest aber getrennte Marken für Nummer und Titel. Das ist weder in KOMA-Script noch im LaTeX-Kern (\section ist mit Mitteln des LaTeX-Kerns definiert) vorgesehen.

Bevor jetzt jemand kommt und behauptet, man könne einfach \thechapter und \thesection verwenden: Für Kapitel geht das noch, weil Kapitel immer auf neuen Seiten beginnen. Für Abschnitte geht das aber ganz schnell schief, weil LaTeX eine asynchrone Ausgaberoutine hat (derselbe Grund, weshalb \thepage keineswegs immer die aktuelle Seitennummer ausgibt).

Unter Verwendung von e-TeX (das sollte inzwischen die Standardmaschine für LaTeX sein) geht es dann doch, weil dort zusätzliche marks möglich sind. Ich habe aber gerade keine Zeit, das im Detail auszuführen. Zumal ich erst einmal ein Testdokument basteln müsste. Man muss dazu jedenfalls u. a. \chaptermark und \sectionmark umdefinieren.

Bild von Markus Kohm

Hier nun ein Beispiel wie es geht, auch wenn mir das Ergebnis so noch nicht zusagt:

\documentclass[openany]{scrbook}
\usepackage{lipsum}
\usepackage{scrpage2}
\usepackage{etex}% supports \newmarks
\automark[chapter]{part}
\newmarks\numbermark
\renewcommand*{\chaptermark}[1]{%
  \marks\numbermark{\chaptermarkformat}%
  \markright{#1}%
}
\renewcommand*{\sectionmark}[1]{%
  \marks\numbermark{\sectionmarkformat}%
  \markright{#1}%
}
\renewcommand*{\partpagestyle}{empty}
\clearscrheadfoot
\ohead[\pagemark]{\pagemark}
\ihead[{\botmarks\numbermark}]{\botmarks\numbermark}
\chead[\headmark]{\headmark}
\pagestyle{scrheadings}
\begin{document}
\part{Part}
\chapter{Chapter}
\lipsum\lipsum\lipsum
\section{Section}
\lipsum\lipsum
\section{One More Section}
\lipsum
\chapter{One More Chapter}
\lipsum[1]
\section{Section}
\lipsum\lipsum
\section{One More Section}
\lipsum
\end{document}

...das funktioniert natürlich wirklich gut. Ich hatte in der Zwischnzeit versucht, \chapter und \section so umzudefinieren, dass die Kopfzeile jedesmal neu definiert wird, also etwa so:

\newcommand*{\OrigChapter}{}
\let\OrigChapter\chapter
\renewcommand*{\chapter}{\clearscrheadings\ohead{\pagemark}\chead{\headmark}\ihead{N.\arabic{chapter}}\automark[chapter]{part}\OrigChapter}

\newcommand*{\OrigSection}{}
\let\OrigSection\section
\renewcommand*{\section}{\clearscrheadings\ohead{\pagemark}\chead{\headmark} %
\ihead{N.\arabic{chapter}\protect\raisebox{-0.5ex}{\footnotesize\arabic{section}}}\automark[section]{part}\OrigSection}

Das brachte mich aber leider nur in die Nähe des gewünschten Ergebnis (Der Titel von 'part' taucht erst ab dem zweiten Teil im header auf, warum auch immer.
Naja, nun bin ich schon fast glücklich, nur hätte ich wahnsinnig gern mein ursprüngliches

\sectionmarkformat{{\thesection}{\arabic{chapter}\protect\raisebox{-0.5ex}{\footnotesize\arabic{section}}\autodot}}

wieder.
Weißt Du da eventuell auch Rat?

Gruß und vielen Dank,
remueh

Bild von Markus Kohm

Davon abgesehen, dass Dein

\sectionmarkformat{{\thesection}{\arabic{chapter}\protect\raisebox{-0.5ex}{\footnotesize\arabic{section}}\autodot}}

höchstens einen Sinn ergibt, wenn man noch ein \renewcommand davor setzt, kann man auch das erreichen. Problem ist hier lediglich, dass man \mark oder \marks<em>Nummer</em> nicht alles übergeben kann. LaTeX arbeitet deshalb bei \markboth etc. über den Umweg eines Tokenregisters. Das kann man natürlich kopieren. Ich habe hier mal nur den wesentlichen Teil kopiert und dazu Deine Ansammlung überflüssiger Klammern und undurchsichtigen Codes versucht herauszulesen, was Du möglicherweise erreichen willst:

\makeatletter% wegen @ in \@temptokena
\renewcommand*{\sectionmark}[1]{%
  \begingroup
    \@temptokena \expandafter{\sectionmarkformat}%
    \marks\numbermark{\the\@temptokena}%
  \endgroup
  \markright{#1}%
}
\makeatother% wegen \makeatletter
\renewcommand*{\sectionmarkformat}{%
  \thechapter
  \raisebox{-.5ex}{%
    \footnotesize
    \arabic{section}%
  }%
  \autodot
}

Dieses Beispiel zeigt dann gleich noch etwas wichtiges: \marks arbeitet immer global!

vielen herzlichen Dank!
Es ist eben noch kein Meister vom Himmel gefallen, aber ich arbeite daran.
Gruß,
remueh

Bild von Markus Kohm

Ich bin ja schon froh, wenn ich nicht dafür angemacht werde, dass ich nicht einfach nur eine fertige und unter allen Umständen funktionierende Lösung präsentiere und dokumentiere, sondern auch noch Erklärungen und Bemerkungen dazu packe.

Dass Du nun auch noch daran arbeiten willst, mich hier überflüssig zu machen, ist mehr als man heutzutage verlangen kann.

Comments for "Kolumnentitel in scrbook" abonnieren