OldSlav Cyrillic encoding support

OldSlav 教会スラヴ語 LaTeX パッケージの 8 ビット・キリル・エンコード対応作業を行っている。OldSlav の従来バージョンでは SlavTeX オリジナルのエンコード CP866 キリル・コードでオリジナルの記法そのままに入力できるような設計になっていたのだが,8 ビット文字の分類コードなどを不用意に変更すると,韓国語 UTF-8 inputenc との併用で問題を来すことがわかり,1.1 では CP866 サポートをやめてしまっていた。それなら inputenc.sty のキリル・サポートに乗っかって,広く行われているキリル 8 ビット・コードを使えるようにするのが次の課題になった。

とはいえ,すでに教会スラヴ語環境内で \CYRA などの inputenc.sty の命令を読み替えることにより T2D, T2A, X2, XS エンコーディングを使えるようにしていたので,じつは 1.1 でも \usepackage[koi8-r]{inputenc} とするだけで KOI8-R の原稿でも基本的に動作する。ただし,これだと などの SlavTeX がサポートしていた,キリル文字からなる命令(主にアクセント命令)が使えないし,特殊なアクセント位置調整も効かない。今日はこの不足を補うマクロを書いたわけである。babel \languageattribute で指定するオプションに代表的なキリル文字コード Windows CP1251, KOI8-R, ISO 8859-5, CP866 を指定できるようにした。それぞれ,cp1251koi8-riso88595cp866 を書けばよい( inputenc.sty と同じ)。ただし,もちろんこの場合, latexpdflatex による組版が前提である。これで SlavTeX との互換性も満足できそうである。ロシア人が使うには必須の機能かも知れない(彼らがよく使う MiKTeX に私はほとんどまったく馴染みがないのだけれど)。

試験をしていたら,長大な原稿で何度も言語切替えを行うと Save size スタックのオーバーフローエラーが起きた。げげ,こんなのはじめて,またつまらない潜在バグ!と我ながら呆れた。キリル命令・他パッケージの命令と教会スラヴ語命令との切替えにおいて,頻繁にバックアップ/リストアを \let 命令で繰り返しているとこれが発生するというわけだった。とりあえずバックアップ処理のタイミングを一度に限定することでこの問題対処とした。

これらの対応版は一応できたけれども,ドキュメントがこれから。さっさと改訂して 1.2 としてサーバに置くつもりである。仕事もはじまり,なかなか時間が取れそうもないんだけど。極々関心のある方限定で oldslav-1.2rc.zip をお試しください。