Estou usando fancyhdr
e seguindoesta respostaEu redefini \sectionmark
como:
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
para que
\fancyhead[RO,LE]{\leftmark}
fornece o nome da seção atual no cabeçalho à direita para páginas ímpares e à esquerda para páginas pares. Isto pode parecer estranho, mas eu também gostaria que ocurtonome da seção para ir nooutrolado do cabeçalho. Então, por exemplo, se eu declarei
\section[short name]{long name}
então minhas páginas teriam cabeçalhos com "nome curto" de um lado e "nome longo" do outro. Isso pode ser feito? Presumo que precisaria usar \fancyhead[RE,LO]{\rightmark}
coisas projetadas para \rightmark
produzir o nome abreviado da seção. Mas não tive sucesso com isso. Além disso, ao fornecer um nome abreviado para \section[]{}
, o nome abreviado é usado em \leftmark
seu lugar.
(Por que estou fazendo isso? Cada uma dessas seções tem um novo nome sob uma nova convenção de nomenclatura e um nome antigo sob uma convenção de nomenclatura antiga. Estou tentando trapacear e usar \section[]{}
para declarar o nome novo e o antigo, e ter ambos aparecerão no cabeçalho. Não haverá índice neste documento e não prevejo nenhum outro uso de nomes abreviados.)
Responder1
É feio, mas funciona.
\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}