Estoy usando fancyhdr
y siguiendoesta respuestaLo he redefinido \sectionmark
como:
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
de modo que
\fancyhead[RO,LE]{\leftmark}
proporciona el nombre de la sección actual en el encabezado a la derecha para las páginas impares y a la izquierda para las páginas pares. Esto puede parecer extraño, pero también me gustaría quecortonombre de la sección a la que irotrolado del encabezado. Así, por ejemplo, si he declarado
\section[short name]{long name}
entonces mis páginas tendrían encabezados con "nombre corto" en un lado y "nombre largo" en el otro. Se puede hacer esto? Supongo que necesitaría haber \fancyhead[RE,LO]{\rightmark}
diseñado cosas para que \rightmark
produjeran el nombre corto de la sección. Pero no he tenido éxito con eso. Además, al proporcionar un nombre corto para \section[]{}
, el nombre corto se utiliza en \leftmark
su lugar.
(¿Por qué estoy haciendo esto? Cada una de estas secciones tiene un nombre nuevo según una nueva convención de nomenclatura y un nombre antiguo según una convención de nomenclatura antigua. Estoy intentando hacer trampa y usar \section[]{}
para declarar tanto el nombre nuevo como el antiguo, y tener ambos aparecerá en el encabezado. No habrá tabla de contenidos en este documento y no preveo ningún otro uso de nombres cortos).
Respuesta1
Es feo, pero 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}