Alinhando nomes de seções longas ao lado direito do cabeçalho

Alinhando nomes de seções longas ao lado direito do cabeçalho

Estou tentando terminar minha tese mas enfrento alguns problemas em relação ao alinhamento do texto no cabeçalho. Eu uso o pacote fancyhdr e quero o capítulo posicionado no lado esquerdo e a seção no lado direito do cabeçalho. Como tenho alguns nomes de seção mais longos, tentei a seguinte solução:

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

resultando em insira a descrição da imagem aqui

Nem a primeira nem a segunda linha da seção estão alinhadas à direita. Outro problema é que a segunda linha colide com a linha horizontal do cabeçalho. Gostaria que a seção fosse alinhada à direita e, assim que ultrapassasse o centro da página, continuasse em uma nova linha.

Espero que alguém tenha uma ideia ou mesmo uma solução.

Obrigado, Johannes

Responder1

Você pode colocar o conteúdo \rightmark(ou seja, o número da seção e o título da seção) em uma minipágina de largura 0.5\textwidth.

Uma demonstração para o seu propósito:

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

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Responder2

A ideia aqui é ajustar a largura do \parboxlado direito para caber no espaço restante. Curiosamente, a parte difícil era fazer com que o topo do cabeçalho aparecesse sempre no mesmo nível.

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

informação relacionada