MathML是一种基于XML的语义化数学标记语言,分为Presentation MathML(控制显示)和Content MathML(表达含义),支持可缩放、可访问、可计算的公式描述,原生兼容Firefox/Safari,Chrome/Edge需借助MathJax等库。

MathML 的两种核心形式
它分为两类,用途不同但常配合使用:
-
Presentation MathML(表现型):专注“怎么显示”,用
<mi>(变量)、<mn>(数字)、<mo>(运算符)、<msup>(上标)、<mfrac>(分数)等标签控制视觉布局。例如a² + b² = c²要写成嵌套的 XML 结构。 -
Content MathML(内容型):专注“是什么意思”,用
<plus/>、<ci>(content identifier)、<apply>等表达数学逻辑,便于计算机解析或代入计算,但浏览器原生支持极少,多用于专业工具链。
为什么用 XML 格式写公式
XML 提供了严格的层级结构和明确的语义标签,让每个数学成分都有身份:
- 公式不再是“一张图”,而是由
<math>根元素包裹的树状结构; - 每个符号或操作都被赋予类型含义,比如
<mi>x</mi>表示变量 x,<mn>2</mn>表示数字 2; - 嵌套关系自然反映数学优先级与分组,如
<mrow><mi>a</mi><mo>+</mo><mi>b</mi></mrow>明确表示“a 加 b”是一组。
在 HTML 中怎么写 MathML
直接嵌入即可,无需额外编译:
- 必须以
<math xmlns="http://www.w3.org/1998/Math/MathML">开头声明命名空间; - 支持
display="inline"(行内)或display="block"(块级)控制排版; - Firefox 和 Safari 原生支持较好;Chrome 和 Edge 目前仅实验性支持,生产环境建议搭配 MathJax 或 KaTeX 渲染库保障一致性。
它解决了哪些实际问题
相比截图或 LaTeX 渲染图,MathML 带来的是底层能力升级:
- 公式随字体缩放不失真,适配高分屏和无障碍阅读;
- 屏幕阅读器能逐个朗读变量和运算,对视障用户友好;
- 搜索引擎可识别并索引公式语义,提升教育类内容可见性;
- 与 CSS 联动可统一调整颜色、间距、字体,维护成本低。










