数学置标语言

历史

它是由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”，后者叫做“Content MathML”)。由于数学式子的意义与表现是分离开的，如何交流内容留给了用户。例如，内嵌MathML的网页可以让许多浏览器按照正常的网页一样浏览。但是视觉受损者也可以用相同的MathML，通过屏幕阅读器（例如IE浏览器的MathPlayer插件、Opera浏览器9.50构建号9656+、火狐浏览器的Fire Vox附加组件）有声朗读出来。

Content MathML

Content MathML 侧重于表达式的语义，而不是布局。中间的Content MathML 是用<apply>元素来表示功能的具体应用。被应用的功能的长子元素放在<apply>下，并且它的操作数或参数是剩下来的子元素， Content MathML 只有少许属性。
标识符和数字之类的记号被单独标记，就像Presentation MathML 一样，但是元素类似ci 和 cn。不同于仅仅是另一个类型的记号，操作符表示具体的元素。它们的数学语义可以从MathML中的制鞋符号中看出来：times、power等等。为不同的功能和操作符超过100个不同的元素（见）。
例如，<apply><sin/><ci>x</ci></apply>代表，而<apply><plus/><ci>x</ci><cn>5</cn></apply>代表。表示操作符和功能的元素是空元素，因为它们的操作数是其它在下面包含有<apply>的元素。
表达式可以被表示为：
<math>
    <apply>
        <plus/>
        <apply>
            <times/>
            <ci>a</ci>
            <apply>
                <power/>
                <ci>x</ci>
                <cn>2</cn>
            </apply>
        </apply>
        <apply>
            <times/>
            <ci>b</ci>
            <ci>x</ci>
        </apply>
        <ci>c</ci>
    </apply></math>
Content MathML 近乎是同构于一个功能语言（例如Scheme）中的表达式。<apply>...</apply>的数量就是Scheme的(...)，而且许多操作符和功能元素的就是Scheme的函数。有了这些精细的文本转换，外加去标签的单独记号，上面的例子就成为：
  (plus
    (times a (power x 2))
    (times b x)
    c)
这放映出XML元素结构和LISP或Scheme的S-表达式的长期的亲密关系。

在XHTML或HTML5文件中内嵌MathML

MathML是一种XML，可以通过使用XML名字空间来嵌入XML文件中，例如XHTML文件。现代浏览器例如火狐浏览器版本3以上版本和Opera浏览器9.6以上版本（不完全支持）可以展示XHTML内嵌的MathML。
例如 math-test.xhtml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Example of MathML embedded in an XHTML file</title>
<meta name="description" content="Example of MathML embedded in an XHTML file" />
<meta name="keywords" content="Example of MathML embedded in an XHTML file" />
</head>
<body>
<h1>Example of MathML embedded in an XHTML file</h1>
<p>
Given the quadratic equation
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mi>a</mi>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mi>x</mi>
<mo>+</mo>
<mi>c</mi>
<mo>=</mo>
<mi>0</mi>
</mrow>
</math>
, the roots are given by
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo form="prefix">&#x2212;<!-- − --></mo>
<mi>b</mi>
<mo>&#x00B1;<!-- &PlusMinus; --></mo>
<msqrt>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>&#x2212;<!-- − --></mo>
<mn>4</mn>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mi>a</mi>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mi>c</mi>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
</math>
.
</p>
</body></html>
而内联MathML同样被HTML5文件支持。支持的浏览器有当前版本的WebKit（Safari）和Gecko（Firefox）。
例如： math-test.htm
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Example of MathML embedded in an HTML5 file</title>
</head>

<body>
<h1>Example of 
<abbr title="Mathematical Markup Language">MathML</abbr>
embedded in an 
<abbr title="HyperText Markup Language">HTML</abbr>
5 file
</h1>
<p>
Given the quadratic equation
<math>
<mrow>
<mi>a</mi>
<mo>&InvisibleTimes;</mo>
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&InvisibleTimes;</mo>
<mi>x</mi>
<mo>+</mo>
<mi>c</mi>
<mo>=</mo>
<mi>0</mi>
</mrow>
</math>
, the roots are given by
<math>
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo form="prefix">−</mo>
<mi>b</mi>
<mo>&PlusMinus;</mo>
<msqrt>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>−</mo>
<mn>4</mn>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
<mo>&InvisibleTimes;</mo>
<mi>c</mi>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
</math>
.
</p>
</body></html>

浏览器

在现在几个主要的网页浏览器中，基于Gecko的浏览器（如Firefox）有最完备的原生支持。
而WebKit排版引擎有针对MathML的开发版，这一特性只出现在Safari 5.1及更高版本、Chrome 24，但是不在后来的Chrome版本里面。Google移除了MathML支持，宣称架构上的安全问题和低使用量不会证明他们的维护时间有理。截至2013年10月年，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。
Firemath是火狐浏览器的附加组件，提供WYSIWYG的MathML编辑器。

手写识别

Windows 7自带工具名叫Math Input Panel。可以把手写输入转换为MathML。