¿Es posible utilizar tanto el nombre largo como el nombre corto de la sección en los encabezados?

¿Es posible utilizar tanto el nombre largo como el nombre corto de la sección en los encabezados?

Estoy usando fancyhdry siguiendoesta respuestaLo he redefinido \sectionmarkcomo:

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

información relacionada