coffee break

WindowsでTeX環境の設定を頑張る人の備忘録 その他プログラミング言語系など

LaTeX ページ番号

LaTeXのデフォルトの機能だとページ番号はフッターの中央に置かれるか表示させないかしかできない(?)ので,ページ番号の位置を指定される様式に対応できなかったが,先日ページ番号の位置をいじれるうえに表示形式も変えられる素晴らしいパッケージを見つけたので残しておく.

必要なパッケージ

  • fancyhdr

どうやらTeX Liveもしくはw32texを使ってる場合デフォルトでインストールされているらしい。特にダウンロードとかする必要はない。(2017/8/1追記)

以下のURLからダウンロード
http://www.ctan.org/tex-archive/macros/latex/contrib/fancyhdr
ダウンロードしたら解凍して画像みたいにTeXのフォルダの中に置いておくだけでOK.
f:id:mildtech:20170529130703p:plain

使い方

\usepackage{fancyhdr}した後,プリアンブルに詳しいページ番号の表示設定を書く.
そのあとこの設定を使いたい章のところで\pagestyle{foot}と書く.(どう書くかはサンプルコード参照).

\fancypagestyle{foot}
{
\fancyhead{}
\fancyfoot{}
\fancyfoot[L]{chapter 1}
\fancyfoot[C]{///sample page///}
\fancyfoot[R]{p.\thepage }
\renewcommand\headrulewidth{0pt}
}
  • \fancypagestyle{スタイル名}{内容}

内容にヘッダーやフッターの設定を書く。これで決めた設定を使いたい場合は\pagestyle{使いたい設定のスタイル名}とする。

  • \fancyhead[表示位置]{表示内容}
  • \fancyfoot[表示位置]{表示内容}

headはヘッダー、footはフッターの設定をする。表示位置のところには,左に表示させるならL,中央ならC,右ならRのどれかを入れる.表示内容のところは自由に書ける.カギ括弧で囲わてれることに注意.ページ番号を参照したいしたい場合はコマンド\thepageを使う.
上の例では[L],[C],[R]全部設定しているが,どれか一つだけでもOK.

  • \renewcommand\headrulewidth{xpt}

これはヘッダーに引かれる線の設定をする.表示させたくなければx=0にすればいい.どうやらヘッダーの設定を書かなかったら勝手に線が引かれる設定らしいから,もし表示させたくなければこの行は必須.

サンプルコード

f:id:mildtech:20170606025450p:plain

\documentclass{article}

\usepackage{fancyhdr}

\fancypagestyle{foot}
{
\fancyhead{}
\fancyfoot{}
\fancyfoot[L]{chapter 1}
\fancyfoot[C]{///sample page///}
\fancyfoot[R]{p.\thepage }
\renewcommand\headrulewidth{0pt}
}

\begin{document}
\pagestyle{foot}

\end{document}

追加で,lastpageというパッケージを使うと下の画像のようにもできる.上の画像ではp.1となっていたところがp.1/1となって全体のページ数を参照できるようになっている.

サンプルコード

f:id:mildtech:20170606030515p:plain

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{lastpage}

\fancypagestyle{foot}
{
\fancyhead{}
\fancyfoot{}
\fancyfoot[L]{chapter 1}
\fancyfoot[C]{///sample page///}
\fancyfoot[R]{p.\thepage / \pageref{LastPage}}
\renewcommand\headrulewidth{0pt}
}

\begin{document}
\pagestyle{foot}
\end{document}
  • \pageref{LastPage}

こうするとpdfに変換する際に自動で総ページ数を参照して表示してくれるようになる.ちゃんとLastPageと大文字を含めて書くこと.