fancyhdr
パッケージとの組み合わせで問題が発生していますappendix
。この問題は、私がこれまで観察した限りでは、1 ページのドキュメントをコンパイルするときにのみ発生します。twoside
モードではすべてが正しくコンパイルされるようです。
MWE を見るとわかるように、メイン セクションの見出しは各ページにあります。参考文献ページでは、タイトルもヘッダーにあります。ただし、添付ファイルには独自のタイトルがありますが、ドキュメントの次のページでもタイトルはそのまま残ります。
モードではtwoside
そうではありません。
fancyhdr
私のコードにバグがあるのでしょうか、それともまたはパッケージのバグでしょうかappendix
?
どのような助けでも大変感謝いたします。
ムウェ
\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}
スクリーンショット
答え1
同じ効果は、次の簡略化されたMWEでも再現できます。
\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}
header
問題は、に渡されるオプションに特に関係していますappendix
。このオプションはマニュアルで次のように説明されています。
ページ ヘッダーの各付録の前に名前 (例: 'Appendix') を追加します。名前は の値によって指定されます
\appendixname
。これは、章を持つクラスのデフォルトの動作であることに注意してください。
オプションが有効になっている場合、環境\sectionmark
の開始時に次のように再定義されます。appendices
\def\sectionmark##1{%
\if@twoside
\markboth{\@formatsecmark@pp{#1}}{}
\else
\markright{\@formatsecmark@pp{#1}}{}
\fi}
twoside
とでは定義が異なることに注意してくださいoneside
。この定義は における通常の定義と一致していますarticle.cls
。
がロードされると、 -likeクラスのfancyhdr
の定義は、/ の設定に関係なく常に のみを含みます。常に\sectionmark
article
\markboth
twoside
oneside
\def\sectionmark##1{%
\markboth{\MakeUppercase{%
\ifnum \c@secnumdepth>\z@
\thesection\hskip 1em\relax
\fi
##1}}{}
簡単な解決策は、header
のオプションを使用しないことですappendix
。明らかに、の特異性を考慮して書かれていないためです。fancyhdr
念頭に置いて書かれていないようです。 そうすれば、付録ただし、ヘッダーには含まれません。これを保持したい場合は、ロードappendices
時にパッチを適用できます。fancyhdr
\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}