Re: ページ番号を oldstylenums にする方法

名前: しっぽ愛好家
日時: 2002-12-06 22:37:44
IPアドレス: 210.230.19.*

>>13653 まず,ページスタイル(の定義)について手短に復習(?)します. <style> ページスタイル(<style> は文字列)を定義する,ということは \ps@<style> を定義する,ということです. そして,\ps@<style> が定義されていれば,\pagestyle{<style>} として そのページスタイルを用いることができます. %%% \mainmatter/\frontmatter/\backmatter はページスタイルを設定しません. %%% したがって,必要があれば,\mainmatter などを用いた後で %%% (\pagestyle を用いて)ページスタイルを変更します. そして,ページスタイル <style> を定義する,すなわち \ps@<style> を 定義する,という場合には, \ps@<style> の中で(原則として)少なくとも 次の 4 個のものを定義します. ・\@oddhead: 奇数ページのヘッダです. ``oneside'' 指定時には偶数ページのヘッダとしても用いられます. ・\@evenhead: ``twoside'' 指定時の偶数ページのヘッダです. ・\@oddfoot: 奇数ページのフッタです. ``oneside'' 指定時には偶数ページのフッタとしても用いられます. ・\@evenfoot: ``twoside'' 指定時の偶数ページのフッタです. さらに,必要に応じて \chaptermark(\chapter の見出しを柱に載せる処理を 行うマクロ),\sectionmark(\section の見出しを柱に載せる処理を行うマクロ) なども定義します. %%% このあたりは,既存のクラスファイルの中での各種ページスタイルの定義を %%% 調べてみた方がわかりやすいでしょう. さて,今回の場合,柱部分でのページ番号を ``oldstyle'' で出力するのですから, \@oddhead などに含まれている \thepage を \oldstylenums{\arabic{page}} に 変更した(*)ページスタイルを用意し,それを用いればよい,ということになります. %%% (*) ``LaTeX のカウンタ'' について学ぶと, %%% \oldstylenums{\number\c@page} としても同じことだとわかります. 例えば,ファイル jbook.cls での(``twoside'' 指定時の) \ps@headings の定義は次のようになっています. %%% コメントは私が補いました. \def\ps@headings{% (1) \let\ps@jpl@in\ps@headnombre%%% (2) \let\@oddfoot\@empty\let\@evenfoot\@empty \def\@evenhead{\thepage\hfil\leftmark}%%% (3) \def\@oddhead{{\rightmark}\hfil\thepage}%%% (4) \let\@mkboth\markboth%%% (5) \def\chaptermark##1{\markboth{% \ifnum \c@secnumdepth >\m@ne \if@mainmatter \@chapapp\thechapter\@chappos\hskip1zw \fi \fi ##1}{}}% \def\sectionmark##1{\markright{% \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi ##1}}} これのページ番号部分(\thepage)を変更したページスタイル (名称は mainheadings とします)を定義してみます. この場合,まず,上記の定義のコピーを用意します. %%% プリアンブルにコピーすればよいでしょう. %%% (もちろん,\makeatletter と \makeatother で囲みます.) そして,mainheadings ページスタイルは \ps@mainheadings で定義されるので, (1) の行を \def\ps@mainheadings{% に変更します. あとは,(3),(4)の行の \thepage を \oldstylenums{\arabic{page}} に変更して \def\@evenhead{\oldstylenums{\arabic{page}}\hfil\leftmark}% \def\@oddhead{{\rightmark}\hfil\oldstylenums{\arabic{page}}}% にします. %%% (5)以降の部分は柱に関係します. %%% \thepage は(5)以降には現れていないので,ここでは深入りしません. これで,mainheadings ページスタイルの定義が *一応* 完了したので, \mainmatter の直後ででも \pagestyle{mainheadings} と指定して このページスタイルを用いればよいわけです. ただし,これだけでは,\chapter の見出しのページでのページ番号が oldstyle にならない,といった不都合があります. 実際,\chapter では \thispagestyle{jpl@in} のように ページスタイルを変更しています.そこで,jpl@in スタイル (上記の(2)で定義されています)も変更するとよいでしょう. 例えば,上記の(2)の行を \let\ps@jpl@in\ps@mainheadnombre とでも変更し,\ps@mainheadnombre を上記の \ps@mainheadings の 定義例と同様に定義するとよいでしょう. %%% 今度は \ps@headings の定義のコピーを変更します. %%% なお,文書の体裁を自分で(思い通りに)いじろうというのでしたら, %%% マクロ作成に *深入り* した書籍を用意するのもよいでしょう. %%% (とは言っても,私自身は(まともに論じるには準備すべきことが多すぎる) %%% ``2 段組・多段組'' の話はまだ論じていませんが.) %%% %%% ページスタイルの話に関しては,(LaTeX での)マクロ作成に関する %%% %%% 書籍なら,たいてい扱っているはずです. %%% %%% (ただし,plain TeX のみを扱った書籍(最初から日本語で書かれた %%% %%% ものでは珍しいのですが,訳書にはしばしば存在します)に対しては, %%% %%% (LaTeX の機構である)ページスタイルを扱っていることを %%% %%% 期待できないので,注意してください.) %%% (まあ,latex.ltx を生成するのに用いられる各種 dtx ファイルを %%% 読んでもいいのですが.) [補足] なお,今回の場合は,ページスタイルを新規作成しなくても, 単に各ページスタイルの定義の中の \@oddhead などにおける \thepage の部分を \if@mainmatter \oldstylenums{\number\c@page}% \else \thepage \fi に変更する方が簡単に済むでしょう. %%% 用いるページスタイルが最初からわかっている状況では, %%% 上記の方法の方が,記述すべき定義の量が少なくて済むと思いますが.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)