我正在使用 documentclass 处理 LaTeX 中的长文档book
。我需要页码始终位于每页的右上角,甚至如果该页面是章节的第一页(目前,在章节的第一页上,页码位于下方中央,在所有其他页面上,页码位于右上角)。
我使用以下命令控制页码的位置fancyhdr
:
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{\thepage}
\lfoot{}
\cfoot{}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
另外,我不知道问题是否相关,但我的章节不是从页面顶部开始的。有一个白色区域,然后是第 X 章,然后是章节行的换行符。我还希望章节从页面顶部开始。
这里的主要问题是如何让页码始终出现在右上角,我只在可能相关的情况下提到章节标题位置的内容。
答案1
即使选择了其他样式,章节的第一页也会使用普通的页面样式。您可以通过\thispagestyle{fancy}
在每个\chapter{}
命令后添加来修复此问题。
章节首页顶部的空白区域是标准章节样式的一部分。您可以使用该fncychap
包创建自己的样式(或使用其中一种包中的样式)。
更新:对于由命令(例如\tableofcontents
)生成的跨页特殊章节,添加\thispagestyle{fancy}
将不起作用。更通用的解决方案是在序言中添加以下内容:
\makeatletter
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{fancy}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\makeatother
答案2
如果我理解正确的话,唯一的问题是普通的页面样式没有在 fancyhdr 中定义。所以你所要做的就是
来自手册
\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyhead[RO,RE]{\thepage} %RO=right odd, RE=right even
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
请注意,有三种页面样式。
空:用于诸如标题页之类的页面。
plain:用于章节开始,包括列表的开始,例如 \tableofcontens 和 \listoffigures
fancy:适用于普通文本页面
除了 fancyhdr 之外,还有其他页面(例如 scrpage2)允许操作页面样式。
答案3
修改常规和特殊章节(例如目录)的页面样式很容易。章节通常会覆盖当前页面样式,将其设置为plain
。 fancyhdr
提供了一个命令\fancypagestyle
来重新定义其他页面样式,这样,您只需重新定义样式即可获得章节页面上所需的样式,plain
如下所示:
\fancypagestyle{plain}{\pagestyle{fancy}}
本文档的第 7 节对此进行了解释fancyhdr
。
答案4
章节页面默认使用页面样式 plain。包 fancyhdr 不会自动重新定义 plain。但如果您将页面样式替换fancy
为,fancyplain
则可以同时修改两种样式:
\documentclass{report}
\usepackage{blindtext}% only for dummy text
\usepackage{fancyhdr}
\pagestyle{fancyplain}% <- use fancyplain instead fancy
\fancyhf{}
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\begin{document}
\blinddocument
\end{document}
结果:
如果应该有不同的内容plain
并fancy
使用宏\fancyplain
:
\documentclass{report}
\usepackage{blindtext}% only for dummy text
\usepackage{fancyhdr}
\pagestyle{fancyplain}% <- use fancyplain instead fancy
\fancyhf{}
\fancyhead[L]{content for \fancyplain{plain}{fancy} pages}% <- added
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\begin{document}
\blinddocument
\end{document}
结果:
如果所有页面都应该有一个 head 规则,则删除 的重新定义\headrulewidth
并重新定义\plainheadrulewidth
:
\documentclass{report}
\usepackage{blindtext}% only for dummy text
\usepackage{fancyhdr}
\pagestyle{fancyplain}% <- use fancyplain instead fancy
\fancyhf{}
\fancyhead[L]{content for \fancyplain{plain}{fancy} pages}% <- added
\fancyhead[R]{\thepage}
%\renewcommand\headrulewidth{0pt}% default ist .4pt
\renewcommand{\plainheadrulewidth}{.4pt}% default is 0pt
\begin{document}
\blinddocument
\end{document}
结果: