ページの上下に出る柱(ヘッダー)・脚(フッター)と、ページ番号の付け方をまとめます。まず LaTeX に最初から用意された 4 つの ページスタイル(empty・plain・headings・myheadings)を押さえ、次に細かく作り込める定番パッケージ **fancyhdr** を見ます。最後にページ番号の書式とリセットを行う \pagenumbering を扱います。
組み込みのページスタイル
ヘッダーとフッターの基本的な体裁は ページスタイル で決まります。\pagestyle{...} をプリアンブルに書くと、その時点以降のすべてのページに適用される宣言になります。そのページ 1 枚だけ別のスタイルにしたいときは、本文中で \thispagestyle{...} を使います。標準では次の 4 つが用意されています。
| スタイル | 内容 |
|---|---|
empty | ヘッダー・フッターとも空。ページ番号も出ない |
plain | ヘッダーは空、フッター中央にページ番号のみ。article/report の既定 |
headings | フッターは空。ヘッダーに節・章の見出しとページ番号(柱)。book の既定 |
myheadings | headings と同じ配置だが、柱の内容を \markboth/\markright で自分で指定 |
既定のスタイルはクラスによって違います。article と report は plain(下中央にページ番号)、book は headings(柱つき)です。覚えておきたい例外として、\maketitle・\part・\chapter が置かれたページには、自動的に \thispagestyle{plain} が掛かります。そのため \pagestyle{empty} にしていても、章の始まりのページだけは下中央にページ番号が出ます。それも消したいなら、\chapter の直後に \thispagestyle{empty} を書きます。
headings の柱の中身もクラスで決まります。book/report(両面)では、左ページに章タイトル、右ページに節タイトルが入ります。article(片面)では各ページに節タイトルとページ番号が入ります。myheadings を選ぶと、この柱の文字列を自分で \markboth{左ページ用}{右ページ用}(両面用)や \markright{右ページ用} で与えられます。
これらの組み込みスタイルは手軽ですが、「左に文書名・右にページ番号」のような自由なレイアウトはできません。そこで使うのが次の fancyhdr です。
fancyhdr パッケージ
fancyhdr は、ヘッダー・フッターを自在に組み立てるための定番パッケージです(作者は Piet van Oostrum)。パッケージを読み込み、\pagestyle{fancy} を宣言すると、ヘッダーとフッターそれぞれに 左(L)・中央(C)・右(R)の 3 か所、合わせて 6 つのスロット が使えるようになります。
使い方の定石は、まず \fancyhf{} で 6 スロットをいったん全消去し、必要な場所だけを設定することです。ヘッダーは \fancyhead[L]{...}/[C]/[R]、フッターは \fancyfoot[L]{...}/[C]/[R] で指定します。最初に空にしておかないと、クラス由来の既定の柱が残ってしまうことがあります。
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % 6 つのスロットを全消去
\fancyhead[L]{文書のタイトル} % ヘッダー左
\fancyhead[R]{\thepage} % ヘッダー右にページ番号
\fancyfoot[C]{\today} % フッター中央に日付両面(twoside)の文書では、見開きで体裁をそろえるため、位置に 偶数ページ(E)・奇数ページ(O) を組み合わせます。[LE,RO] は「偶数ページでは左、奇数ページでは右」の意味で、外側(小口側)にページ番号を置く定番の指定です。E/O を付けない [L] などは、両面でも両方のページに同じものを置きます。
ヘッダーと本文の間、フッターと本文の間に引かれる罫線の太さは、\headrulewidth と \footrulewidth で決まります。既定値はヘッダー罫線が **0.4pt、フッター罫線が 0pt(罫線なし)** です。\renewcommand で太さを変えられ、0pt にすれば罫線を消せます。
\renewcommand{\headrulewidth}{0.4pt} % ヘッダー罫線(既定)
\renewcommand{\footrulewidth}{0pt} % フッター罫線を消す(既定)柱に章・節名を入れる(\leftmark / \rightmark)
柱に「現在の章・節の見出し」を流し込みたいときは、\leftmark と \rightmark を使います。book/report クラスでは、\leftmark が 現在の章(chapter)名、\rightmark が 現在の節(section)名 を保持します。これらは章・節の命令が処理されるたびに自動で更新されるため、各ページに「いま読んでいる章・節」が表示できます。
注意したいのは、標準クラスではこれらの内容が すべて大文字に変換される ことです。元の大文字小文字のまま出したいときは、fancyhdr が用意する \nouppercase で囲みます。ただし \nouppercase は中の大文字化をすべて打ち消すため、たとえばローマ数字の柱などに影響することがある点には留意してください。
% 左に章名(大文字化を解除)、右にページ番号
\fancyhead[L]{\nouppercase{\leftmark}}
\fancyhead[R]{\thepage}「headheight が小さすぎる」警告
fancyhdr を使うと、Package fancyhdr Warning: \headheight is too small という警告が出ることがあります。これは、ヘッダーを入れる箱の高さ \headheight が、設定した内容(罫線や複数行の柱など)に対して足りないという意味です。ヘッダーが本文に近づきすぎたり食い込んだりする原因になります。
直し方は二通りで、どちらでも構いません。\setlength{\headheight}{...} で直接広げるか、geometry パッケージの headheight= オプションで指定します。後者は版面全体の計算と整合させてくれるので、geometry を併用しているなら geometry 側で指定するのが安全です。
% どちらか一方でよい
\setlength{\headheight}{15pt} % 直接広げる
% または geometry 側で
\usepackage[headheight=15pt]{geometry}ページ番号の書式(\pagenumbering)
ページ番号の 書式 は \pagenumbering{...} で切り替えます。引数に取れる主な書式は次の通りです。既定はアラビア数字(arabic)で、1 から始まります。
| 引数 | 出力 |
|---|---|
arabic | アラビア数字:1, 2, 3 …(既定) |
roman | 小文字のローマ数字:i, ii, iii … |
Roman | 大文字のローマ数字:I, II, III … |
alph | 小文字の英字:a, b, c …(26 ページまで) |
Alph | 大文字の英字:A, B, C …(26 ページまで) |
大切なのは、\pagenumbering は書式を変えると 同時にページカウンタを 1 にリセットする ことです。この性質を使い、序文(前付け)を小文字ローマ数字で i から始め、本文の最初で \pagenumbering{arabic} に切り替えて 1 から数え直す、というのが書籍での定番です。現在のページ番号そのものは \thepage で取り出せ、番号を任意の値にしたいときは \setcounter{page}{...} でカウンタを直接設定します。
\frontmatter % book クラスなら前付け(これも roman に切替)
\pagenumbering{roman} % i, ii, iii … (カウンタも 1 に戻る)
% 目次・序文など
\mainmatter % 本文
\pagenumbering{arabic} % 1, 2, 3 … (再び 1 から)実際の指定例
両面の文書で「外側にページ番号、内側に章・節名、ヘッダーに細い罫線」という、よくある体裁を fancyhdr で組む例です。\headheight の警告を避けるため、ヘッダーの高さも少し広げています。
\documentclass[twoside]{book}
\usepackage[headheight=15pt]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % まず全消去
\fancyhead[LE,RO]{\thepage} % 外側にページ番号
\fancyhead[RE]{\nouppercase{\leftmark}} % 偶数ページ右=章名
\fancyhead[LO]{\nouppercase{\rightmark}} % 奇数ページ左=節名
\renewcommand{\headrulewidth}{0.4pt} % ヘッダー罫線
\renewcommand{\footrulewidth}{0pt} % フッター罫線なし
\begin{document}
\chapter{はじめに}
\section{背景}
本文がここに入ります。柱に章・節名とページ番号が出ます。
\end{document}この例では、章の始まりのページ(\chapter のあるページ)は前述のとおり自動で plain になるため、そのページだけは柱が出ず、下中央にページ番号が出ます。これも fancy の体裁にそろえたいときは fancyhdr の \fancypagestyle{plain}{...} で plain スタイル自体を再定義します。