TeXの記憶(18) —最後の\sectionを柱にする
よくある話題ですが、同じページに複数の\sectionがあったときに
どちらが柱(ヘッダ)に表示されるかという話です。
TeXのデフォルトはページの最初に登場した\sectionを採用しますが、
日本の書籍の場合はページの最後に登場した\sectionをヘッダに表示するのが一般的なようです。
最初の\sectionが柱に表示されている例
最後の\sectionが柱に表示されている例
(柱は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をヘッダに出すのはどうすればいいんでしょうか。そんな需要はないからという理由で今は考えないことにします。
コメント