在图书课上,花哨的页眉与序言不搭调

在图书课上,花哨的页眉与序言不搭调

谢谢,Werner,你的建议很有效。我在这里提供了一个可行的简单示例

在书籍课程中,我定义了标题并有一个序言:

\documentclass[12pt,twoside,openright]{book}
\usepackage[utf8]{inputenc} % 
\usepackage[T1]{fontenc} % 
\usepackage{lipsum,layout,fancyhdr}
\let\oldchaptermark\chaptermark% Store \chaptermark % added to cut
\pagestyle{fancy} % read package doc. 
\let\chaptermark\oldchaptermark% Restore \chaptermark % added to restore
\fancyfoot{}
\fancyhead[LO]{\slshape\nouppercase{\leftmark}}
\fancyhead[RE]{\textit{<Historical Materialism>}} %
\fancyhead[RO]{\thepage} %
\fancyhead[LE]{\thepage} %
\begin{document} %
\frontmatter \chapter{Preface}
\lipsum
\mainmatter 
\chapter*{Chapter}
\backmatter 
\end{document}      

现在 Preface 标题只是“Preface”

答案1

fancyhdrfancy页面样式重新定义\chaptermark——负责存储页面标记中的内容的宏。

\chaptermark这是仅加载book不带 * 的类时的原始定义fancyhdr

\def\chaptermark#1{%
  \markboth {\MakeUppercase{%
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \@chapapp\ \thechapter. \ %
      \fi
    \fi
    #1}}{}}%

注意它如何取决于你是否在\mainmatter- \ifmainmatter... 。这是加载和执行\fi时的定义:fancyhdr\pagestyle{fancy}

\def\chaptermark#1{%
  \markboth {\MakeUppercase{%
    \ifnum \c@secnumdepth > \m@ne
      \@chapapp\ \thechapter. \ %
    \fi
    #1}}{}}%

对 的存在没有任何条件\mainmatter

\chaptermark一种解决方案是先存储\pagestyle{fancy},然后恢复:

\let\oldchaptermark\chaptermark% Store \chaptermark
\pagestyle{fancy}
\let\chaptermark\oldchaptermark% Restore \chaptermark

相关内容