ヘッダー・フッター・ページ番号

ページの上下に出る柱(ヘッダー)・脚(フッター)と、ページ番号の付け方をまとめます。まず LaTeX に最初から用意された 4 つの ページスタイルemptyplainheadingsmyheadings)を押さえ、次に細かく作り込める定番パッケージ **fancyhdr** を見ます。最後にページ番号の書式とリセットを行う \pagenumbering を扱います。

組み込みのページスタイル

ヘッダーとフッターの基本的な体裁は ページスタイル で決まります。\pagestyle{...} をプリアンブルに書くと、その時点以降のすべてのページに適用される宣言になります。そのページ 1 枚だけ別のスタイルにしたいときは、本文中で \thispagestyle{...} を使います。標準では次の 4 つが用意されています。

スタイル内容
emptyヘッダー・フッターとも空。ページ番号も出ない
plainヘッダーは空、フッター中央にページ番号のみ。articlereport の既定
headingsフッターは空。ヘッダーに節・章の見出しとページ番号(柱)。book の既定
myheadingsheadings と同じ配置だが、柱の内容を \markboth\markright で自分で指定

既定のスタイルはクラスによって違います。articlereportplain(下中央にページ番号)、bookheadings(柱つき)です。覚えておきたい例外として、\maketitle\part\chapter が置かれたページには、自動的に \thispagestyle{plain} が掛かります。そのため \pagestyle{empty} にしていても、章の始まりのページだけは下中央にページ番号が出ます。それも消したいなら、\chapter の直後に \thispagestyle{empty} を書きます。

headings の柱の中身もクラスで決まります。bookreport(両面)では、左ページに章タイトル、右ページに節タイトルが入ります。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] で指定します。最初に空にしておかないと、クラス由来の既定の柱が残ってしまうことがあります。

latex
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}                 % 6 つのスロットを全消去
\fancyhead[L]{文書のタイトル}  % ヘッダー左
\fancyhead[R]{\thepage}      % ヘッダー右にページ番号
\fancyfoot[C]{\today}       % フッター中央に日付

両面(twoside)の文書では、見開きで体裁をそろえるため、位置に 偶数ページ(E)・奇数ページ(O) を組み合わせます。[LE,RO] は「偶数ページでは左、奇数ページでは右」の意味で、外側(小口側)にページ番号を置く定番の指定です。EO を付けない [L] などは、両面でも両方のページに同じものを置きます。

ヘッダーと本文の間、フッターと本文の間に引かれる罫線の太さは、\headrulewidth\footrulewidth で決まります。既定値はヘッダー罫線が **0.4pt、フッター罫線が 0pt(罫線なし)** です。\renewcommand で太さを変えられ、0pt にすれば罫線を消せます。

latex
\renewcommand{\headrulewidth}{0.4pt}  % ヘッダー罫線(既定)
\renewcommand{\footrulewidth}{0pt}    % フッター罫線を消す(既定)

柱に章・節名を入れる(\leftmark / \rightmark)

柱に「現在の章・節の見出し」を流し込みたいときは、\leftmark\rightmark を使います。bookreport クラスでは、\leftmark現在の章(chapter)名\rightmark現在の節(section)名 を保持します。これらは章・節の命令が処理されるたびに自動で更新されるため、各ページに「いま読んでいる章・節」が表示できます。

注意したいのは、標準クラスではこれらの内容が すべて大文字に変換される ことです。元の大文字小文字のまま出したいときは、fancyhdr が用意する \nouppercase で囲みます。ただし \nouppercase は中の大文字化をすべて打ち消すため、たとえばローマ数字の柱などに影響することがある点には留意してください。

latex
% 左に章名(大文字化を解除)、右にページ番号
\fancyhead[L]{\nouppercase{\leftmark}}
\fancyhead[R]{\thepage}

「headheight が小さすぎる」警告

fancyhdr を使うと、Package fancyhdr Warning: \headheight is too small という警告が出ることがあります。これは、ヘッダーを入れる箱の高さ \headheight が、設定した内容(罫線や複数行の柱など)に対して足りないという意味です。ヘッダーが本文に近づきすぎたり食い込んだりする原因になります。

直し方は二通りで、どちらでも構いません。\setlength{\headheight}{...} で直接広げるか、geometry パッケージの headheight= オプションで指定します。後者は版面全体の計算と整合させてくれるので、geometry を併用しているなら geometry 側で指定するのが安全です。

latex
% どちらか一方でよい
\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}{...} でカウンタを直接設定します。

latex
\frontmatter % book クラスなら前付け(これも roman に切替)
\pagenumbering{roman}    % i, ii, iii … (カウンタも 1 に戻る)
% 目次・序文など
\mainmatter  % 本文
\pagenumbering{arabic}   % 1, 2, 3 … (再び 1 から)

実際の指定例

両面の文書で「外側にページ番号、内側に章・節名、ヘッダーに細い罫線」という、よくある体裁を fancyhdr で組む例です。\headheight の警告を避けるため、ヘッダーの高さも少し広げています。

document.tex
\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 スタイル自体を再定義します。