TeXの柱とノンブルの設定
jsbookクラスをつかった場合の柱の設定方法を忘れないためにメモを残しておきます.
最終的な出力目標は
偶数頁のヘッダ左側に章タイトル,奇数頁のヘッダ右側にセクションタイトル
偶数頁のフッタ左側に頁番号,奇数頁のフッタ右側に頁番号
であると仮定します.これをデザインAと呼ぶことにしましょう.
\chapter
コマンドはデフォルト設定で開始1頁目に\thispagestyle{plain}
を実行するので,章のはじめだけ設定したスタイルが表示されないことが
しばしばあります.まずはこれを制御します.
直感的に分かりやすいやり方は,\chapter
コマンドのすぐ後に自分で\thispagestyle{empty}
や\thispagestyle{fancy}
を使って,\thispagestyle{plain}
を上書きしてやることです.
しかしこの方法だと全ての\chapter
に同じ命令を書き込む必要があるのであまりスマートではありません.
\newcommand
でコマンドを定義すれば多少はラクになりますが,章が多いとはやはり煩雑です.
一番簡単な方法は pLaTeX2e 新ドキュメントクラス の指示通りにプリアンブルに
\makeatletter \renewcommand{\chapter}{% \if@openright\cleardoublepage\else\clearpage\fi \global\@topnum\z@ \secdef\@chapter\@schapter} \makeatother
と書く方法です.この\renewcommand
によって,章開始1頁目は自分で設定した柱のスタイルに一致します.
どうしてこれでうまくいくのか,実はよくわかっていません.おそらく,
jsbook.cls
の\chapter
の定義にある\plainifnotempty
の削除により,
\thispagestyle{plain}
を実行しないのではないかと推測します.\plainifnotempty
というコマンドは全体のpagestyle
がempty
でないならplain
にせよ,という命令です.
ですからこの命令が有効だと,empty
以外のpagestyle
を使うと,無視されるという現象が生じるのでしょう.
次に,
デザインAを実現するには\thispagestyle{fancy}
の中身を設定する必要があるので,
これを調整します.例としてはこんな感じです.
\usepackage{fancyhdr} \pagestyle{fancy} \fancyhead{} % clear all header fields \renewcommand{\chaptermark}[1]{\markboth{第\ \thechapter\ 章\,\, #1}{}} \fancyhead[RO]{{\footnotesize \rightmark}} \fancyhead[LE]{{\footnotesize \leftmark}} \renewcommand{\headrulewidth}{0pt} %ヘッダの罫線を消す \fancyfoot{} % clear all footer fields \fancyfoot[LE,RO]{{\footnotesize \thepage}}%頁番号の表示を偶数頁と奇数頁に分けて指定. \cfoot{}
\fancyhead
とfancyfoot
のオプションは
R: 右側 L: 左側 O: 奇数頁 E: 偶数頁
を組み合わせて指定します.例えば
\fancyfoot[LE,RO]{{\footnotesize \thepage}}
は,「LEが偶数頁のフッターの左側」「ROが奇数頁のフッターの右側」に頁数を示す,という指定です.
もし\frontmatter
に\chapter
を使っている場合は,
\renewcommand{\chaptermark}[1]{\markboth{第\ \thechapter\ 章\,\, #1}{}}
の部分を
\renewcommand{\chaptermark}[1]{#1}{}}
などに改めて定義してください.こうすることで柱を「第0章 イントロダクション」ではなく「イントロダクション」という見出しに変更できます.
一方で\mainmatter
は「第1章 先行研究のレビュー」のように,{\markboth{第\ \thechapter\ 章\,\, #1}
を使います.
要するにポイントは
\renewcommand{\chapter}
で章開始頁を修正\frontmatter
用に\pagestyle
を定義\mainmatter
用に\pagestyle
を定義
です.\frontmatter
と\mainmatter
の柱が同じなら定義は1種類でOKです.