latex 页眉页脚设置

资源

本文介绍了如何使用 fancyhdr 宏包来设定文章的页眉页脚。本文以 \LoadClass[a4paper,twoside,openright]{ctexrep} 模板为例( A4 纸张,双面排版,章节在奇数页开始),介绍了页眉页脚的设置过程。在本例中共设计了三种样式的页眉页脚,分别应用到正文之前、正文和附录中。

1 LaTeX 预定义页面风格介绍

在介绍 fancyhdr 宏包的使用之前,我们先了解一下 LaTeX 预定义的页面风格(page style)。Latex 预定义了以下几种页眉页脚的页面风格:

  • empty 没有页眉页脚;
  • plain 没有页眉,页脚是居中的页码;
  • heading 没有页脚,页眉是章节名称的页码;
  • myheading 没有页脚,页眉是页码和用户自定义的内容。

可以使用 \pagestyle{<风格>} 设置整体页面风格,也可以用 \thispagestyle{<风格>} 单独设置当前页的风格。book 类默认使用 heading 风格,report 和 article 默认使用 plain 风格,中文的几个 ctex 文档类则都默认使用 heading 风格。

LaTex 已经对一些必要的地方自动设置好了页面风格。如在标题页(包括手工或自动由 \maketitle 生成的 titlepage 环境),会使用 empty 风格禁用所有页眉页脚;而在不单独成页的 \maketitle ,单独成页的 \part,以及 \chapter 命令所在的一页,则使用 plain 风格。

上面内容引自刘海洋——《LaTeX入门》。

2 基本应用

fancyhdr 宏包提供了新的页面风格 fancy ,我们可以通过 fancy 风格来设置我们的页眉页脚。页眉页脚的设置一般都放在导言区或文档类模板中。本文的例子中所有的代码都是放置到自定义的文档类模板中,因此使用的包加载命令为 \RequirePackage ,但效果和 \usepackage 是一样的。首先我们先使用 \RequirePackage{fancyhdr}\usepackage{fancyhdr} 命令引入 fancyhdr 宏包。

fancyhdr 将页面布局分成如下几个部分:

页面布局

可以看到由页面页脚左中右共6个部分组成,考虑到双面文档的奇数页和偶数页则共有12个部分。另外还有2个装饰性的分割线。下面是一个常用的使用示例:

\pagestyle{fancy}
\fancypagestyle{preContent}{
    \fancyhead{}
    \renewcommand\headrulewidth{0pt}
    \fancyfoot[C]{\thepage}
}

fancyhdr 提供了多个命令都可以达到相同的设置效果。上面使用的是较为方便和常用的命令。首先设定了页面风格为 fancy,然后定义了一种名为 preContent 的页面风格:

  • \fancyhead{} 由于里面没有任何参数,所以这条命令用来清空所有的页眉设置。
  • \renewcommand\headrulewidth{0pt} 取消页眉中的装饰分割线。
  • \fancyfoot[C]{\thepage} 在页脚居中位置添加页码。

定义好 pagestyle 之后,我们就可以在任何需要的位置使用 preContent 风格了,如下代码表示使用 preContent 风格并使用罗马数字设置页码。

\pagestyle{preContent}
\pagenumbering{Roman}

这也是常用在正文之前的页面风格。

2 命令介绍及高级应用

2.1 命令介绍

前面通过一个简单的序言页面风格设置我们应该已经大体的了解到了 fancyhdr 宏包的使用。下面对其中常用的命令和参数进行介绍。

  • 前面我们用 \fancyhead{} 命令清除页眉设置,如果想清除页脚设置可以使用 \fancyfoot{} 命令,如果想同时清除页眉页脚设置可以使用 \fancyhf{}。

  • 前面我们用 \renewcommand\headrulewidth{0pt} 来清除页眉中的分割线,如果想清除页脚中的分割线可以使用 \renewcommand\footrulewidth{0pt}

  • 前面设置页脚时,使用到了 C 可选参数,完整的可选参数如下:

参数 意义 分组
E 偶数页 1
O 奇数页 1
L 左区域 2
C 中间区域 2
R 右区域 2
H 页眉 3
F 页脚 3

这些参数应用在 \fancyhead{},\fancyfoot{} 和 \fancyhf{} 命令中。其中第三组参数只应用在 \fancyhf{} 命令中。通常我们只用 \fancyhf{} 命令来清空页眉页脚,而真正的设置都是使用带前两组参数的 \fancyhead{}\fancyfoot{} 来完成。

下面的代码用来设置正文的页面样式:

\fancypagestyle{mainFancy}{
    \fancyhf{}
    \renewcommand\headrulewidth{.5pt}       % 页眉横线
    \renewcommand\footrulewidth{0pt}
    
    \fancyhead[OC]{\fzkai{\leftmark}}       % 页眉章标题
    \fancyhead[EC]{\fzkai{\@title}}         % 页眉文章题目
    \fancyhead[OR,EL]{\thepage}                 % 页眉编号
    \fancyfoot[r]{\thumb} % 将拇指放到没有被使用的页眉或页脚处
}

可以看到不同组的参数在使用过程中可以进行组合,如 OR 表示奇数页右区域,EL 表示偶数页左区域。而 \fancyhead[OR,EL]{\thepage} 表示页眉的奇数页右侧和偶数页左侧放置页码。

2.2 附加说明

最后一行在页脚的右侧放置了一个拇指索引,这个拇指索引的定义参考了 《LaTeX入门》的拇指索引 的内容。拇指的定义应该放到上面的代码前面,定义如下:

\RequirePackage{fancyhdr}
\RequirePackage{zhnumber}
                
\RequirePackage{titlesec, titletoc}
\RequirePackage{tikz,pgf}
\usetikzlibrary{shapes,calc}
% 参考:http://www.latexstudio.net/archives/8967.html
% 拇指
\newcommand\thumb{%
    \if@mainmatter
    \begingroup
    \catcode`\$=3
    \tikzpicture[remember picture,overlay] % thumb index
    \ifodd\value{page}
    \node[fill=gray,text=black,anchor=north east,xshift=2mm,
    yshift=-22mm-\arabic{chapter}*20mm,
    shape=semicircle,shape border rotate=90,
    minimum height=10mm,minimum width=5mm,
    font=\normalfont\sffamily\bfseries\Huge]
    at (current page.north east)
    {\llap{\arabic{chapter}\hspace{1mm}}};
    \else
    \node[fill=gray,text=black,anchor=north west,xshift=-2mm,
    yshift=-22mm-\arabic{chapter}*20mm,
    shape=semicircle,shape border rotate=270,
    minimum height=10mm,minimum width=5mm,
    font=\normalfont\sffamily\bfseries\Huge]
    at (current page.north west)
    {\rlap{\hspace{1mm}\arabic{chapter}}};
    \fi
    \endtikzpicture
    \endgroup
    \fi}

这个拇指会自动的在非装订侧产生(奇数页右侧,偶数页左侧),并且每一章会依次向下错开。就像我们可以在字典的侧面定位到不同首字母一样,通过这个拇指我们可以从侧面定位到指定的章节。效果如下:

拇指示例

事实上这个拇指我们可以放到任何未被使用的页眉页脚区域,效果是一样的。这里放到页脚的右侧是因为这个区域没有被使用。

这个拇指的设置不属于本文所讨论的内容,因此不会使用也没有关系,可以直接跳过这个部分。

2.3 文档中页面风格切换

最后我们再定义一个附录的页眉页脚样式如下:

\fancypagestyle{appendixFancy}{
    \fancyhf{}
    \renewcommand\headrulewidth{.5pt}
    \renewcommand\footrulewidth{0pt}
    \fancyhead[OC]{\fzkai{\leftmark}}       % 页眉章标题
    \fancyhead[EC]{\fzkai{\@title}}         % 页眉文章题目
    \fancyhead[OR,EL]{\thepage}                 % 页眉编号
}

附录的页眉页脚样式和正文中的基本一样,只是去掉了页面中的拇指。这是因为我们在附录章节一般会使用 \appendix 命令来清除章节编号,如果这时候使用拇指的话会出现章节为0的拇指,这并不符合我们的需求。

在文档中进行风格切换依然使用的是 \pagestyle{} 命令,如文档的开始使用 \pagestyle{preContent} 设置前言的页面风格,正文之前使用 \pagestyle{mainFancy} 设置正文页面风格,附录之前使用 \pagestyle{appendixFancy} 设置附录的页面风格。一般情况下我们会同时修改附录的标题样式,所以更常用的做法是将 \pagestyle{appendixFancy} 和标题样式的设置组合到一个新的命令中,如下所示:

%% Appendix Chapter 标题及页眉页脚样式
\newcommand{\AppendixChapter}{
    \pagestyle{appendixFancy}   % 附录页眉页脚格式
    \titleformat{\chapter}
    [display]
    {\CJKfamily{fzkai}\Large \filcenter}
    {}
    {1ex}
    {\Huge}
    [{\titlerule[2pt]}]
}

这样在正文中使用 \AppendixChapter 命令就可以同时切换页面风格和标题样式了,关于 \titleformat{} 命令设置标题样式可以参考 latex 标题、段落及行距

3 附加说明

  • 前面第一节我们提到了,在单独成页的 chapter 这一页。会自动应用 plain 风格。因此如果希望改变章首页的样式,则应该定义 plain 样式。这部分内容请参考 fancyfoot different on first page of new chapter 。如:
\fancypagestyle{plain}{
    \fancyhf{}
    \fancyfoot[C]{\sffamily\thepage}
    \renewcommand{\headrulewidth}{0pt}
}
\documentclass{book}
\usepackage[a6paper]{geometry}
\usepackage{fancyhdr}
\usepackage{lipsum}
\pagestyle{fancy}

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\arabic{section}.\ #1}}

\lhead[\thepage]{\leftmark} 
\rhead[\nouppercase{\rightmark}]{\thepage}

\begin{document}

\chapter{Test chapter}
\section{Test section}
\lipsum[1-4]

\end{document}

效果如下:

页眉示例

可以看到图中页眉右侧显示的是 1.Test section 而不是 1.1 Test section。

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Word 2003长篇文档排版技巧(一) 重点总结为两点: 1. 制作长文档前,先要规划好各种设置,尤其是样式设置...
    MrSunbeam阅读 1,984评论 0 12
  • 2008年我初二,奶奶去世,我父亲作为长子,那几天得招待来的亲戚,来家里所有的大大小小杂事都得问我爸,像请回答19...
    戊戌年不顺利的掉头小子阅读 233评论 0 0
  • 浑身尘垢冒骄阳,背井离亲走四方。 残夜工棚归梦远,晓风明月短亭凉。 (新韵) 书于20180825中元节
    晴鹤1阅读 302评论 2 14
  • 介绍:用scikit-learn做机器学习 问题定义: 一个学习问题就是用利用一组样本数据去预测未知的事物。如果每...
    KayZhou阅读 622评论 1 1
  • 马云:为什么分享经济可以给人们带来巨大的财富!你还在等吗? 马云:没有钱、没有经验、没有社交关系,这些并不可怕。没...
    丹阳雨阅读 196评论 0 0