和之前许多人一样,我也遇到了 fancyhdr 的问题。这个问题应该很容易解决,但却令人沮丧地不合作。
我使用 Overleaf 上的论文课程项目来撰写论文。此设置最初来自哈佛大学,但我对其进行了一些修改。现在,我想在每个奇数页(如果不是章节的第一页)的顶部添加一个带有章节编号和标题的精美页眉,使用以下代码:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{Dissertate}[2014/01/24 v1.0 Dissertate Class]
\LoadClass[12pt,a4paper]{book}
\RequirePackage[a4paper, margin=2cm]{geometry}
\RequirePackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter}{}}
\fancyhf{}
\fancyhead[RO]{\thechapter}
由于这是一大组代码,我已经在 Overleaf 上使用修改后的 Harvard 设置创建了一个开放的虚拟项目,以便访问和尝试以下操作: https://www.overleaf.com/5483644888pkkryhrxzpsg
我确实注意到,在这个项目代码的某个地方,书籍类的特征丢失/被覆盖了。例如,章节并不总是在奇数页打开(非常烦人),所以一定有什么东西覆盖了这些内容。不幸的是,我似乎无法弄清楚它是什么。
你能帮我解决这个问题吗?
谢谢!
答案1
类文件(Dissertate.cls)包含以下代码:
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter}{}}
\fancyhf{}
\fancyhead[RO]{\thechapter}
这意味着奇数页的页眉将只有章节编号。而这正是它的作用。请注意,第一章页面(带有章节标题的页面)将没有页眉,因为它使用页面样式plain
(这在 LaTeX 类中很常见)。因此,您只能从章节的第三页获得页眉。您必须在示例章节中添加更多文本才能看到这一点。
要在标题中获取章节标题,您必须将章节标题添加到命令中,并在标题中\chaptermark
使用,因此将上面的代码更改为:\leftmark
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}}
\fancyhf{}
\fancyhead[RO]{\leftmark}
如果你有足够的页面,你会发现它是有效的: