LaTeXからHTMLへの変換のこと [日常のあれやこれや]
先日、はじめて自分のブログをWindows XPのIEで見た。式の埋まったページがすごく見づらいことを知った。
見づらさの原因のひとつは、式を画像として表示しているけど、それがアンチエイリアスのかかった柔らかい文字なのに、地の文の文字がWindowsデフォルトのフォント(何か知らない)で、白黒のはっきりしたコントラストの高い文字になっていて式の文字が沈んでしまっている。
式はLaTeXで書いてpdfにしたものを式の部分だけpngにしてアップロードしている。Macで見るとpdfでの表示とSafariやFirefoxでの表示はほとんど同じに見える。そりゃあたりまえ、地の文はどれも同じヒラギノのフォントで表示されてしかもデフォルトでアンチエイリアスがかかっているから。Macで見るとそれほど不自然ではないはず(地の文のフォントサイズの設定によってはちぐはぐになるけど)。
ブログに式を載せることを最初に考えたとき、どうしようかと思った。そのころは今使ってるiMacではなくて使い倒したPowerBook G4だった。まず、LaTeX2HTMLをインストールしてみた。ところがうまく動かない。まずperlを動くようにする(LaTeX2HTMLそのものはperlで書かれている)ところで苦労した。でもそれが本質的な問題ではなくてLaTeXの上にその他いろいろを次々適当にインストールして使っているせいで、ディレクトリ構造がぐちゃぐちゃになっているのが原因らしい。
いまさらLaTeXをインストールし直すのもやだし(どうせまたこんどは別のが動かなくなるに決まっている)、いろいろいじったあげくLaTeX2HTMLを諦めた。
結局とりあえず手動でLaTeX to HTMLにすることにした。具体的にどうするかと言うと
- LaTeXのソースとして本文を書く
- 図はIllustratorで描いて*.aiファイルとして保存して、\includegraphicsで読み込む
- コンパイルしてpdfファイルを作る
- ソースのファイルから地の文をブログにコピーする
- 式と図はpdfから画像としてコピーしてファイルを作る
- 式は8階調のグレー、カラーが含まれた図は32階調のカラーのpngに変換する
- ブログに図として貼付ける。そのとき式は右寄せで、図は中央にアラインする
- itemize、enumerate環境はul、olタグに書き換える
- verbatim環境はpreタグに書き換える、その他もその調子
- HTMLで表示ができないあるいは面倒な文字は2バイト文字に書き換える
せめて、テキストの変換ぐらい自動的にやりたい。でもそのフィルタをCで書いてたら大変だし、トークン分解と構文解析に適した言語もあるけど、いまさら覚えるぐらいなら 昔やりかけて途中で挫けたままになってるyacc & lexの勉強でもやりなおそうか、と思いながら結局手動変換のまま今に至っている。
どっしよっかなー。
そういえばWindowsでは読みにくいという話だったけど、そうそう、他所のサイトでよく見かけるやつ、あれと同じにしよ。
「このブログはMacOS XのSafari/Firefoxでの閲覧に最適化されています」
"LaTeX It!" や "TeXType" が便利ですよ。両者とも日本語は扱えませんが、TeX形式の数式をPDF, EPS, JPG, PNG などに変換、Drag&Dropできます。また簡単な圧縮率の指定が可能です。Illustrator はweb用に保存、があります。結局タグ打ちになってしまいますが(笑)
by SY (2008-12-23 20:19)
コメントありがとうございます。「LaTeX It!」や「TeXType」は知りませんでした。
僕はLaTeXとの付き合いが長くてどうしても「オリジナルはLaTeX」で「そこからHTML派生」としたくなります。Illustratorから直接吐くと図のキャプションとかを自分でつけなければなりません。式番号も別アプリを使うと打ち直しになります。いきおいこういうことになってしまいました。
「LaTeX It!」「TeXType」試してみます。
by decafish (2008-12-23 20:48)
LaTeX 美文書入門の奥村先生のブログに便利そうなものが紹介されていました。自分ではまだ使った事が無いので使用感は分かりませんが…
http://oku.edu.mie-u.ac.jp/~okumura/blog/node/2533
Google の API だとそのままソースに TeX コードを書けるので便利そうに見えますね。
by SY (2010-03-05 23:18)
おお、これは面白いです。
なるほど、imgはスタティックなイメージである必要はないし、サーバ側はTeXとpngへの書き出しができればいいので手間はそれほどかからない。残念ながらarray環境などを入れ子にすることはできないみたいですけど。
頭いいなあ。こういうひらめきはGoogleらしいですね。僕には絶対思いつけない。
しかし、Googleがこのサービスをやめれば全部表示されなくなってしまいます。Googleへの依存がますます増えてしまう、というのは気に入らない点ではあります。
そうか、Googleが気に入らないなら、やってることは簡単だから自分でこのサーバを立てればいいということですか。
まあ、特許もあるだろうしGoogleがやっているうちは素直に使った方が良さそうですが。
by decafish (2010-03-06 21:09)
>残念ながらarray環境などを入れ子にすることはできない
equnarray のナンバリングとかはどうなんでしょ?このサイトでは結構多用されてるように見受けられますので、もし無いと不便ですね。
奥村さんブログのコメントにありますが、jsMath, MathJax, というのもあるそうです。jsMath は js + css でイメージ生成するようなので、Googleが潰れても平気かと。MathJaxはサイトをぱっとみたのですがよく分かりませんが"Jax" と銘打っている辺り js?
クヌース御大が作ってくれると良いんですけど(笑)
by SY (2010-03-06 23:20)
ナンバリングもダメみたいです。
jsMath、すごいですね。全然知りませんでした。こっちはGoogleに較べて手間がかかっています。JavaScriptの中身を見てないですけどpngのような画像としてではなく専用フォントをHTMLでタイプセットしてるので文字の大きさを変えるとちゃんと変わりますね。これはすごい。MathJaxもjsMathと同じ考え方ですね。jaxといってもJavaを呼んでいるわけではないみたいですけど。
どちらもTeXフォントとTeXタイプセッタをjavaScriptで記述し直した、ということなんでしょうか。
HMTLに埋めないといけないので文字によっては実体参照で書く必要があるとかがなんともアレですが、そればっかりは仕方ないですね。
まったく、すごいなあ。
昔期待していたMathMLはレンダラの整備の問題と記述の不便さ(どう考えても手書きでは無理)があるので、こういったやり方に分があるように感じます。
by decafish (2010-03-07 14:37)