プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

MathMLを試してみた

ブログの記事がばらばらになって自分で過去記事が読みにくいので、HPを作ってまとめることにしました。
私の記事は何故かやたらと数式が多いので、HP記事は全部TeXで管理することにしました。完全なTeXじゃなくて、私が使いやすいように定義したTeXライクな何かなのですが。

で、数式をどうするか悩みました。当初はSVGに変換でもしようかと思っていたのですが、ChromeがMathMLに対応したらしいので、MathMLに決定しました。これからどんどんMathMLが浸透していくことでしょう。

まぁ、ぶっちゃけ、私さえ読めればいいので時代の先端を行くとします。

TeXからHTMLに変換するものや、プログラムソースコードを見やすくHTML化するものは私がJavaで自作したのですが、MathMLに変換するプログラムを自作するのはさすがに面倒です。
そこで、出回っているものを試してみた結果、mathml.rbが良かったので、こちらを利用する事にしました。私の作ってるプログラム本体はJavaなので、JRubyをJavaから呼び出して実行なんて回りくどいことしています。

で、Firefox,Chrome,Operaに出力したMathMLをレンダリングしてもらったらこんな感じになりました。

Chromeぇ……… 対応したんじゃなかったの?フォントの問題でしょうが、=と≠の幅が同じなのは評価できますね。というか、一番Chromeのフォントが綺麗ですね。
右項の「(if〜」の部分は左寄せの命令になっているのですが、よくみるとOperaでは「(」の位置が上下でずれています。一番いいのはFirefoxですね。Firefox厨の私歓喜( ^ω^) Firefox最強。
IE?そんな子いましたっけ………?





追記:上の例でFirefoxのフォントがおかしい件について
フォントとかインストールしてみたんだけど、全然変わらなくてなんでーとなってたら、ここが原因だった。

優先するにチェックを入れていないと変わらないみたいです。
え?フォントサイズが大きい?遠視はね、小さい字を読むのがしんどいのよ………(私は不同視なのでうっかり裸眼でいることが多い。そうすると、見えるけどすぐ疲れるのよ。)


チェックを入れた状態でレンダリングした結果。いい感じだね。
別にMathML内部のフォントに関してはFirefox側で勝手に無視してくれてもいいと思うんだけどな………。
最小フォントがでかいからどうしても添え字とかがでかくてバランス悪くなるし。かといって、未だにpxでフォントサイズを指定してくる糞ページが多いから最小フォントを解除する気にはならんし。
(もっとアクセシビリティ考えてくれ。だいたい、このブログのデフォルトデザインも意味がわからない。bodyのfont-size:80%とか、なに?なんで100%以下をわざわざ指定してんの?100%以下を使うなよ。他の所を1.25emにすればいいじゃんか。)






なお、<mtext>にmathml.rbが対応していない様子なので、\textは私が前処理と後処理で挿入しています。本当はRubyが読めたらmathml.rb自体に変更を加えたいんだけど、何せRubyの言語仕様すら知らんので、ちょっと無理だった(^_^;)

入力
\bm{f}(x) = \begin{equations}{ccl}\infty & & \text{(if }x=0\text{)}\\0 & & \text{(if }x\ne 0\text{)}\end{equations}


出力結果

f(x)=(if x=0)0(if x0)