MathML

資工三甲 494511677 李俊諺 lobster

資工二甲 495511272 林格毅 ie955127

資工二甲 495511571 李柏諭 aco

資工二乙 495512197 鄧耀彬 binbon

起源:
過去在網路中的數學表達式大多採用圖形來顯示,因為網路上大多數的文件是以HTML作為主要的編輯格式。HTML大體上已經足夠指揮那些以文字為主,以圖片與聲音影像為輔的網路文件,但是很多科學界使用的符號所組成的數學表達式,並不能被歸類為文字,因為一般的文字有其表達訊息的方向性:例如西歐文字都是從左向右閱讀,中文通常是從左向右橫讀,或是從上向下直讀。但是數學表達式常常不依循這種固定的方向性,比如下面這個式子就是個明顯的例子:

這個數學表達式-分數,它的分母和分子是之間的位置關係是上下,意義代表分子和分母的比例,而分子中又有另外一個數學表達式a+b-意義是兩者的和,這個公式位置是左右,可見數學式子的呈現並沒有照著一個明顯的順序來進行,所以,要表達出數學公式,在這個階段只能使用圖形。
因此,網路文件的作者必須先借助有支援數學公式編輯器產生出要使用的公式,再將公式儲存為圖形嵌入到網頁中的適當位置,這造成了以下幾個問題:

  1. 圖形佔用的容量較大,佔用網路頻寬,影響傳輸效率。
  2. 圖形化的公式無法重複利用,無法編輯或修改公式內容。
  3. 圖形化的公式只適合人類閱讀,機器無法理解。

這些使得目前要在網路上傳遞公式內容或顯示公式畫面非常麻煩,以致於在網路上進行科技文獻的線上出版的困難度增加。

LaTeX:
在MathML還沒被提出的時候,使用的是LaTeX,前身為Tex,用來表達數學式的軟體,其排版效果佳,但只是表達數學公式的外觀形狀,不能表達數學公式內在的含義,不便於搜尋和開發。

發展:
有鑑於此,W3C遂於1998年4月提出專為出版數學公式的標記語言MathML。MathML是一種基於XML的數學標記語言,它完全採用XML的定義規範,繼承了XML的大部分優點,具有強大的數學公式表達能力。
MathML提供兩種描述數學公式的標記MathML的標籤群可概分為展示標籤(Presentation Tags)和內容標籤(Content Tags)兩大類:

  • 展示標籤-將數學公式外觀以高解析度的方式呈現出來供人類閱讀。
  • 內容標籤-將公式內涵以語意化的方式標注,作為不同應用程式之間的傳輸介面,進行分散式科學運算及處理。

MathML利用上面兩大類標籤群,使其具有排版的功能產生出數學表達式,供人類用肉眼閱讀,例如:

但是MathML並不只是為了排版這個目的而設計的,它還盡可能地去記錄那數學式子裡面的意義。為什麼特別去記錄裡面的意義?像上面那個例子,2到底代表x的平方呢,還是x的上標?讀者必須依照前後文的內容,才能理解那些符號所代表的不同意義。如果讀者是個電腦,與其要它理解前後文的內容,還不如盡量明確地指出這些符號本身的意義。MathML使用絕對結構化的語法,用標籤明確地告訴使用者呈現出來的數學表達式是什麼意思,這達到了兩個目的:

  • 方便做格式的轉換。
  • 建立有關數學的資料庫。

所以,MathML的出現使數學公式不僅可以在Web上建立與傳輸,而且可以在其它應用程式中實現再利用和轉換,滿足對數學公式的各種處理需求。

顯示技術比較

早期在MathML還沒被提出的時候,使用的是LaTex語法,這種語法使用結構化及較短的語句來描述方程式,例如x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} 代表的是這個公式:
而使用MathML表示則需要較長的語句

所以,同樣也是結構化的描述,但MathML需要較長且複雜的語句,你可能會想,這麼複雜的寫法,誰會想使用它呀?大家姑且不必擔心,既然它能夠成為多數人普遍認同的標準,必然有特別的簡化軟體來幫助我們,以下介紹幾種常見符合MathML規格的編寫數學式子的工具。

常見的編輯軟體

  1. Design Science WebEQ
  2. 由Design Science所發展出的WebEQ,這是一套包含互動數學的建構網頁工具,以及數學符號的圖形輸入介面WebEQ Editor;然而它是以外掛程式(Applet)的方式來處理數學式(MathML)的顯示,當開啟網頁的數學式較多時,顯示速度慢,效果稍差。

  3. Amaya
  4. W3C為了測試MathML的規格,另行發展的Amaya,它是一個瀏覽器也是一個編輯器,可編輯MathML(還有XHTML、SVG、CSS)文件;但還無法做到動態網頁,及線上數學討論,以及不支援多國語言輸入與顯示功能。

  5. 能線上轉換方程式(LaTex)為MathML的網頁
  6. 連結網址

  7. AnyEQ
  8. 韓國開發的軟體,它的操作影片如下
    連結網址

瀏覽器支援

  1. Internet Explorer
  2. 雖然IE不直接支援顯示MathML,但是只要下載了外掛程式Mathplayer或techexplorer即可正確顯示。

  3. Firefox and other Mozilla based browsers
  4. Firefox也能用來觀看網路上的數學式子。

  5. P.S.另外,若想測試你的瀏覽器支不支援顯示MathML可以到這個網站
  6. 連結網址

在網頁上放置數學式的方法

介紹了那麼多,接下來就說明如何把數學式子放到網路上吧

  1. 使用Microsoft
  2. Word的方程式編輯器,再將打好的方程式存成圖檔放置網路上,這是一種大家常用的方法(以前大一時的微積分老師也這樣做),缺點是無法直接修改及擷取式子。

  3. 使用現成的 JavaScript -- ASCIMathML.js
    • 下載 ASCIMathML.js 檔案,和你編寫數學式子的網頁放在同一個目錄
    • 在你編寫數學式的網頁插入< script type="text/javascript" src="ASCIIMathML.js">
    • 以 ASCIIMath 或 TeX 語法來編寫數學式
    • 將你編寫好的數學式網頁及 ASCIMathML.js 傳到伺服器上
  4. ASCIIMathML 是一種透過 Javascript 來讓網頁可以動態地顯示精美的數學式

結論及未來發展

其實目前MathML還不算完全普及,主因在於它複雜化的寫法常讓人望之退卻,但它也清楚的表達了數學式中的意義,解決了網路上數學交流的問題,目前許多線上數學討論版也都應用了MathML的技術呢!未來可望發展線上畫圖功能,讓數學及圖形解說能相輔相成。或者發展數學及時通,像MSN或YAHOO Message般,但多加了討論數學的功能。

參考資料

投影片及實作網頁連結 (檔案存活時間約半年…)