Mathpix

MathML转Word公式:识别导出MathML后粘进Word的步骤

更新于

MathML转Word公式,难处往往不在粘贴,而在识别出来的那条公式本身:正斜体、上下标和电荷在识别结果里错一处,导出的 MathML 就原样带着这处错进 Word。所以顺序是:识别 → 在「LaTeX」模式按 MathML 的标记方式校对 → 在本站「导出」→「导出 MathML (.xml)」→ 用记事本复制整段,在 Word 公式框里以「只保留文本」粘贴。粘贴仍不成功,同一条公式改走「Word(含公式)」导出,拿到的就是 Word 原生公式。

适用场景:公式来自截图或手写

手里只有公式图片时才需要这条路:文献截图、课件照片、草稿纸上的推导。本站的图片识别收 PNG / JPG / BMP / WEBP / GIF,单张不超过 20MB,一次一张;草稿可以用「识别」→「手写识别」直接写。两种识别都要登录并开通本站会员。「图片识别」弹窗上传区下方有「识别样例」,看样例不用登录,可以先对照自己的截图够不够清晰、公式有没有裁完整。

下面用缓冲溶液的亨德森—哈塞尔巴尔赫方程演示,校对后的源码是:

\mathrm{pH}=\mathrm{p}K_{\mathrm{a}}+\lg\frac{[\mathrm{A}^{-}]}{[\mathrm{HA}]}

识别结果进 MathML 前要校对的三处

识别和导出之间先切到「LaTeX」模式,对照原图看源码。下面三处在屏幕上差别很小,写进 MathML 后却是不同的结构:

  1. 正体有没有包上。 pH、p、a 和化学式要写成 \mathrm{…}。本站导出时,包了 \mathrm 的字母带 mathvariant="normal"(正体)标记;没包的 pH 是两个各自独立的单字母变量,按 MathML 的默认规则排成斜体。
  2. \text 与 \mathrm 别混用。 识别结果里偶尔把 pH 包成 \text{pH},导出后是一段 mtext 文字,不再是公式里的字母。化学式、单位统一改成 \mathrm,结构才一致。
  3. 电荷与方括号。 [\mathrm{A}^{-}] 导出后,负号是 A 的上标(msup),方括号是分式里独立的两个括号符号。识别把负号识成减号、落在基线上时,MathML 里就成了「A 减什么」,进 Word 也是减号。

缓冲溶液公式的教材原图示意与应有写法

导出与粘贴

  1. 识别。 公式编辑页点「识别」→「图片识别」,弹窗开着时粘贴截图,识别直接开始;上传或拖入的图片要点「开始识别」。结果插在编辑区光标处。
  2. 校对。 按上一节三处改源码。
  3. 导出。 回到「可视化」模式,点顶栏「导出」→「导出 MathML (.xml)」。本站导出的是一行、根标签带命名空间的 MathML,末尾 annotation 里存着导出那一刻的 LaTeX 源码,所以一定先校对再导出,否则存下来的也是错的那份。
  4. 粘进 Word。 用记事本打开文件复制整段,在 Word 里按 Alt+= 插入公式框,框里粘贴后选「只保留文本」。

缓冲溶液公式在可视化模式下打开的导出菜单

粘贴这一步的条件出处是开源项目 python-docx 的 GitHub 讨论第 320 号(2016-09-22 开帖,2026-09-27 查看):发帖人在 Word 2010 上试过,带命名空间的 MathML 按纯文本粘进公式区才会渲染成公式,有换行会拆成几个公式。这是 Word 2010 上的记录,新版本可能不同,以你电脑上的结果为准;转不成就改走「导出」→「Word(含公式)」,多条公式在文档工作区逐条「插入公式」后用「导出」→「Word 文档 (.docx)」一次拿到。

识别出的公式从校对到粘进 Word 的四步顺序

做完之后核对3处

  1. 是不是公式。 单击出现公式框、双击能进入编辑,才算转成功;光标能停在尖括号之间,说明还是文字。
  2. 上下标对不对。 pKₐ 的 a 在右下角,A⁻ 的负号在右上角,都没有掉到基线上。
  3. 分式与正体。 [A⁻] 在分子、[HA] 在分母;pH、p、lg 和化学式都是正体,只有 K 是斜体。有一处是斜体,回源码查是不是漏了 \mathrm。

pH 等于 pKa 加 A 负离子与 HA 浓度比的常用对数

公式进 Word 后换电脑显示异常,看Word公式字体兼容;分不清粘进来的是不是原生公式,看公式粘贴到Word可编辑。

这份 MathML 留着别删:annotation 里那行源码可以直接取回再改。换成 NH₄⁺/NH₃ 体系时,NH₃ 替掉分子上的 A⁻、NH₄⁺ 替掉分母上的 HA,pKₐ 用 NH₄⁺ 的数值,就能再导一次。

延伸阅读

常见问题

识别出来的 pH 进 Word 后成了斜体怎么办?
回「LaTeX」模式看 pH 是否包在 mathrm 里(被识别成 text 的也改成 mathrm),改完重新导出 MathML 再粘;转不成就改走「导出」→「Word(含公式)」。