日本語を含む TeX ソースから Mozilla-MathML への変換法

MathMLはブラウザ上に数式を含む表現が可能になったという点で画期的と思う のですが、いかんせんマークアップが煩雑に過ぎます。そこで TeX からの変 換というのは自然な発想ですが、いくつか見付けたツールは日本語に対応して いませんでした。それを何とか解決しようと思います。方針は、とにかくNTT 版にもっていくことです。dviがどうなろうと、Mozillaでの出力には関係ない のです。

本来はtex4htをハックしてpTeXに対応させたいのですが、ちょっとあれなソー スなので中断してます。また、現状はマイナス記号や縦棒などが変なコードに 変換されてしまいます。

必要なもの
MozillaのMathML対応バイナリ
moz4ht(tex4htのMozilla対応版)
必要なTeX環境
NTT-JTeX がインストールされていればそれだけでよい。
pTeXの場合は "dvi2dvi + 大日本フォントのtfm" が必要。 dvi 中の日本語フォント指定(goth*,min*)をNTT形式 (dmj*,dgj*)に変換するツール dvi2dvi と、大日本フォントの tfm(dmj*.tfm,dgj*.tfm)が必要である。これらは NTT-JTeXの本家 から入手できる。なお、dvi2dviには後述のパッチか後処理 を加える必要がある。
サンプル
  1. 画面イメージ1,
  2. 二次方程式画面イメージ, TeXTeX ソース
  3. 解析力学のメモ(pTeX-dvi2dvi-fix-tex4ht), (NTT JTeX - tex4ht), TeXソース、表示のおかしい数学記 号がある。
NTT-JTeXを使う場合の解説(これが基本)
  1. まず、TeX4HT for Mozilla をとってきてインストールし(ここに もあります)、インストールディレクトリを T4HTDIR と します。
  2. TeX4HT は、dviファイルを解釈するように思われます。 dvi中に現れるフォント名から相当するtfmを読みこんで、TeX内部コード の文字番号との対応を独自につけていくようです。その対応表が T4HTDIR/ht-fonts/subdir/fontname.htf にあります。 NTT-JTeXは、日本語コードをサブフォントに分割してtfmに格納していま すので、これをdmj*, dgj* に対応して作ればよさそうです。 例えば、ひらがなのtfmはdmhira??.tfmですから、こんなふうに T4HTDIR/ht-fonts/mozilla/nttsub/dmhira.htf を作ります。 とりあえず文字コードはEUCにしておきます。
    	  dmjhira 1 83
    	  'ぁ' ''  1
    	  'あ' ''  2
    	  ....
    	  'ん' '' 83
    	  dmjhira 1 83
    	  
    共立の「TeX入門」(大野 編)を参考にしました。 ht-fonts/mozilla/nttsub/* を dnp-htf-fonts-euc.tar.gzに置きまし た。
  3. T4HTDIR には mzlatex というスクリプトができています。latexを3回繰 り返してtex4ht, t4ht という順に実行されます。 latex を jlatex に変えます。すると、mzlatex file.tex を実行して file.xml が得られます。
  4. file.xml は日本語部分がEUCです。一行目を <?xml version="1.0" encoding="EUC-JP"?>に変更しておき ましょう。 が、unicodeの数学記号と混在するとま ずいので、unicode にしておいてもよいかもしれません。変換ツー ルを用意しました。 Cのソース変換テーブル です。
  5. 生成ファイルを変換するよりもフォントテーブルをunicodeで 書いた方が早いので、unicode版をht-fonts/unicode/dnp/以下に 作り、 dnp-htf-fonts.tar.gz としました。好みでお使い下さい。
pTeXを使う場合の解説
  1. tex4htをインストールし、euc版またはunicode版の上記htfフォン トテーブルもインストールしておく。
  2. mzlatex 中の latex を platex に変更する。
  3. dmj*.tfm,dgj*.tfm が $TEXMFDIR/fonts/tfm/nttsub/ 以下にある こと。tfm 下のディレクトリ名はなんでもよい。
  4. dvi2dvi をインストールする。virtual font の a2n.tar.gz の内 容が $TEXMFDIR/fonts/vf/vf-a2n/ にあること。
  5. mzlatex の latex 処理部分3行と tex4ht 部分2行を分けたスクリ プトを作る。それぞれ、mzjlatex, mz4ht としよう。
  6. まず mzjlatex file.tex を実行して pTeX のdviを作る。
  7. dvi2dvi -F a2n file.dvi > foo.dvi で dvi を変換。
  8. 「問題点」に指摘した二つのうちどちらかで dvi の後処理をする。
  9. 後処理をしたdviのファイル名をfile.dviに変更。
  10. mz4tex foo.dvi として、foo.xml ができる。EUCなら一行目を変更。
問題点
リンク
http://www.maths.ox.ac.uk/~gartside/
謝辞
NTT版JTeX, dvi2dvi の開発者である桜井貴文さんに感謝します。

Takao NAMIKI, <nami@math.sci.hokudai.ac.jp>
Last modified: Mon Jun 19 14:56:30 JST 2000