TeXの記憶(18) —最後の\sectionを柱にする

TeXの記憶(18) —最後の\sectionを柱にする

よくある話題ですが、同じページに複数の\sectionがあったときに
どちらが柱(ヘッダ)に表示されるかという話です。

TeXのデフォルトはページの最初に登場した\sectionを採用しますが、
日本の書籍の場合はページの最後に登場した\sectionをヘッダに表示するのが一般的なようです。

最初の\sectionが柱に表示されている例

img0818-1

最後の\sectionが柱に表示されている例

img0818-2

(柱はTeXの記憶(3)—柱を真ん中に置きたいを使って中央に表示しています。)

柱の内容を保持しているのは、クラスファイルの中にある

\leftmark
\rightmark

の2つの定義です。
定義はjbook.clsの中にはなく、もっと元のlatexの定義の中にあります。具体的には「ltpage.dtx」で定義があるのでこれを見てみると

\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}

となっています。ページの中の最初の\sectionを見出しに使うのは\firstmarkによるものなので、\leftmarkが使っている\botmarkに替えれば良さそうです。

jbook.clsの\if@twosideの後の\def\ps@headingの手前あたりに
\rightmarkを再定義すれば完成です。

\if@twoside
  \def\rightmark{\expandafter\@rightmark\botmark{}{}}
  \def\ps@headings{.....

ところで、真ん中(というより任意の位置の)\sectionをヘッダに出すのはどうすればいいんでしょうか。そんな需要はないからという理由で今は考えないことにします。

コメント