Problema con fancyhdr al imprimir el título de sección incorrecto

Problema con fancyhdr al imprimir el título de sección incorrecto

Tengo un problema con fancyhdrla combinación con el appendixpaquete. El problema ocurre, por lo que he observado hasta ahora, sólo cuando compilo un documento de una página. En twosidemodo todo parece compilarse correctamente.

Como puedes ver en el MWE, el título de la sección principal está en cada página. En la página de bibliografía, el título también está en el encabezado. Sin embargo, permanece allí durante las siguientes páginas del documento, aunque los anexos tienen título propio.

En twosidemodo este no es el caso.

¿Tengo un error en mi código o es un error en el paquete fancyhdro appendix?

Estoy muy agradecido por cualquier ayuda.


MWE

\documentclass[11pt]{article}
% \documentclass[11pt, twoside]{article}

\usepackage{geometry}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage[titletoc, title, header]{appendix}
\usepackage{biblatex}
\usepackage{lipsum}

\geometry{%
    a4paper,%
    top = 3cm,%
    bottom = 3.5cm,%
    inner = 2.5cm,%
    outer = 2.5cm,%
    nomarginpar,%
    showframe = false%
}

\fancypagestyle{general}{%
    \fancyhf{}                  % Clean fields
    \renewcommand{\headrulewidth}{0.4pt}
    \renewcommand{\footrulewidth}{0.4pt}
    \fancyhead[R]{\itshape\nouppercase{\leftmark}}
    \fancyfoot[R]{\thepage}
}

\let\printbibliographyCopy\printbibliography
\renewcommand{\printbibliography}{%
    \cleardoublepage%
    \addcontentsline{toc}{section}{\refname}%
    \pagenumbering{Roman}%
    \printbibliographyCopy%
    \cleardoublepage%
}

\AtBeginEnvironment{appendices}{%
    \let\oldSection\section%
    \renewcommand{\section}[1]{%
        \cleardoublepage%
        \oldSection{#1}%
    }%
}

\title{\texttt{fancyhdr} issue}
\author{Sam}
\date{}

\bibliography{refs}

\begin{document}
    \thispagestyle{general}%
    \pagestyle{general}%

    \maketitle

    \section{\lipsum[1][1]}
    \lipsum[1-3]

    \subsection{\lipsum[1][2]}
    \lipsum[4-6]

    \subsection{\lipsum[1][3]}
    \lipsum[7-10]

    \section{\lipsum[2][1]}
    \lipsum[1-3]

    \subsection{\lipsum[2][2]}
    \lipsum[4-6]

    \subsection{\lipsum[2][3]}
    \lipsum[7-10]

    \section{\lipsum[3][1]}
    \lipsum[1-3]

    \subsection{\lipsum[3][2]}
    \lipsum[4-6]

    \subsection{\lipsum[3][3]}
    \lipsum[7-13]\cite{Nobody06}

    \printbibliography

    \begin{appendices}
        \section{\lipsum[4][1]}
        \lipsum[1-3]

        \section{\lipsum[5][1]}
        \lipsum[1-3]

        \section{\lipsum[6][1]}
        \lipsum[1-3]
    \end{appendices}
\end{document}

Capturas de pantalla

Sección normal en modo onesideotwoside Sección Normal


Referencias en modo onesideotwoside Referencias


Apéndice en twosidemodo Apéndice en modo bilateral


Apéndice en onesidemodo Apéndice en modo unilateral

Respuesta1

El mismo efecto se puede reproducir en el siguiente MWE simplificado

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage[titletoc, title, header]{appendix}
\usepackage{lipsum}


\fancypagestyle{general}{%
  \fancyhf{}%
  \renewcommand{\headrulewidth}{0.4pt}%
  \renewcommand{\footrulewidth}{0.4pt}%
  \fancyhead[R]{\itshape\nouppercase{\leftmark}}%
  \fancyfoot[R]{\thepage}%
}
\pagestyle{general}%

\begin{document}
  \section{\lipsum[1][1]}
  \lipsum[1-3]

  \begin{appendices}
    \section{\lipsum[4][1]}
    \lipsum[1-3]
  \end{appendices}
\end{document}

El problema radica específicamente en la opción headerpasada a appendix. La opción se describe en el manual como

Agrega un nombre (por ejemplo, 'Apéndice') antes de cada apéndice en los encabezados de página. El nombre viene dado por el valor de \appendixname. Tenga en cuenta que este es el comportamiento predeterminado para las clases que tienen capítulos.

Si la opción está habilitada, \sectionmarkse redefinirá de la siguiente manera al comienzo del appendicesentorno.

\def\sectionmark##1{%
  \if@twoside
    \markboth{\@formatsecmark@pp{#1}}{}
  \else
    \markright{\@formatsecmark@pp{#1}}{}
  \fi}

Observe cómo la definición difiere entre twosidey oneside. Esta definición es consistente con las definiciones habituales en article.cls.

Cuando fancyhdrse carga, la definición de clases \sectionmarksimilares articlesiempre implica solo \markbothindependientemente de la configuración twoside/ oneside. siempre lo es

\def\sectionmark##1{%
  \markboth{\MakeUppercase{%
    \ifnum \c@secnumdepth>\z@
      \thesection\hskip 1em\relax
    \fi
    ##1}}{}

La solución simple es no usar la headeropción de appendix, ya que aparentemente no fue escrita teniendo fancyhdren cuenta la idiosincrasia de . Entonces no verás elApéndiceen el encabezado, sin embargo. Si desea conservarlo, puede parchearlo appendicescuando fancyhdresté cargado.

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage{fancyhdr}
\usepackage[titletoc, title, header]{appendix}
\usepackage{lipsum}


\fancypagestyle{general}{%
  \fancyhf{}%
  \renewcommand{\headrulewidth}{0.4pt}%
  \renewcommand{\footrulewidth}{0.4pt}%
  \fancyhead[R]{\itshape\nouppercase{\leftmark}}%
  \fancyfoot[R]{\thepage}%
}
\pagestyle{general}%

% patch appendices for fancyhdr
\makeatletter
\@ifpackageloaded{fancyhdr}
  {\apptocmd\appendices{%
     \if@chapter@pp
     \else
       \if@dohead@pp
         \def\sectionmark#1{\markboth{\@formatsecmark@pp{#1}}{}}%
       \fi
     \fi}}
  {}
\makeatother

\begin{document}
  \section{\lipsum[1][1]}
  \lipsum[1-3]

  \begin{appendices}
    \section{\lipsum[4][1]}
    \lipsum[1-3]
  \end{appendices}
\end{document}

El encabezado muestra "Apéndice A Quisque ullamcorper placerat ipsum".

información relacionada