Ich verwende fancyhdr
und folgediese AntwortIch habe \sectionmark
es wie folgt neu definiert:
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
so dass
\fancyhead[RO,LE]{\leftmark}
gibt den Namen des aktuellen Abschnitts in der Kopfzeile rechts für ungerade Seiten und links für gerade Seiten an. Das mag seltsam klingen, aber ich möchte zusätzlich diekurzName des Abschnitts, der auf derandereSeite der Kopfzeile. Wenn ich beispielsweise
\section[short name]{long name}
dann hätten meine Seiten Überschriften mit „Kurzname“ auf der einen Seite und „Langname“ auf der anderen. Ist das möglich? Ich nehme an, ich müsste \fancyhead[RE,LO]{\rightmark}
Dinge so konstruieren, dass \rightmark
der Kurzname des Abschnitts entsteht. Aber damit hatte ich keinen Erfolg. Auch wenn ich einen Kurznamen für angebe \section[]{}
, wird der Kurzname \leftmark
stattdessen in verwendet.
(Warum mache ich das? Jeder dieser Abschnitte hat einen neuen Namen unter einer neuen Namenskonvention und einen alten Namen unter einer alten Namenskonvention. Ich versuche zu schummeln und \section[]{}
sowohl den neuen als auch den alten Namen zu deklarieren und beide in der Kopfzeile erscheinen zu lassen. Dieses Dokument wird kein Inhaltsverzeichnis enthalten und ich sehe auch keine andere Verwendung von Kurznamen vor.)
Antwort1
Es ist hässlich, aber es funktioniert.
\documentclass{article}
\usepackage{everypage}
\usepackage{lipsum}
\newlength{\headeroffset}
\newcommand{\shortname}{}
\newcommand{\longname}{}
\newcommand{\myhead}[2]% #1 = short name, #2 = long name
{\def\shortname{#1}%
\def\longname{#2}%
\settodepth{\headeroffset}{{#1}{#2}}% distance from baseline to bottom
\global\headeroffset=\headeroffset}
\newcommand{\writeheader}{%
\begingroup% preserve global \headeroffset
\advance \headeroffset by -\topmargin% to top of header
\advance \headeroffset by -\headheight% to botom of header
\ifodd\value{page}\raisebox{\headeroffset}[0pt][0pt]{\hspace{\oddsidemargin}%
\makebox[\textwidth][l]{{\shortname}\hfill{\longname}}%
\hspace{-\textwidth}\hspace{-\oddsidemargin}}% return cursor to left
\else\raisebox{\headeroffset}[0pt][0pt]{\hspace{\evensidemargin}%
\makebox[\textwidth][l]{{\longname}\hfill{\shortname}}%
\hspace{-\textwidth}\hspace{-\evensidemargin}}% return cursor to left
\fi\endgroup}
\AddEverypageHook{\writeheader}
\begin{document}
\pagestyle{plain}
\myhead{Short name}{This is a long name}
\lipsum[1-12]
\end{document}