MathML全称是Mathematical Markup Language,即数学标记语言,是W3C制定的基于XML的标准,专门用来描述数学符号、公式以及它们的结构和内容。它可以让数学公式像普通文本一样被检索、编辑和渲染,解决了传统用图片展示公式无法被搜索引擎识别、放大后模糊的问题,广泛应用于学术论文、在线教育平台、科学计算文档等场景。

MathML的基本结构
MathML遵循XML的语法规则,所有标签必须正确闭合,属性值需要用双引号包裹。它主要分为两大模块,分别是Presentation_MathML和Content_MathML。
- Presentation_MathML:专注于公式的视觉呈现,定义公式的排版方式,比如上下标、分数、根号等显示效果,是网页中最常用的模块。
- Content_MathML:专注于公式的数学含义,描述公式的语义和运算逻辑,适合用于数学计算、公式解析等场景。
最外层的标签是<math>,需要声明XML命名空间,基础结构如下:
<?xml version="1.0" encoding="UTF-8"?> <math xmlns="http://www.w3.org/1998/Math/MathML"> <!-- 公式内容写在这里 --> </math>
用XML表示基础数学公式
1. 简单行内公式:x加y等于z
行内公式不需要额外的排版标签,直接使用<mi>表示标识符,<mo>表示运算符即可:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>x</mi> <mo>+</mo> <mi>y</mi> <mo>=</mo> <mi>z</mi> </math>
2. 分数公式:二分之a加b
分数需要使用<mfrac>标签,子标签第一个是分子,第二个是分母:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mfrac>
<mrow>
<mi>a</mi>
<mo>+</mo>
<mi>b</mi>
</mrow>
<mn>2</mn>
</mfrac>
</math>
这里<mrow>用来组合多个元素作为一个整体,<mn>表示数字。
3. 上下标公式:x的平方加y的下标n
上标用<msup>,下标用<msub>,第一个子标签是基元素,第二个是指数或下标元素:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msub>
<mi>y</mi>
<mi>n</mi>
</msub>
</math>
复杂公式的XML表示实例
二次方程求根公式
公式x等于负b加减根号下b平方减4ac除以2a的MathML XML表示如下:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo>-</mo>
<mi>b</mi>
<mo>±</mo>
<msqrt>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>-</mo>
<mn>4</mn>
<mi>a</mi>
<mi>c</mi>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mi>a</mi>
</mrow>
</mfrac>
</math>
其中<msqrt>标签表示根号,内部包裹根号下的所有内容。
MathML的使用注意事项
- XML语法要求严格,所有标签必须闭合,属性值必须用双引号,否则解析会报错。
- 如果要在HTML页面中嵌入MathML,需要保证页面是XHTML格式,或者在HTML5中直接使用
<math>标签,现代浏览器基本都支持HTML5中的MathML渲染。 - 复杂的公式可以借助MathML编辑器生成代码,避免手动编写出现语法错误。
- 如果需要让公式被搜索引擎识别,优先使用Presentation_MathML,同时可以搭配Content_MathML的语义描述提升可访问性。
MathML作为标准的数学公式标记语言,解决了公式数字化表示的核心问题,掌握它的XML编写方法,能够让你在处理学术、教育类内容时更加高效,输出的公式也更规范、更易维护。