夠在主頁上顯示漂亮的數學公式是一個很誘人的想法。MT-plugins.org 上面有一個 itex2MML 的插件,利用 itex2MML 可以把 itex (LaTeX 的一個子集)轉換為 MathML。itex2MML 是開發來配合 Mozilla 使用的,而 Mozilla 是目前唯一能夠直接解釋 MathML 語句的浏覽器。而 IE 需要裝一個插件 MathPlayer 才能正確解釋 MathML 語句。
為了讓 itex2MML 生成的 MathML 語句能夠在 MathPlayer 下面正常工作,我修改了 itex2MML 的源碼。其實就是把 itex2MML 生成的所有標簽都改為在一個名字空間裡,這樣才能讓 IE 去啟動 MathPlayer。詳細的說,就是把 itex2MML 的源碼中的 itex2MML.y 文件裡的所有 < 都改為 <m: (文件開頭的兩個 #include 語句中的不能改),把所有的 </ 都改為 </m: 。然後用 make 編譯得到 itex2MML 可執行文件,放到 /usr/local/bin 目錄下(參考 itex2MML 插件的安裝說明)。
最後需要修改 MT 的模版,每個模版需要改兩個地方,一個是開頭的 <Html> 標簽裡面要加上
XMLns:m="http://www.w3.org/1998/Math/MathML"
其次在 <body> 標簽之前加上
<OBJECT ID=MathPlayer CLASSID="clsid:32F66A20-7614-11D4-BD11-00104BD3F987"></OBJECT>
<?IMPORT NAMESPACE="m" IMPLEMENTATION="#MathPlayer"?>
重新生成 MT 的所有文件就可以了。
測試一下今晚的成果先 :)
∑ n =1 ∞ ( -1) nn =ln2
後記:因為上面針對 MT 模版的修改會導致產生的文件不符合 XHtml 的校驗,所以我去掉了這部分代碼。因此現在你無法看到具體的效果,但是你查看網頁的源文件仍然可以看到產生的 MathML 代碼。
此外,我還找到了另外一種使得現有浏覽器支持 MathML 的方法,就是在網頁的頭部加上 XSL (XML Stylesheet Language)的信息:
<?XML version="1.0"?>
<?XML-stylesheet type="text/xsl" href="http://www.w3.org/Math/XSL/mathml.xsl"?>
同時把網頁保存為 .XML 文件。由於 IE 會因安全問題而拒絕使用遠程的 XSL,你需要把 mathml.xsl,pmathml.xsl,ctop.xsl 和 pmathmlCSS.xsl 文件下載下來,保存到你的服務器上面,然後把上面語句中的
http://www.w3.org/Math/XSL/
改為你的服務器的相應地址。具體問題可以參考這篇文章。
這種方法除了可以用於上面修改過的 itex2MML,也支持使用原來的 itex2MML 產生的頁面,也就是不使用名字空間的 MathML 語言標簽。