fancyhdr이 잘못된 섹션 제목을 인쇄하는 데 문제가 있습니다.

fancyhdr이 잘못된 섹션 제목을 인쇄하는 데 문제가 있습니다.

fancyhdr패키지 와의 조합 에 문제가 있습니다 appendix. 지금까지 관찰한 바에 따르면 문제는 한 페이지짜리 문서를 컴파일할 때만 발생합니다. 모드 에서는 twoside모든 것이 올바르게 컴파일되는 것 같습니다.

MWE에서 볼 수 있듯이 주요 섹션의 헤드라인은 각 페이지에 있습니다. 참고문헌 페이지의 제목은 머리글에도 나와 있습니다. 그러나 첨부 파일에 자체 제목이 있더라도 문서의 다음 페이지에는 그대로 유지됩니다.

모드 에서는 twoside그렇지 않습니다.

내 코드에 버그가 있습니까? 아니면 fancyhdr또는 appendix패키지의 버그입니까?

어떤 도움이라도 정말 감사드립니다.


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}

스크린샷

onesideor twoside모드 의 일반 단면 일반 섹션


oneside또는 twoside모드 의 참조 참고자료


twoside모드 의 부록 양면 모드의 부록


oneside모드 의 부록 한쪽 모드의 부록

답변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. 옵션은 매뉴얼에 다음과 같이 설명되어 있습니다.

페이지 헤더의 각 부록 앞에 이름(예: '부록')을 추가합니다. 이름은 값으로 지정됩니다 \appendixname. 이는 장이 있는 클래스의 기본 동작입니다.

옵션이 활성화되면 환경 \sectionmark시작시 다음과 같이 재정의됩니다.appendices

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

twoside와 의 정의가 어떻게 다른지 확인하세요 oneside. 이 정의는 의 일반적인 정의와 일치합니다 article.cls.

로드 되면 in -like 클래스 fancyhdr의 정의는 / 설정 에 관계없이 항상 관련됩니다 . 항상 그렇습니다\sectionmarkarticle\markbothtwosideoneside

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

헤더에는 "부록 A Quisque ullamcorper placerat ipsum"이 표시됩니다.

관련 정보