7ème Gnossienne » ASCIIMathPHP for WordPress

7ème Gnossienne

dynamis' blog

ASCIIMathPHP for WordPress

Categories: Physics, WordPress, XML  —  2006/7/28   by dynamis

WordPress で数式を入力するため、ASCIIMathPHP を使って ASCIIMath 形式から MathML を生成するプラグインを作ってみました。後述の通り問題山積ですが、人柱万歳な方は好きに使ってください(使用法などの解説一切なし)。

asciimathphp.zip

ASCIIMathML のページにある例(の一部)とそれを変換させてみた結果はこんな感じです (Firefox など MathML 対応ブラウザでご覧ください):

x^2+y_1+z_12^34

x2+y1+z1234

sin^-1(x)

sin-1(x)

d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h

ddxf(x)=limh0f(x+h)-f(x)h

\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}

\ddxf(x)=\limh\to0\f(x+h)-f(x)h

f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n

f(x)=n=0f(n)(a)n!(x-a)n

f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n

f(x)=\n=0\fty\f(n)(a)n!(x-a)n

[[a,b],[c,d]]((n),(k))

[abcd](nk)

x/x={(1,if x!=0),(text{undefined},if x=0):}

xx={1ifx0undefinedifx=0

ご覧の通り LaTex 形式の数式はちゃんと変換できていません。単に ASCIIMathPHP がベースとしている ASCIIMathML.js のバージョンが古いからなのですが、ASCIIMathPHP をアップデートするのはかなり面倒そうです…

他にも問題があります。XML ドキュメントとして XHTML+MathML を生成することになるため、出力全体が Valid でなければなりません。しかし、現実の WordPress (や TinyMCE) は平気で Invalid な出力をしますので、うっかりしているとパースエラーになってしまいます…

3 Comments

Comment by dynamis

2006/7/29

コメント欄での変換テスト。
a,bandx<y<1
(a,b]={x:a<xb}

Comment by dynamis

2006/7/29

数式直後の改行が <br /> にならない…
空行を挟んでみると…?

a,bandx<y<1

(a,b]={x:a<xb}

Comment by dynamis

2006/7/29

修正。多分これでもう大丈夫。
[asciimath] タグで囲まれた部分は数式であるとしてサーバサイドで MathML へと変換します。;-)

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.