txt2sxw

txt2sxwは、JIS X 0208/0213で符号化されたプレーンテキストを StarSuite/OpenOffice.org Writerのsxw形式に変換するプログラムです。 青空文庫形式のルビをWriterのル ビに変換することも可能です。

新着情報

バージョン0.2を公開しました。(2005/05/28)

ダウンロード

動作条件

以下のソフトウェアが必要です。

アップグレードの仕方

前のバージョンがインストールされている場合は、txt2sxw.rbと template.sxwの双方のファイルを新しいバージョンのもので上書きしてくださ い。

使い方

基本

txt2sxw.rb と template.sxw を同じディレクトリに置きます。 コマンドラインから以下のようにタイプして実行します。

$ ruby txt2sxw.rb euc-encoded-file.txt output.sxw

これで、EUCで符号化されたテキストファイルeuc-encoded-file.txtを sxw形式に変換してoutput.sxwに出力します。生成されたoutput.sxwをWriter で開いて読むことができます。

勿論、txt2sxw.rb を実行可能にして (chmod +x txt2sxw.rb)、パスの通った ディレクトリに置いておけば、以下のようにして実行できます (template.sxwをtxt2sxw.rbと同じディレクトリに置くのを忘れないでください)。

$ txt2sxw.rb euc-encoded-file.txt output.sxw

入力文字コードの指定は、-e を指定するとEUC-JISX0213、-s を指定 するとShift_JISX0213になります。デフォルトは -e です。 例えば、青空文庫の「蜘蛛の糸」をsxw形式にするには以下のようにします。

$ txt2sxw.rb -s kumonoito.txt kumonoito.sxw

こうして出来た kumonoito.sxw を StarSuite 8 Beta Writerで開くと以下の ようになります。

[「蜘蛛の糸」の表示画面]

この画面では、「かんだた」と注釈のある語の「かん」にあたる漢字が、 JIS X 0213で追加された文字です (第三水準、87区71点)。

ルビ

上記で得られた出力は、ルビが括弧の中に入っていて、お世辞にも読 みやすいとは言えません。そこで、txt2sxwでは、青空文庫形式のルビを Writerのルビに変換することができます。この機能は、実行時に -r オプショ ンを付けることで有効になります。なお、オプションを複数指定する際は「-s -r」のようにも「-sr」のようにひとまとめにしても書けます。

$ txt2sxw.rb -sr kumonoito.txt kumonoito.sxw

こうして出来た kumonoito.sxw を開くと、下図のようになります。

[ルビ表示の「蜘蛛の糸」の画面]

今度はルビが文字の上に振られています。ただし、ルビのある行と無 い行とで、行間が違ってしまっています。これはWriterの機能改善に期待しま しょう。

フォント指定

txt2sxwはデフォルトでStarSuite付属の「HG 明朝L Sun」フォントを 用います。しかし、StarSuiteをお使いの方以外ではこのフォントをお持ちの 方は少ないでしょう。そこで、このフォントに代えて、他のJIS X 0213対応フォ ントを用いるには、変換実行時に -f オプションを用います。例えば、 Windows XP のコマンドプロンプトからXANO明朝U32を指定して変換するには次のようにします。

> ruby txt2sxw.rb -srf XANO明朝U32 kumonoito.txt kumonoito.sxw

【技術的な注意: コマンドラインから渡すフォント名に 非ASCII文字を使った場合、WindowsではSJISとして解釈し、それ以外のOSで はEUCとして解釈しています。】

動作確認

私は以下の環境で動作確認しています: VineLinux 3.1 + Ruby 1.8.2 + StarSuite 8 Beta

Windows XP SP2 上でCygwinを使って少し試してみました。動くようです。

既知の問題点

以前の版からの変更点

0.1から0.2
前のバージョンの番号を0.1ということにした。
青空文庫形式のルビに対応。(-r オプション)
フォント指定を可能に。(-f オプション)
バージョン番号表示機能を付加。(-v オプション)

断り書き


Copyright 2005 Yano Keisuke
yano (at) moon.email.ne.jp