Lange Abschnittsnamen in der Kopfzeile rechtsbündig ausrichten

Lange Abschnittsnamen in der Kopfzeile rechtsbündig ausrichten

Ich versuche, meine Abschlussarbeit fertigzustellen, habe aber Probleme mit der Textausrichtung in der Kopfzeile. Ich verwende das Paket fancyhdr und möchte, dass das Kapitel auf der linken Seite und der Abschnitt auf der rechten Seite der Kopfzeile positioniert wird. Da ich einige längere Abschnittsnamen habe, habe ich folgende Lösung ausprobiert:

\newcommand{\changefont}{
    \fontsize{10}{11}\selectfont
}

\fancyhf[lh,rh,ch]{}
\fancyhf[lh]{\begin{minipage}[t]{\textwidth}\changefont 
\slshape\raggedleft\leftmark\qquad\raggedright\rightmark\\\\
\end{minipage}}

ergebend Bildbeschreibung hier eingeben

Weder die erste noch die zweite Zeile des Abschnitts sind rechtsbündig ausgerichtet. Ein weiteres Problem ist, dass die zweite Zeile mit der horizontalen Linie der Kopfzeile kollidiert. Ich möchte den Abschnitt rechtsbündig ausgerichtet haben und sobald er die Seitenmitte überschreitet, in einer neuen Zeile fortfahren.

Ich hoffe jemand hat eine Idee oder sogar eine Lösung.

Danke, Johannes

Antwort1

Sie können den Inhalt \rightmark(d. h. Abschnittsnummer und Abschnittstitel) in eine Miniseite der Breite einfügen 0.5\textwidth.

Eine Demo für Ihren Zweck:

\documentclass{book}
\usepackage{showframe}
\usepackage{fancyhdr}
\renewcommand{\chaptermark}[1]%
  {\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]%
  {\markright{\thesection.\ #1}}
\setlength{\headheight}{20pt}
\fancyhf{}
\fancyhead[L]{\fontsize{8}{9}\selectfont\slshape\leftmark}
\fancyhead[R]{\minipage[b]{.5\textwidth}\fontsize{8}{9}\selectfont\slshape\raggedleft\rightmark\endminipage}
\pagestyle{fancy}
\begin{document}

\chapter{AAAAA}
\section{This section is very very very very very very very very long}
some text
\newpage 
some text
\newpage
\section{aaaa}
some text

\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Antwort2

Die Idee besteht darin, die Breite auf der rechten Seite so anzupassen, \parboxdass sie in den verbleibenden Platz passt. Interessanterweise bestand der schwierige Teil darin, die Oberseite der Kopfzeile jedes Mal auf derselben Höhe anzuzeigen.

\documentclass{book}
\usepackage{showframe}
\setlength{\headheight}{20pt}
\makeatletter
\newsavebox{\lefthead}
\def\ps@myheadings{%
  \def\@oddfoot{\hfil\thepage\hfil}% assuming you want the page number somewhere
  \let\@evenfoot\@oddfoot
  \def\@oddhead{\savebox{\lefthead}{\slshape\leftmark}%
    \parbox[b][\headheight][t]{\textwidth}{\usebox\lefthead\hfill
      \parbox[t]{\dimexpr \textwidth-\wd\lefthead-\columnsep}%
        {\raggedleft\slshape\rightmark}\par}}%
  \let\@evenhead\@oddhead
  \let\@mkboth\markboth
  \def\chaptermark##1{%
    \markboth {\MakeUppercase{%
      \ifnum \c@secnumdepth >\m@ne
        \@chapapp\ \thechapter. \ %
      \fi
      ##1}}{}}%
  \def\sectionmark##1{%
    \markright {\MakeUppercase{%
      \ifnum \c@secnumdepth >\z@
        \thesection. \ %
      \fi
      ##1}}}}
\makeatother
\pagestyle{myheadings}
\begin{document}

\chapter{AAAAA}
\section{This section is very very very very very very very very long}
some text
\newpage 
some text
\newpage
\section{aaaa}
some text

\end{document}

verwandte Informationen