Tengo un problema con fancyhdr
la combinación con el appendix
paquete. El problema ocurre, por lo que he observado hasta ahora, sólo cuando compilo un documento de una página. En twoside
modo 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 twoside
modo este no es el caso.
¿Tengo un error en mi código o es un error en el paquete fancyhdr
o 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 oneside
otwoside
Referencias en modo oneside
otwoside
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 header
pasada 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, \sectionmark
se redefinirá de la siguiente manera al comienzo del appendices
entorno.
\def\sectionmark##1{%
\if@twoside
\markboth{\@formatsecmark@pp{#1}}{}
\else
\markright{\@formatsecmark@pp{#1}}{}
\fi}
Observe cómo la definición difiere entre twoside
y oneside
. Esta definición es consistente con las definiciones habituales en article.cls
.
Cuando fancyhdr
se carga, la definición de clases \sectionmark
similares article
siempre implica solo \markboth
independientemente 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 header
opción de appendix
, ya que aparentemente no fue escrita teniendo fancyhdr
en cuenta la idiosincrasia de . Entonces no verás elApéndiceen el encabezado, sin embargo. Si desea conservarlo, puede parchearlo appendices
cuando fancyhdr
esté 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}