使用 fancyhdr 包时无法进行标头操作

使用 fancyhdr 包时无法进行标头操作

默认plain页面样式会生成一个空的页眉和页脚(底部页码除外)。我试图修改页眉中的某些文本(因为这plain是默认设置,所以这应该会影响所有页面)。

因此,我深入研究了这个fancyhdr包。它文档(第 8 页,顶部)给出了重新定义页面样式的示例代码:

[...] fancyhdr 为您提供了一种更简单的方法 [使用命令重新定义纯文本页面样式] \fancypagestyle。此命令可用于重新定义现有页面样式(如纯文本)或定义新页面样式,例如 如果文档的一部分使用不同的页面样式该命令有两个参数:一个是要定义的页面样式的名称,第二个由更改页眉和/或页脚的命令组成,即 fancyhead 等。

\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\textbf{\thepage}} % except the center
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}

我强调的是大胆的引用中的“ ” 正是我的目标。我希望在文档的某一部分(即特定范围的页面)的页眉中显示特定的单词。

但我就是无法让它工作 - 甚至他们给出的示例代码也不行。这是一个干净的示例代码(ShareLatex 的现场演示):

\documentclass[11pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}  
\usepackage{lipsum}

\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\textbf{\thepage}} % except the center
\fancyhead[C]{test text} % added text in header
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}

\begin{document}

\lipsum 
\lipsum
\lipsum

\end{document}

此代码块没有变化。我复制粘贴了文档代码示例,只添加了以下行:\fancyhead[C]{test text}。无论有没有我添加的额外行,它都不起作用。没有变化。

我在文档中找不到我读错的地方。解释似乎很简单。有人能指出错误吗?

答案1

最后要做的事情之一article.cls是发出

\pagestyle{plain}

这会将页面样式设置为当前的版本plainplain因此,在序言中重新定义是不够的,你需要\pagestyle再次调用

\fancypagestyle{plain}{%
% WHATEVER
}
\pagestyle{plain}

文档中没有提到这一点,fancyhdr因为(我猜)该示例是关于重新定义splain\chapter,无论如何它都会调用\thispagestyle{empty}

关于的警告\headheight与此无关,但正如 Christian 在他的评论中指出的那样,你可以通过使用

\usepackage[headheight=14pt]{geometry}

答案2

作为一个附加组件,我提到fancyhdr它并不是唯一一个用于(重新)定义页面样式的软件包。你还可以使用titleps,它随 一起提供titlesec,但可以独立加载,并且使用起来更简单(它隐藏了机制mark)。如果你加载titlesec,你只需设置选项[pagestyles]

具体如下:

\documentclass[11pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{titleps}
\usepackage{lipsum}

\renewpagestyle{plain}{%
\sethead{}{Test text}{}
\setfoot{}{\thepage}{}
}%

\pagestyle{plain}

\begin{document}

\lipsum
\lipsum
\lipsum

\end{document} 

相关内容