jsbookでもjbookでもページヘッダ(柱と呼ぶことが多いです)はページやテキスト領域(版面)の端に寄せて表示されます。柱は出版社によってページの真ん中にしたいとか、ページ番号(ノンブルと呼ぶことが多いです)を端から少し内側にしたいとか、いろいろこだわりがあるようです。これって、出版社のこだわり、というか担当編集者の好みかもしれませんが。とにかくデフォルトじゃすまない項目の一つです。
デフォルトの柱はjbook.cls、jsbook.clsとも、柱とノンブル(ページ番号)が両端に寄るようになっています。
この柱を真ん中に表示することにしました。jsbook.clsはノンブルも直しています。元はボールドの数字ですがイタリックで出力しています。
まずは、jbook.clsから。
LaTeXの各ページにはそれぞれのスタイルが割り当てられていて、普通のページはheadingsというスタイルに定義されています。この中の奇数・偶数のページヘッダ定義を直してやれば目的を達するはずです。jbook.clsの元の定義を眺めてみます。
\if@twosideの中にあるところ
\def\@evenhead{\thepage\hfil\leftmark}% \def\@oddhead{{\rightmark}\hfil\thepage}%
偶数ページは\def\@evenhead、奇数ページは\def\@oddheadが担当しています。\@evenheadと\@oddheadは、版面(textwidth)の幅を持つので、ページ番号と柱の真ん中に\hfilを入れて、それぞれを両端に配置させています。
この部分を修正することにします。幅ゼロのボックスにページ番号を入れて、版面の幅のボックスを作って、その中央に柱を置く、という方法で作りました。奇数ページも同じ考え方で作ります。
\def\@evenhead{\hbox to \z@{% 幅ゼロのボックスを作って \thepage\hss}% ページ番号を入れる \hbox to \textwidth{% 版面のボックスを作って \hss\leftmark\hss}}% 真ん中に柱を入れる \def\@oddhead{\hbox to \textwidth{\hss\rightmark\hss}% \hbox to \z@{\hss\thepage}}%
jsbook.clsも同じところだろうと思って見てみると
\def\@evenhead{% \if@mparswitch \hss \fi \underline{\hbox to \fullwidth{\autoxspacing \textbf{\thepage}\hfil\leftmark}}% \if@mparswitch\else \hss \fi}%
のような定義になっています。\fullwidthって何でしょうか。LaTeXにこんな定義があったのかな?とりあえず、ファイル内を検索するとjsbook.clsの中で定義されている長さで、ページのテキスト領域+余白を合わせたもののようです。奇数ページは右に余白を置き、偶数ページは左に余白置く、というためにあるようです。(jsbook.clsを仕事で使ったことがないので知りませんでした。ほんとはもともとLaTeXにあるのかな。)
jsbook.clsは\fullwidthにあたる幅全体に下線を引いて、そこにページ番号と柱を出力していますが、同じ考えで進めました。\underlineの中で、\fullwidth幅の中にノンブルと柱を配置すればいいわけです。
\def\@evenhead{% \if@mparswitch \hss \fi \underline{\hbox to \z@{\textit{\thepage}\hss}% \hbox to \fullwidth{\hss\autoxspacing\leftmark\hss}}% \if@mparswitch\else \hss \fi}% \def\@oddhead{\underline{\hbox to \fullwidth{\hss {\autoxspacing\if@twoside\rightmark\else\leftmark\fi}\hss}% \hbox to \z@{\hss\textit{\thepage}}}\hss}%
ついでに、ボールドになっているノンブルをイタリックにしたのは\textit{\thepage}の部分です。\smallにすれば、ノンブルだけ小さな文字で出力することもできます。
ページ番号の位置もここで変更できます。版面から内側に入った体裁もよく見かけるので、1文字内側に入るものを作ってみました。jbook.clsの例です。
\def\@evenhead{\hbox to \z@{\hskip1zw\thepage\hss}% \hbox to \textwidth{\hss\leftmark\hss}}% \def\@oddhead{\hbox to \textwidth{\hss\rightmark\hss}% \hbox to \z@{\hss\thepage\hskip1zw}}%
\hskip1zwを使って、ページ番号を中央に向けて押しています。
コメント