數學置標語言

數學標記語言，是一種基於XML的標準，用來描述數學符號和公式。它的目標是把數學公式整合到全球資訊網和其他文件中。從2015年開始，MathML成為了HTML5的一部分和ISO標準。由於數學符號和公式的結構複雜且符號與符號之間存在多種邏輯關係，MathML的格式十分繁瑣。因此，大多數人都不會去手寫MathML，而是利用其它的工具來編寫，其中包括TeX到MathML的轉換器。歷史.它是由W3C的數學工作組提出的。語言規格1.01版於1999年7月公佈，2.0版於2001年2月出現。W3C的數學工作組在2003年10月釋出了MathML 2.0的第二版, 之後又在2010年10月釋出了MathML 3.0.結構和語法.MathML十分類似HTML，但非常繁瑣。它繼承了角括號和雙標籤的用法。MathML不但規定數學式子的表現，而且也規定數學數字的含義有聲朗讀出來。Presentation MathML.Presentation MathML 側重於如何顯示一個數學式子，大約有30個元素。元素名字全部以codice_1開頭。構建 Presentation MathML 表示式的記號是有一些更高層的元素組合而成的，這些元素控制它們的介面。記號元素只包含文字，它們有：注意到儘管這些記號元素能用於表示擴充套件要點，允許用宿主語言來標記。HTML5的MathML幾乎允許在mtext中內聯HTML標記，可以把HTML標記放在MathML中來標記內嵌文字。並且是合格的。這些是佈局元素，它們都只能包含元素。它們有：與HTML和XML一樣，有許多實體來指定特殊符號，例如codice_14和codice_15。有趣的是，通常不可見運算子也依然存在實體，例如 codice_16 用於表示乘法運算中被省略的乘號。這些不可見運算子是：MathML的完整實體說明在標準的第七章，並且和HTML與XML的協調在 。所以，表示式formula_1需要兩個元素：一個是建立總體的水平行，另一個建立上標的指數。只有元素和裸記號的佈局的結構如下：a &amp;InvisibleTimes;+ b &amp;InvisibleTimes; x+ c然而，單個記號也必須用識別符號表示。新增到記號標記，完整的形式如下：有效的MathML文件需要包含XML宣告、DOCTYPE宣告和文件元素。文件體包含位於formula_2Content MathML.Content MathML 側重於表示式的語義，而不是佈局。中間的 Content MathML 是用codice_17元素來表示功能的具體應用。被應用的功能的長子元素放在codice_17下，並且它的運算元或引數是剩下來的子元素， Content MathML 只有少許屬性。識別符號和數字之類的記號被單獨標記，就像 Presentation MathML 一樣，但是元素類似 codice_19 和 codice_20。不同於僅僅是另一個型別的記號，運算子表示具體的元素。它們的數學語義可以從MathML中的製鞋符號中看出來：codice_21、codice_22等等。為不同的功能和運算子超過100個不同的元素。例如，codice_23代表formula_3，而codice_24代表formula_4。表示運算子和功能的元素是空元素，因為它們的運算元是其它在下面包含有codice_17的元素。表示式formula_1可以被表示為：formula_6Content MathML 近乎是同構於一個功能語言中的表示式。codice_26的數量就是Scheme的codice_27，而且許多運算子和功能元素的就是Scheme的函式。有了這些精細的文字轉換，外加去標籤的單獨記號，上面的例子就成為：(plus(times a (power x 2))(times b x)c)這放映出XML元素結構和LISP或Scheme的S-表示式的長期的親密關係。與其它格式的對比.例如，書寫以下的二次方程求根公式：formula_7若用LaTeX，則只需要一行程式碼：若用eqn，則也只需一行程式碼x={-b +- sqrt{b sup 2 – 4ac}} over 2a若用Apache OpenOffice Math和LibreOffice Math，則也只需要一行程式碼：x={-b ± sqrt {b^2 – 4ac}} over 2ax={-b +- sqrt {b^2 – 4ac}} over 2a若用ASCIIMathML ，則也只需要一行程式碼x = (-b +- sqrt(b^2 – 4ac)) / (2a)但用MathML，則需要：formula_8雖然如此，由於MathML是嚴格遵守XML規範的語言，很多已經運用XML的軟體可以輕易的讀懂MathML。這也是這種語言的製作者W3C組織寧可選擇複雜的句法也要和標準一致的一個重要原因。在XHTML或HTML5檔案中內嵌MathML.MathML是一種XML，可以透過使用XML名稱空間來嵌入XML檔案中，例如XHTML檔案。現代瀏覽器例如火狐瀏覽器版本3以上版本和Opera瀏覽器9.6以上版本可以展示XHTML內嵌的MathML。例如 math-test.xhtml:Given the quadratic equationformula_9, the roots are given byformula_10而內聯MathML同樣被HTML5檔案支援。支援的瀏覽器有當前版本的WebKit。例如： math-test.htmExample ofembedded in an5 fileGiven the quadratic equationformula_11, the roots are given byformula_12軟體支援.瀏覽器.在現在幾個主要的網頁瀏覽器中，基於Gecko的瀏覽器有最完備的原生支援。而WebKit排版引擎有針對MathML的開發版，這一特性只出現在Safari 5.1及更高版本、Chrome 24，但是不在後來的Chrome版本里面。Google移除了MathML支援，宣稱架構上的安全問題和低使用量不會證明他們的維護時間有理。截至2013年10月年 (2013年10月)[ [update]]，WebKit/Safari的實現存在多個bug。Opera 9.5—12支援MathML CSS配置，但不能使附加符號正確放置。9.5之前需要使用者指令碼或樣式以模擬MathML支援。從Opera 14開始，Opera透過遷移到Chromium 25引擎移除了MathML支援。Internet Explorer原生不支援MathML。IE6到IE9在安裝了MathPlayer外掛後也可以識別MathML。IE10使用MathPlayer時存在一些崩潰bug，並且微軟決定在IE11完全禁止MathPlayer所需的二進位制外掛介面。MathPlayer有協議條款會限制在商用頁面或軟體上面的使用或發行。使用或發行MathPlayer外掛以透過商用軟體中的WebBrowser控制元件顯示HTML內容也有可能受到禁止。基於KHTML的Konqueror不提供對MathML的支援。編輯器.MathML還得到了主要辦公軟體的支援，如Apache OpenOffice、LibreOffice、Microsoft Office，以及數學軟體的支援,如Mathematica、Maple。是火狐瀏覽器的附加元件，提供WYSIWYG的MathML編輯器。手寫識別.Windows 7自帶工具名叫Math Input Panel。可以把手寫輸入轉換為MathML。