TeX2HTMLよりはXML [XML]
昨年度の卒論で、LaTeXのソースをHTML文書に変換するツールをPythonで作る、というテーマのものがあった。その開発には、基本方針というか、基本的なアルゴリズムを僕が提供し、学生がそれを個々のコマンドや環境に適応して実装したものだった。実際には、様々な制約をつけ、しかもマクロなどを定義していないデフォルトのpLaTeXでの処理が前提だった。それでもテーブルなどは、必ずしも実用的なものとは行かなかった。
コンセプトとしては、できるだけシンプルなHTMLに変換し、またCSSを十分に使って、標準のHTMLでは表現できないものは、CSSのクラス名を挿入するというものだ。もちろん、CSSファイルは別に用意したが、ユーザーはこれを自由に書き換えたり、書き足したりして、簡単に変換のカスタマイズをできるようにした。
今年の卒論では、もう少し別のアプローチを考えた。すでに僕のブログのカテゴリーの「XML」のところで何度か書いたように、最初に文系の論文に適したXMLを定義しておき、それをXSLTでTeXとHTMLに書き直す、というものだった。類似のツールは他にもあることは知っているが、文系の論文・レポートにターゲットを絞り、使いやすい、あるいは覚えやすいルールのものを作りたかった。既存のものは複雑だし、インストールも大変だし、使いづらかったからである。
まず最初にやってもらったことは、TeXのコマンドに対応するようなXMLの要素を考え、それをXSLTでTeXのソースに変換するものだった。これが意外と簡単にできた。完全というわけではないし、まだまだ検証は必要だし、そもそもXML自身がTeXのコマンドにほぼ一対一で対応しているので、簡単に変換できるのは当たり前だが、それにしても、若干の試行錯誤で原理的にはうまくいった。
同じXMLをXHTMLに変換するXSLTを書くことも、そんなに難しくないように思われる。大体、普通使われるコマンドは、ほとんどそのままHTMLに書き換えられる。
どうして、TeXからHTMLに変換すると、うまく行かない、ないしは非常に難しいのに、XMLからTeXやHTMLに変換すると、それほど複雑にならないのだろうか。XSLTが、XMLの変換に適していて、それをPythonなりPerlなりのスクリプトで書くより簡単に変換できるからなのだろうか。
ただし、現在のものは単なる試作品にすぎない。そもそものXMLの設計は、もっとよく考え、出来る限り多様な論文形態に対応できるようにしなければならないし、その定義もDTDで書くようにしなければならない。また、卒論としては、今疑問に思った点、つまり、どうしてスクリプトで変換するよりも簡単にできるのかについての考察も必要だろう。しかし、このXMLおよびXSLTという単純な規則が、非常に柔軟で効果の大きいものであることを再確認できたように思う。
完成が楽しみだ。
コメント 0