TeXの記憶(52) — \ps@headingsの中でヘッダを変更する

うまい言葉が見つからなかったのでこのタイトルになりましたが、クラスファイルの中のヘッダを設定している部分を修正してみた、という例です。jsbook.clsを元にしました。

0923

ヘッダは書籍の場合には柱と呼ばれています。この例ならは「柱は小口(本の端のほう)に出す」という感じで指定されます。

ほんとうは、脇に章の見出しを出すので上の見出しが必要になることはないでしょう。サンプルなのでそのままにしました。

\ps@headingが有効なのはクラスファイルの終わりのほうで

\pagestyle{headings}

と指定されているからで、それに合わせて書き換えるpagestyleも変わります。

クラスファイルには\def\ps@myheadingsという定義も入っています。ほんとうは\ps@myheadingを修正して

\pagestyle{myheadings}

として使うべきなのかもしれません。

出力する柱は文字も含めて画像ファイルにしました。自動的に文字を入れることもできますが、この例では各章の画像ファイルを読み込む設定にしています。実際の書籍でもこの方法で作成しました。

変更は3行挿入しているだけです。幅・高さがゼロのボックスを使って他に影響がでないようにしています。

\RequirePackage{graphicx}
...
  \def\@evenhead{%
    \hbox to \z@{\hskip-57mm  % 追加
      \vbox to \z@{\vskip20mm % 追加
        \includegraphics{chap\@arabic\c@chapter.eps}\vss}\hss}% % 追加
    \if@mparswitch \hss \fi
    \underline{\hbox to \fullwidth{\autoxspacing
        \textbf{\thepage}\hfil\leftmark}}%
    \if@mparswitch\else \hss \fi}%

追加3行目の

chap\@arabic\c@chapter.eps

の部分では、章のカウンタに合わせてchap1.eps、chap2.eps、…のファイルが読み込まれます。

\ps@headingの変更はプリアンブルでは有効にならないので、クラスファイルを直接書き換えています。クラスファイルの中で\includegraphicsを使うためには、前のほうでgraphicxパッケージをパッケージを読み込む必要があります。

章の柱をこのようにしたら、とうぜん節の見出しも同様になるでしょう。その部分は

\def\@evenhead

に追加することになりますが、節の数だけ画像ファイルを用意するのは手間がかかりました(一度だけ経験しました)。

コメント