Выравнивание длинных названий разделов по правой стороне заголовка

Выравнивание длинных названий разделов по правой стороне заголовка

Я пытаюсь закончить свою диссертацию, но у меня возникли некоторые проблемы с выравниванием текста в заголовке. Я использую пакет fancyhdr и хочу, чтобы глава располагалась слева, а раздел — справа от заголовка. Поскольку у меня есть несколько более длинных названий разделов, я попробовал следующее решение:

\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}}

в результате чего введите описание изображения здесь

Ни первая, ни вторая строка раздела не выровнены по правому краю. Другая проблема заключается в том, что вторая строка сталкивается с горизонтальной линией заголовка. Я хотел бы, чтобы раздел был выровнен по правому краю, и как только он выйдет за пределы центра страницы, он продолжится на новой строке.

Надеюсь, у кого-то есть идея или даже решение.

Спасибо, Йоханнес.

решение1

Вы можете поместить содержимое \rightmark(т. е. номер раздела и его название) на мини-страницу шириной 0.5\textwidth.

Демонстрация для ваших целей:

\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}

введите описание изображения здесь

введите описание изображения здесь

решение2

Идея здесь заключается в том, чтобы отрегулировать ширину \parboxна правой стороне, чтобы она соответствовала остаточному пространству. Интересно, что трудной частью было всегда, чтобы верхняя часть заголовка всегда отображалась на одном и том же уровне.

\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}

Связанный контент