數學標記語言（，），是一種基於 XML 的標準，用來描述數學符號和公式。它的目標是把數學公式整合到全球資訊網和其他文件中。從 2015 年開始，MathML 成為了 HTML5 的一部分和 ISO 標準。 由於數學符號和公式的結構複雜且符號與符號之間存在多種邏輯關係，MathML 的格式十分繁瑣。因此，大多數人都不會去手寫 MathML，而是利用其它的工具來編寫，其中包括到 MathML 的轉換器。 歷史 它是由 W3C 的數學工作組提出的。語言規格 101 版於 1999 年 7 月公佈，20 版於 2001 年 2 月出現。W3C 的數學工作組在 2003 年 10 月釋出了 MathML 20 的第二版，之後又在 2010 年 10 月釋出了 MathML 30 結構和語法 MathML 十分類似 HTML，但非常繁瑣。它繼承了角括號和雙標籤（標籤 內容 標籤）的用法。 MathML 不但規定數學式子的表現，而且也規定數學數字的含義（前者叫做 Presentation MathML，後者叫做 Content MathML。由於數學式子的意義與表現是分離開的，如何交流內容留給了使用者。例如，內嵌 MathML 的網頁可以讓許多瀏覽器按照正常的網頁一樣瀏覽。但是視覺受損者也可以用相同的 MathML，透過螢幕閱讀器（例如 IE 瀏覽器的 MathPlayer 外掛、Opera 瀏覽器 950 構建號 9656、火狐瀏覽器的附加元件）有聲朗讀出來。 Presentation MathML Presentation MathML 側重於如何顯示一個數學式子，大約有 30 個元素。元素名字全部以 m 開頭。構建 Presentation MathML 表示式的記號是有一些更高層的元素組合而成的，這些元素控制它們的介面（大約有 50 個屬性，基本很好地控制了細節）。 記號元素只包含文字（沒有其他元素），它們有： mixmi 識別符號 momo 運算子 mn2mn 數字 mtextnon zeromtext 文字 注意到儘管這些記號元素能用於表示擴充套件要點，允許用宿主語言來標記。HTML5 的 MathML 幾乎允許在 mtext 中內聯 HTML 標記，可以把 HTML 標記放在 MathML 中來標記內嵌文字（在例子中使得第一個單詞加粗）。並且 mtextbnonb zeromtext 是合格的。 這些是佈局元素，它們都只能包含元素。它們有： mrow 水平的一行 msup、 munderover 等等 上標，規定上下運算子，就像求和號等等一樣 mfrac 分數 msqrt 和 mroot 方根 mfenced 用柵隔離開內容，例如括號 與 HTML 和 XML 一樣，有許多實體來指定特殊符號，例如 pi 和 RightArrow。有趣的是，通常不可見運算子也依然存在實體，例如 InvisibleTimes 用於表示乘法運算中被省略的乘號。這些不可見運算子是： U2061 函式應用 U2062 不可見乘號 U2063 不可見分隔符 U2064 不可見加號 MathML 的完整實體說明在標準的第七章，並且和 HTML 與 XML 的協調在 。 所以，表示式 ax2 bx c 需要兩個元素：一個是建立總體的水平行，另一個建立上標的指數。只有元素和（沒有標記的）裸記號的佈局的結構如下： mrow a msupx 2msup b x c mrow 然而，單個記號也必須用識別符號（mi）、運算子（mo）或數字（mn）表示。新增到記號標記，完整的形式如下： mrow miami momo msupmixmimn2mnmsup momomibmimomomixmi momomicmi mrow 有效的 MathML 文件需要包含 XML 宣告、DOCTYPE 宣告和文件元素。 文件體包含位於 math 元素內的 MathML 表示式。通常，MathML 會被內嵌於多種通用文件中，例如 HTML、DocBook，獲知其它的 XML 模式。一個包含如上 MathML 的完整的文件顯示如下： xml version10 encodingUTF8 DOCTYPE math PUBLIC W3CDTD MathML 20EN httpwwww3orgMathDTDmathml2mathml2dtd math xmlnshttpwwww3org1998MathMathML mrow miami momo msup mixmi mn2mn msup momo mibmi mo mo mixmi momo micmi mrow math Content MathML Content MathML 側重於表示式的語義，而不是佈局。中間的 Content MathML 是用 apply 元素來表示功能的具體應用。被應用的功能的長子元素放在 apply 下，並且它的運算元或引數是剩下來的子元素， Content MathML 只有少許屬性。 識別符號和數字之類的記號被單獨標記，就像 Presentation MathML 一樣，但是元素類似 ci 和 cn。不同於僅僅是另一個型別的記號，運算子表示具體的元素。它們的數學語義可以從 MathML 中的製鞋符號中看出來：times、power 等等。為不同的功能和運算子超過 100 個不同的元素（見標準第四章）。 例如，applysincixciapply 代表 sin x，而 applypluscixcicn5cnapply 代表 x5。表示運算子和功能的元素是空元素，因為它們的運算元是其它在下面包含有 apply 的元素。 表示式 ax2 bx c 可以被表示為： math apply plus apply times ciaci apply power cixci cn2cn apply apply apply times cibci cixci apply cicci apply math Content MathML 近乎是同構於一個功能語言（例如 Scheme）中的表示式。applyapply 的數量就是 Scheme 的 ，而且許多運算子和功能元素的就是 Scheme 的函式。有了這些精細的文字轉換，外加去標籤的單獨記號，上面的例子就成為： plus times a power x 2 times b x c 這放映出 XML 元素結構和 LISP 或 Scheme 的 S 表示式的長期的親密關係。Steven DeRose The SGML FAQ Book Understanding the Relationship of SGML and XML Kluwer Academic Publishers 1997 ISBN 9780792399438 與其它格式的對比 例如，書寫以下的二次方程求根公式： xfrac b pm sqrt b2 4ac2a 若用 LaTeX，則只需要一行程式碼： x frac b pm sqrt b2 4ac2a 若用 eqn，則也只需一行程式碼 xb sqrt b sup 2 4ac over 2a 若用 Apache OpenOffice Math 和 LibreOffice Math，則也只需要一行程式碼（以下三種均可）： xb plusminus sqrt b2 4 ac over 2 a xb sqrt b2 4ac over 2a xb sqrt b2 4ac over 2a 若用 ASCIIMathML ，則也只需要一行程式碼 x b sqrt b2 4ac 2a 但用 MathML，則需要： math modedisplay xmlnshttpwwww3org1998MathMathML mrow mixmi momo mfrac mrow mo formprefix mo mibmi mo mo msqrt msup mibmi mn2mn msup mo mo mn4mn mo mo miami mo mo micmi msqrt mrow mrow mn2mn mo mo miami mrow mfrac mrow annotation encodingTeX xfrac b pm sqrt b2 4ac2a annotation annotation encodingStarMath 50 xb plusminus sqrt b2 4 ac over 2 a annotation math 雖然如此，由於 MathML 是嚴格遵守 XML 規範的語言，很多已經運用 XML 的軟體可以輕易的讀懂 MathML。這也是這種語言的製作者 W3C 組織寧可選擇複雜的句法也要和標準一致的一個重要原因。 在 XHTML 或 HTML5 檔案中內嵌 MathML MathML 是一種 XML，可以透過使用 XML 名稱空間來嵌入 XML 檔案中，例如 XHTML 檔案。現代瀏覽器例如火狐瀏覽器版本 3 以上版本和 Opera 瀏覽器 96 以上版本（不完全支援）可以展示 XHTML 內嵌的 MathML。 例如 mathtestxhtml xml version10 encodingUTF8 DOCTYPE html PUBLIC W3CDTD XHTML 11 plus MathML 20EN httpwwww3orgMathDTDmathml2xhtmlmath11fdtd html xmlnshttpwwww3org1999xhtml xmllangen head meta httpequivcontenttype contenttexthtml charsetUTF8 titleExample of MathML embedded in an XHTML filetitle meta namedescription contentExample of MathML embedded in an XHTML file meta namekeywords contentExample of MathML embedded in an XHTML file head body Example of MathML embedded in an XHTML file Given the quadratic equation math xmlnshttpwwww3org1998MathMathML mrow miami mo mo msup mixmi mn2mn msup momo mibmi mo mo mixmi momo micmi momo mi0mi mrow math the roots are given by math xmlnshttpwwww3org1998MathMathML mrow mixmi momo mfrac mrow mo formprefix mo mibmi mo mo msqrt msup mibmi mn2mn msup mo mo mn4mn mo mo miami mo mo micmi msqrt mrow mrow mn2mn mo mo miami mrow mfrac mrow math body html 而內聯 MathML 同樣被 HTML5 檔案支援。支援的瀏覽器有當前版本的 WebKit（Safari）和 Gecko（Firefox）。 例如： mathtesthtm DOCTYPE html html langen head meta charsetUTF8 titleExample of MathML embedded in an HTML5 filetitle head body Example of MathML embedded in an HTML 5 file Given the quadratic equation math mrow miami momo msup mixmi mn2mn msup momo mibmi momo mixmi momo micmi momo mi0mi mrow math the roots are given by math mrow mixmi momo mfrac mrow mo formprefixmo mibmi momo msqrt msup mibmi mn2mn msup momo mn4mn momo miami momo micmi msqrt mrow mrow mn2mn momo miami mrow mfrac mrow math body html 軟體支援 瀏覽器 在現在幾個主要的網頁瀏覽器中，基於 Gecko 的瀏覽器（如 Firefox）有最完備的原生支援。 而 WebKit 排版引擎有針對 MathML 的開發版， However see also httpstracwebkitorgwikiMathML20Status 這一特性只出現在 Safari 51 及更高版本、Chrome 24，但是不在後來的 Chrome 版本里面。Google 移除了 MathML 支援，宣稱架構上的安全問題和低使用量不會證明他們的維護時間有理。，WebKitSafari 的實現存在多個 bug。 Opera 9512 支援 MathML CSS 配置，但不能使附加符號正確放置。MathML The Opera MathML blog Myoperacom 1 November 2007 Retrieved on 9 May 201295 之前需要使用者指令碼或樣式以模擬 MathML 支援。UserJS for MathML 20 Myoperacom Retrieved on 9 May 2012 從 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。 參考文獻 Calculadora Alicia 外部連結 W3C MathML MathPlayer －Internet Explorer 的外掛。 MathML in Mozilla －Mozilla 的 MathML 計劃。 WYSIWYG Equation editor 參見 HTML XML TeX LaTeX W3C Category 標記語言 CategoryXML Category 數學軟體