この記事では,LaTeXのドキュメントクラス(jsreport
など)において全ページ(chapterが始まる見出しページ等を含む)のヘッダやフッタを統一する方法を示します.
LaTeXでファイルを生成する際,ヘッダやフッタを挿入したい場合があります(実際にはいったんdviファイルが作られ,そこからpdfなどのファイルに変換されますが,仕組みのお話はここではしません).文書クラス(jsreport
やbook
など)にはそれぞれ,デフォルトのヘッダやフッタがあります.それぞれの文書クラスで定義されたデフォルトの物を使いたくないことがあるかもしれません.
LaTeXでのヘッダやフッタの編集方法
ヘッダを編集するにはページスタイルを変更することで可能です.プリアンブルで\pagestyle{plain}
のように指定します.主に次のものがあります.
- plain
- empty
- headings
- myheadings
- fancy (利用するには
fancyhdr
パッケージを読み込む必要があります)
例えばfancy
の場合,次のようにプリアンブルに置くことでページスタイルを決めます.詳しくは Page layout in LaTeX [1] を参照してください.
\documentclass[a4paper]{jsreport}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{ヘッダ左} %ヘッダ左
\chead{ヘッダ中央} %ヘッダ中央
\rhead{ヘッダ右} %ヘッダ右.コンパイルした日付を表示
\lfoot{フッタ左} %フッタ左
\cfoot{\thepage} %フッタ中央.ページ番号を表示
\rfoot{フッタ右} %フッタ右
% \renewcommand{\headrulewidth}{} %ヘッダの罫線
% \renewcommand{\footrulewidth}{} %フッタの罫線
\begin{document}
.
.
\end{document}
このようにしてページスタイルを決めて,ヘッダやフッタを編集します.上記の設定の場合は,以下の画像のようになります.
LaTeXやupLaTeXでの見出しページ
\chapter
や\section
といったコマンドは見出しと呼ばれます.
デフォルトでは次のようになっています[2]:
\renewcommand{\chapter}{%
\if@openleft\cleardoublepage\else
\if@openright\cleardoublepage\else\clearpage\fi\fi
\plainifnotempty %元: \thispagestyle{plain}
\global\@topnum\z@
\if@english \@afterindentfalse \else \@afterindenttrue \fi
\secdef
{\@omit@numberfalse\@chapter}%
{\@omit@numbertrue\@schapter}}
\pagestyle
がempty
に指定されていない場合は,そのページのページスタイルがplain
になります.章扉のページはページ番号がヘッダ右側に記載され,プリアンブルでヘッダやフッタを編集しても効果がありません.なお,jsreport
やjsbook
などの\chapter
が利用可能な文書クラスでは,章扉のページは右側のページに配置されます.
\chapter
を“再再定義”してしまえ
\chapter
のすぐうしろに\thispagestyle{}
を用いることも可能です.ただし,この記事では別の方法を示します.
ヘッダやフッタの様式をすべてのページで統一したいけれど,これができない原因は,前章で示した\chapter
の定義にあります.LaTeXには,定義されたコマンドを再定義し,再定義されたコマンドを使うことができます.プリアンブルで,次のように再定義しておきます.\plainifnotempty
がある行を消すだけです.以下の内容を,プリアンブルに記述します.なお,LaTeXに対する理解が不十分な場合は,\def
を用いないようにしましょう.「LaTeXが壊れた!」事態になりかねません.
\makeatletter
\renewcommand{\chapter}{%
\if@openleft\cleardoublepage\else
\if@openright\cleardoublepage\else\clearpage\fi\fi
%\plainifnotempty %元: \thispagestyle{plain}
\global\@topnum\z@
\if@english \@afterindentfalse \else \@afterindenttrue \fi
\secdef
{\@omit@numberfalse\@chapter}%
{\@omit@numbertrue\@schapter}}
\makeatother
このように再定義することでプリアンブルで定めたヘッダやフッタがそれぞれの章扉ページに記述されます.

Reference
[1] Piet van Oostrum, Page layout in LATEX
[2] 奥村晴彦, pLATEX2ε 新ドキュメントクラス
補足
- これらのマニュアルは,コマンドプロンプトやターミナルでそれぞれ次のように入力すると,マニュアルが開きます:
$ texdoc fancyhdr
$ texdoc jsclasses
- ここで紹介した方法を実際に用いる場合は自己の責任のもとで行うよう,お願します.