Html2dvi
[
English
]
*** Ver0.6k およびそれ以前のものに不要な空白が紛れ込んでいました。***
*** Ver0.7 より複数のファイルを一括して処理できるようになりました。***
*** Ver0.7 はバグだらけでしたので、0.7a以降をお使い下さい。 ***
1. 使用の前に
Html2dvi
は HTML ファイルを TeX ファイルに変換し、 さらに tex プログラムを呼出し dvi ファイルを作成し、必要ならプレビューアを 起動する perl のスクリプトです。 画像は単に文字列
[img]
もしくは
ALT
で指定された文字列を 出力します。文字データをより読みやすい形に変換して、 画面上で読むためのツールです。
スクリプトの最初の部分で、perl 実行ファイル、 TeX 実行ファイル、 日本語使用の有無、日本語コード変換ツール(およびオプション)、プレビューア名 などを指定する場所があります。まず、その部分を自分の環境に合わせてください。 日本語関係のコマンドは Ascii 版を前提に記述しています。 日本語化されていない perl で、日本語を含んだ文書を扱うときは、
$perl_is_japanized = 0;
として下さい(デフォルトでは 1 になっている はずです)。さもないと、文字化けがおこることがあります。 ただし、この場合、異常に長い行を含むファイルを処理できません。
スクリプト自身が日本語文字を含んでいますので、必要に応じてコードを 変換して下さい。
また
chmod +x html2dvi
とやって、スクリプトを実行可能にしておいて ください。スクリプト1つで実行できますので、これをパスの通った場所に おいておけばすぐに使えます。
単に
html2dvi
でヘルプを表示します。
「
html2dvi [オプションたち] ファイル名
」 で拡張子を
.tex
に変えたファイルを作り、 TeX にかけます。ファイル名は他ディレクトリのファイルを 指定しても構いません。その場合でも TeX ファイルはカレント・ディレクトリに 作られます。すでに同名の TeX ファイルがある場合は、そのファイルの 拡張子を
.bak
につけ変えます。
dvi ファイル作成後、自動的にプレビューアを起動するには、
-v
オプションを用います。
2. 出力の調整
縦横のサイズの指定は、単に A4, B5 の指定だけなら、実行時に、それぞれ
-a4
オプション・
-b5
オプションで指定することができます。 縦240cmのサイズを指定する
-long
オプションもあります。 もっと細かいサイズ指定や、行間隔、フォントの大きさなどは カレント・ディレクトリのスタイル・ファイル (デフォールトでは
html2dvi.st
)に記述する ことにより、指定することができます。カレント・ディレクトリに存在する スタイル・ファイルを使用したくない時は、
-f
オプションを用います。 また、他のファイルを用いたい時はそのファイル名を
-fxxxxxxx
のように
-f
に続けて記述します。
-flip
を用いると、Html2dvi は文中に「 'xyz' 」だとか「 "xyz" 」の ような表現があった場合、これを `xyz' とか ``xyz'' のように変換しようとします。これはうまくいくときもあれば、失敗するときもあります。小説などを読むときに 使います。
3. Tableの処理
1ページにはいりきらない大きなテーブルを分割する機能はありません。
-notable
オプション(下表参照)を指定して下さい。 または、あらかじめ大きな
\hsize
を指定したスタイル・ファイルを 用意しておき、それを
-f
オプションで指定して下さい。縦240cm で よければ、
-long
オプションを指定して下さい。
セルの alignment の指定は無視されます。
<TH>
による センタリングも行われません。 ただし、各セルの大きさがあまり大きくない 場合は
-nofold
オプションを試して見て下さい。
テーブル関係のオプション
オプション
説明
-omittable
すべてのテーブルは省略され、かわりに
[table]
という文字列が 出力されます。
-notable
テーブル関係のタグがすべて無視されます。各セルごとにひとつ(または それ以上の)段落を作ります。
その際、表のセンタリングがあってもセンタリングは 無視されます。
-nofold
各セルの内容を1行に表示し、改行を無視します。各コラムは自然な 幅をもち、右寄せ・センタリングなども有効になります。
このファイルで、上のオプションを試してみて下さい。
4. 1行が長いHTMLファイル
世の中には、異常に長い1行をもつ HTML ファイルがあります。おそらく ワープロなどが出力したものでしょう。これをそのまま TeX ファイルに変換すると TeXの能力を越えてしまいます。そこで、html2dvi は ", "(コンマ・プラス・ スペース)という組合せを見つけると、それが行末でない限り、その直後に 改行を挿入します。また、日本語の "。"(句点)のあとにも同様に 改行を挿入し、1行があまり長くならないようにしています。もちろん そのような箇所がなければ、長い行が残ってしまいます。その場合は 手作業で修正して下さい。また、以上の理由により、スクリプト中に 日本語(。)が記述されています。必要に応じてコードを変換してお使い下さい。 なお、1でも記しましたが、スクリプトの最初で
$perl_is_japanized = 0;
とすると、句点での改行を実行しません。これは、用いる perl が日本語に 対応していない場合の誤動作を防ぐときに用います。
5. その他の制限
上記の制限の他にも、いろいろ制限事項(バグともいう)があります。 いくつか例をあげます。
タグとその属性の指定が複数行にわたる場合、2行目以下の記述は無視されます。
<OL>
でのスタイル指定は無視されます。
フォームは無視されます。
<FONT>
や
</FONT>
も
無視
されます。
H
2
O のような表現で、サブスクリプトやスーパースクリプトが 小さくなりません。
アンダーラインを指定した文字列が複数行にわたる場合、HTMLファイル中での改行 箇所にスペースが挿入されます。(例えば今の「改行」と「箇所」の間) 英文の場合には単語をわける働きをするのですが、日本語の場合若干見苦しくなります。
また、英文のハイフネーション・リガチャーなどの処理も行われません。 これは文字のひとつひとつを1単語とみなして処理をしているためです。 ただし、
$use_japanese = 1;
かつ
$perl_is_japanized = 0;
と設定してある場合は、日本語の2バイト文字を1バイトずつ処理しないように 文字列全体をひとつの horizontal box として扱いますので、下線をほどこした 文字列が右マージンを越して飛び出すことがあります。
&#ddd;
のような数値による文字指定だとか
Æ
のような表現には一部対応しています。対応していない文字・記号 (たとえば α)は空白記号で表現されます。どのようなものに対応しているかは、
ISO Latin-1 Character and Entity References
,
Mathematical, Greek and Symbolic characters for HTML
,
Miscellaneous characters for HTML
などのページを処理して、確かめて下さい。
リスト中のリストの深さは、通算した深さで計算しています。リストの中にある テーブルのセルの中で、更に新しいリストを作った場合、 深さをリセットするべきでしょうが、あまりにも面倒なのでやっていません。
<UL> と </UL> などではさまれないリスト項目はインデントが 深くならず、項目の記号や番号が左にとびだす場合があります。
未対応のタグでエラーが起きることもあります。TeX に苦情を言われたら、
r
を入力してしのいでみて下さい。うまくいくときもあります。
6. 変換の方針
まず、ファイルを最後まで調べて、テーブルのサイズとキャプションを調べます。 それらのデータを記憶し、もう一度ファイルを先頭から読んで行きます。 テーブルのキャプション以外は、各タグをその順に TeX のコマンド列に変換して 出力します。タグでないものは特殊文字をのぞき、ほとんどそのままファイルに 出力します。というわけですので、メモリー不足になるようなことはほとんど 起きないはずです。
Perl のページに戻る