OldSlav-0.1d 修正

OldSlav 古代教会スラヴ語 LaTeX パッケージについて,TeX Q & A でいくつかやりとりがあって,その過程で問題点の対応を行った。ここのところ頻繁にリリースを繰り返すはめになってしまった。

OldSlav SlavTeX フォントは教会スラヴ語の文字だけを定義している。英字・数字は含まれない。このため,原稿に英字・数字を書くと期待どおりに出力されないばかりか,セクション番号やノンブルにも不具合をきたしてしまう。後者の問題をなんとかユーザが意識しなくてもよいよう調整するのに,いろいろ試行錯誤し手間取ってしまったのである。

はじめはページスタイルにも手を入れなければならないと思い込んだのが間違いであった。LaTeX では文書クラスファイルのなかで plain, headings などのページスタイルを定義しており,ユーザの指定で柱やノドの様式を出力し分けることができる。まず OldSlav で組むと数字が出ないので,ここを直さなくちゃと必死でページスタイルを修正していたのである。しかしページスタイルはクラスファイルごとに微妙に異なるし,これをいちいちカバーしていると切りがない。思い悩んでシンプルな方法に落ち着いた。TeX のプロからすれば当たり前と言われそうだけど。

Babel 用の教会スラヴ語言語定義 oldchurchslavonic.ldf にある一連の \extrasoldchurchslavonic マクロに対し,次のように付け加えれば解決した。

\let\latin@arabic\@arabic
\def\oldchurchslavonic@arabic#1{%
  \textlatin{\number #1}}
\addto\extrasoldchurchslavonic{%
  \let\@arabic\oldchurchslavonic@arabic}
\addto\noextrasoldchurchslavonic{%
  \let\@arabic\latin@arabic}

まず既存の \@arabic アラビア数字出力命令を保存しておき,\extrasoldchurchslavonic によって教会スラヴ語環境ではラテン文字フォントを明示する \@arabic に挿げ替える。教会スラヴ語環境から抜けるときは \noextrasoldchurchslavonic でもとの定義に戻しておくわけだ。Babel を使わない場合の教会スラヴ語スタイルである oldslav.sty にも同じような切替えを入れた。

\extras言語名」マクロは Babel が提供するインタフェースで,この場合,教会スラヴ語が選択されたときに呼ばれる処理を記述できる仕掛けである。「\noextras言語名」マクロには,逆に当該言語から抜け出るときに行うべき処理を書く。Babel はさすがよく考えられた多言語基盤であると改めて納得した。