変換スクリプトの概略

TeX形式への変換

青空文庫で公開されているファイルは,一段落が一行になっています.また,段落始めには全角の空白があり,これが段落開始の一字下げの代わりになっています.従って,\parindentを0ptにし,\obeylinesを指定します.段落の始めに起しの鍵カッコが來る場合,普通のクラスファイルでは全角二分下がりになります.これを全角下がりに変更します.これは,s/□「/\n\\mbox{□}\\kern0mm\\inhibitglue「/g;とすればいいでしょう.

次に「?!」や「――」を変換します,青空文庫では「?」や「!」が句読点として用いられている場合,直後に全角空白が入っています,これを除去する必要があります.(これもJFMで「?!」の後のグルーがどのように定義されているかに依存します.しかし,全角空白が入っていると行頭に全角空白が來てしまったり,行末に全角空白が來てしまうので避けるべきでしょう.)これはs/?□/?{}/g;および,s/!□/!{}/g;で変換します.次に,「――」ですが一部のフォントではつながらない場合もあるので,TeXのコマンドで置き換えることにします,s/――/\\――{}/g;としておきます(スタイルファイル側で用意します).また,大返しは青空文庫では「/\」,濁点付のものは「/″\」で表す事になっているので,これらもTeXのコマンドに変更します,s//\/\\ajKunoji{}/g;s//″\/\\ajDKunoji{}/g;としておきましょう.\ajKunoji\ajDKunojiなどはUTF/OTFパッケージを使うか,別途クラスファイル等で準備します.

傍点

青空文庫では,傍点は「鮒やざこ[#「ざこ」に傍点]を取って」のように入力されています.これはs/(.+?)[#「\1」に傍点]/\\bou{$1}/g;のように変換します.\bouコマンドはplext.styで定義されている物です.

振り仮名

振り仮名ですが,青空文庫では「この庵室《あんしつ》を去る」のようにルビを掛ける漢字の区切りが明確な場合,つまり直前が漢字以外の場合,このように表されます.また,直前が漢字の場合,「この老|隠者《いんじゃ》は」のように表されます.これらはそれぞれ,s/([^亜-熙])([亜-熙,々][亜-熙,々]*)《(.*?)》/$1\\ruby{$2}{$3}/g;s/|([亜-熙,々][亜-熙,々]*)《(.*?)》/\\ruby{$1}{$2}/g;で変換できます.ここで\rubyはクラスファイル等で用意する事になります.この場合で処理しきれない物があります.それはルビを掛ける漢字がJIS X 208外字の場合です,その場合を変換するにはs/([^亜-熙])([亜-熙,※,々]+)[#([^]]+?)]([亜-熙,々]*)《(.*?)》/$1\\ruby{$2$4}{$5}\\footnote{$3}/g;とします.この場合「|」がある場合,「|」が残ってしまいますが,それは別途s/|//g;で対応します.以上で大抵の場合の振り仮名の処理ができると思います.

JIS X 208外字

青空文庫ではJIS X 208外字は,「※[#「人べん+爾」、第3水準1-14-45、130-17]」のように入力されています.これをいったん脚註にしてしまいます.この変換はs/※[#([^]]+?)]/※\\marginpar{$1}/g;です.そのあとDVIファイルを見ながら,拙作のUTF/OTFパッケージやGTフォントおよび文字鏡フォントなどを利用して,外字に手作業で置き換えていきます.もしくは最初から※を検索してひとつひとつ置換していってもいいでしょう.同じ文字は同じように書かれているので一括で置換できるはずです.

第3水準,第4水準の漢字については,面区点番号が記されていますので,これを手がかりにユニコードなどに変換してもよいでしょう.拙作のスクリプトでは面区点番号からUTF/OTFパッケージの\UTF/\CIDコマンドに置き換えるようにしています.

注釈

それ以外の注釈は脚註にします,s/[#([^]]+?)]/\\footnote{$1}/g;で変換できます.

まとめ

これまでのことを纏めると,以下のようになります:

s/^□「/\n\\mbox{□}\\kern0mm\\inhibitglue「/g;
s/?□/?{}/g;
s/!□/!{}/g;
s/――/\\――{}/g;
s//\/\\ajKunoji{}/g;
s//″\/\\ajDKunoji{}/g;
s/(.+?)[#「\1」に傍点]/\\bou{$1}/g;
s/([^亜-熙])([亜-熙,々][亜-熙,々]*)《(.*?)》/$1\\ruby{$2}{$3}/g;
s/|([亜-熙,々][亜-熙,々]*)《(.*?)》/\\ruby{$1}{$2}/g;
s/([^亜-熙])([亜-熙,※,々]+)[#([^]]+?)]([亜-熙,々]*)《(.*?)》/$1\\ruby{$2$4}{$5}\\footnote{$3}/g;
s/|//g;
s/※[#([^]]+?)]/※\\marginpar{$1}/g;
s/[#([^]]+?)]/\\footnote{$1}/g;

その他

その他にも,字下げ,地付き,縱中横,返り点などを処理できれば便利です.

正字への変換

所謂,旧字旧仮名遣いの作品の場合,JIS X 208内の漢字も昔の活字風に変更したいと思いました.UTF/OTFパッケージを利用することにより,可能な限り置き換えをしてみます.ただし,どの漢字をどれに置き換えるのが“正しい”のかという問題が生じます.あくまでサンプルとして置き換えテーブルを公開します.青空文庫セットのなかのkanji.txtというファイルです.私は,これを"ProofReader"というソフトウェアの辞書としてつかうことにより置換を行っています.

参考リンク

参考とさせていただいたリソースです.

齋藤修三郎

インデックスへ