Microsoft 365 中的 MathML 支持

Microsoft 365 个应用程序 (Word、PowerPoint、Excel 和 OneNote) 可以导入和导出 MathML (数学标记语言) 。 本文档介绍支持哪些 MathML 元素、属性和模式,以及适用的限制。


MathML 导入 (MathML → Office 数学)

支持的 MathML 版本

导入程序支持 MathML 3 (Presentation MathML) ,包括在 MathML Core 中弃用但仍使用的元素和属性,例如 <mfenced><maligngroup><malignmark>mathvariant 属性。

命名空间处理

<math> 元素必须使用 MathML 命名空间 http://www.w3.org/1998/Math/MathML。 命名空间前缀 (接受, <m:math xmlns:m="..."> 例如,) 。 在导入之前,会自动更正常见的创作错误(省略 http: 协议)。

上的 display="block"<math> 属性被识别并生成 (居中) 公式的显示模式。 如果没有它,公式是内联的。

支持的元素

令牌元素

元素 说明
<mi> 标识符 (变量、函数名称)
<mo> 运算符或围栏字符
<mn> 数字
<mtext> Text
<ms> 具有 lquote/rquote 属性) 的字符串文本 (
<mspace> 具有 width、、 heightdepth) 的显式空间 (
<mglyph> 字形参考

布局元素

元素 说明
<mrow> 子表达式的水平组
<mfrac> 分数
<msqrt> 平方根
<mroot> n-th root
<msub> Subscript
<msup> Superscript
<msubsup> 下标和上标
<munder> 低于) 的下标 (限制
<mover> 超出 /重音) 的超标 (限制
<munderover> 在脚本下面和上方的脚本
<mmultiscripts> 多个规范和后缀
<mprescripts/> 中的 postscript 和 prescript 之间的分隔符 <mmultiscripts>
<none/> 中的空脚本占位符 <mmultiscripts>
<mfenced> 隔离 (分隔) 表达式 — MathML 3 旧版
<menclose> 机箱 (框、圆圈、罢工等 )
<mphantom> 不可见内容 (占用空间)
<mpadded> 可调整间距框
<mstyle> ) 可继承属性 (样式更改
<merror> 显示为装箱公式 (错误)

表元素

元素 说明
<mtable> 矩阵或表
<mtr> 表行
<mlabeledtr> 已标记的表行
<mtd> 表格单元格
<maligngroup> 对齐组标记
<malignmark> 对齐边缘标记

批注元素

元素 说明
<semantics> 语义注释包装器
<annotation> 文本注释 (例如 LaTeX 源)
<annotation-xml> XML 注释 (例如内容 MathML)

当 存在 时 <semantics> ,将使用第一个子 (Presentation MathML) 进行呈现。 <annotation><annotation-xml> 子级当前被忽略。

其他

元素 说明
<maction> Action 元素 - 用于呈现的第一个子元素

支持的属性

全局属性

大多数元素都接受这些属性:

属性 默认值 说明
mathvariant 请参阅下表 normal* 字体变体
mathsize smallnormalbig或 长度 继承 字号
mathcolor 颜色名称 或 #RRGGBB 继承 前景色
mathbackground 颜色名称 或 #RRGGBB transparent 背景色

* 通常,对于标记元素,MathML 默认值为 normal,但对于单字符 <mi> 元素,默认值为斜体。

不支持 dir

mathvariant

识别所有 18 个 MathML 3 mathvariant 值:

OMML 映射
normal 直立 (平)
bold 粗体
italic 斜体
bold-italic 加粗倾斜
double-struck 双击 (黑板粗体)
script 脚本 (书法)
bold-script 粗体脚本→映射到脚本
fraktur Fraktur
bold-fraktur 映射到 fraktur 的粗体→
sans-serif Sans-serif
bold-sans-serif 粗体无衬线→映射到粗体
sans-serif-italic 映射到斜体的非衬线斜体→
sans-serif-bold-italic 无衬线粗斜体→映射到粗斜体
monospace Monospace
initial 初始 (阿拉伯语)
tailed 尾部 (阿拉伯语)
looped 循环 (阿拉伯语)
stretched 拉伸 (阿拉伯语)

<mo> 运算符属性

属性 默认值 说明
stretchy true, false 运算符字典 运算符是否拉伸
fence true, false 运算符字典 运算符是否为围栏/括号
separator true, false 运算符字典 运算符是否为分隔符
largeop true, false 运算符字典 运算符是否为大型运算符
accent true, false 运算符字典 运算符是否为重音符
movablelimits true, false 运算符字典 限制是否可以移动
lspace 长度 运算符字典 左间距
rspace 长度 运算符字典 右间距
form prefix, infix, postfix 从位置) 确定的自动 ( 运算符窗体

属性的默认值由运算符字典确定。 只能 stretchy使用显式值替代 、 largeopseparatorfence

<mfrac> 属性

属性 默认值 说明
linethickness 长度, medium0 medium 分数条粗细。 0 生成二项式系数 (无条形) 。 thinthick 不受支持。
bevelled true, false false 倾斜 (内联) 分数

<mfenced> 属性 (MathML 3 旧版)

属性 默认值 说明
open ( 打开分隔符字符
close ) 结束分隔符字符
separators , 子级之间的分隔符 ()

<mfenced>在内部扩展为具有分隔符的<mo>等效<mrow>项。 例如:

<mfenced open="[" close="]" separators=",">
  <mi>a</mi><mi>b</mi><mi>c</mi>
</mfenced>

等效于:

<mrow>
  <mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>]</mo>
</mrow>

注意:当 U+251C • 和 U+2524 ┤ 用作围栏分隔符时,它们呈现为不可见。 Microsoft 365 应用的早期版本可能已将其导出为不可见分隔符。

<menclose> 属性

属性 默认值 说明
notation bottom, box, downdiagonalstrike, horizontalstrike, left, madruwb, none, radical, right, top, updiagonalstrike, verticalstrike none 不支持 (MathML 3 默认值 longdiv 。) 机箱样式 () 。 actuarial不支持、 circlelongdivphasorangleroundedbox

多个表示法值可以组合 (空格分隔) 。

<munder> / <mover> / <munderover> 属性

属性 默认值 说明
accent true, false automatic overscript 是否为重音
accentunder true, false automatic 下标是否为重音

<msub> / <msup> / <msubsup> 属性

subscriptshiftsuperscriptshift 不受支持。

<mtable> 属性

rowalign不支持、columnalignrowspacingcolumnwidthcolumnspacingwidthalignmentscopeframe、 和 framespacing

<mtr><mtd> 属性

rowalign不支持 、 columnalignrowspancolumnspan

<mpadded> 属性

width不支持 、 lspaceheightdepth

<mspace> 属性

width不支持 、 heightdepth

字符引用

Standard XML 数字字符引用 (&#x221A;&#8730; 所有 MathML 输入都支持) 。

仅当 MathML 嵌入到 HTML 中时&le;才支持 html 命名字符引用 &alpha; (、&InvisibleTimes;、 等 ) 。 这些不是 XML 或 MathML 规范的一部分,在导入独立 MathML XML 时无法识别。 有关详细信息,请参阅下面的 HTML 部分。

在 MathML 导出期间永远不会写入命名字符引用。 除 、、 和 &<>,所有字符都写为文本 Unicode,它们必须以 XML 进行编码。

运算符字典

导入程序包含一个内置运算符字典,该字典为常用运算符提供默认呈现属性。 这包括:

  • 隔离字符:(、、)[]}|{、、、、、和 CJK 窗体
  • 拉伸运算符: 箭头、括号、整型符号、字根、大括号上方/下方大括号和括号
  • 大型运算符: ∑、∏、∐、∫、∮、∮∮、⊕、⊗、⊙、⋂、⋃、⋀、⋁等。
  • 着色运算符: 底纹、波形符、宏、修饰字母 macron、breve、dot、acute、grave、caron、arrows (作为外标) 、大括号和括号
  • 可移动限制运算符: ∑、∏、⋂、⋃、lim、max、min 等

间距到组合重音转换

MathML (例如 U+02C6、U+02DC 波形符) 中的间距重音符会自动转换为组合形式,以用于 OMML 重音构造。 这是必需的,因为 MathML 在 中使用 <mo> 间距形式,而 OMML 需要组合字符。


MathML 导出 (Office 数学→ MathML)

输出格式

在大多数情况下,MathML 导出会生成 与 MathML 核心兼容的输出。 它避免了 MathML 3 旧版功能:

  • <mfenced>分隔表达式以显式<mo>打开器、内容和<mo>更接近方式编写<mrow>,但 OneNote 将数学复制到剪贴板除外。

  • No <maligngroup><malignmark> 将列添加到 , <mtable> 以将内容与 0 列间距的对齐点对齐。 请注意,列间距和对齐方式在整个生态系统中提供有限的支持。

  • 样式字符没有mathvariant属性:导出mathvariant="bold"<mi>从补充平面发出 Unicode 数学字母数字符号, (U+1D400-U+1D7FF) 或 U+2100–U+214F 范围内的类似 Unicode 字母的数学符号。 例如,粗斜 x 编写为 U+1D499 而不是 <mi mathvariant="bold-italic">x</mi> ,脚本 H 编写为 U+210B 而不是 <mi mathvariant="script">H</mi>。 特性 mathvariant="normal" 仅用于不应斜体化的多字符标识符。

一个例外是, <menclose> 它可能在导出的 MathML 中使用。

OMML 到 MathML 元素的映射

下表显示了如何将 OMML 元素转换为 MathML。

OMML 元素 MathML 输出
<m:oMathPara> <math display="block">
<m:oMath> (内联) <math>
<m:f> (分数,条形) <mfrac>
<m:f> (分数,无条形) <mfrac linethickness="0"> (二项式)
<m:f> (分数,倾斜) <mfrac bevelled="true">
<m:f> (分数、线性) <mrow>num<mo>/</mo>den</mrow>
<m:rad> (无学位) <msqrt>
<m:rad> 具有学位) 的 ( <mroot>
<m:d> (分隔符) <mrow><mo>(</mo>...<mo>)</mo></mrow>
<m:d> 带分隔符) 的 ( <mrow><mo>(</mo>...<mo>\|</mo>...<mo>)</mo></mrow>
<m:nary> <munderover><munder>、 或 <msub>/<msup> 运算符<mo>
<m:acc> <mover accent="true">
<m:bar> (顶级) <mover><mo> 条形字符
<m:bar> (底部) <munder><mo> 条形字符
<m:groupChr> <munder><mover> 具有分组字符
<m:limLow> <munder>
<m:limUpp> <mover>
<m:func> <mrow> with <mo>&#x2061;</mo> (ApplyFunction)
<m:sSub> <msub>
<m:sSup> <msup>
<m:sSubSup> <msubsup>
<m:sPre> 具有 <mprescripts/><mmultiscripts>
<m:m> (矩阵) <mtable> / <mtr> / <mtd>
<m:eqArr> <mtable> 具有对齐方式
<m:borderBox> <menclose notation="box">
<m:box> <mpadded>
<m:phant> <mphantom>
<m:r> (运行) <mi><mn><mo><mtext> ,具体取决于内容

导出期间写入的属性

属性 何时使用
display="block" 对于显示模式公式,为 打开<math>
mathvariant="normal" 应为正 (的多字符 <mi> ,例如函数名称)
mathcolor 当运行具有非默认的前景色时
mathbackground 当运行具有非默认背景色时
accent="true" 当超标为重音时,打开<mover>
accentunder="true" 当下标为重音时,打开<munder>
stretchy 对于拉伸分隔符和运算符,为 打开<mo>
separator="true" 用于分隔表达式中的分隔符的 On <mo>
fence="true" 用于围栏/方括号字符的 On <mo>
linethickness="0" 对于 <mfrac> 无条形分数 (二项式)
bevelled="true" 对于倾斜/内联分数,则为 On <mfrac>
columnalign 启用 <mtable><mtd> 用于列对齐
rowalign 启用 <mtable><mtr> 用于行对齐
notation 对于框/删除线样式,为 打开<menclose>

导出期间的字体处理

导出将字符转换为其 Unicode 数学字母数字等效项,而不是对带样式的字符使用 mathvariant 属性:

OMML 样式 Unicode 块 示例
粗体 U+1D400–U+1D433 A → 𝐀
斜体 U+1D434–U+1D467 a →
加粗倾斜 U+1D468–U+1D49B x → x
Script U+1D49C–U+1D4CF L → L
Fraktur U+1D504–U+1D537 g → g
双击 U+1D538–U+1D56B R → R
Sans-serif U+1D5A0–U+1D5D3 x → x
Monospace U+1D670–U+1D6A3 x → x

在某些情况下,将写入 U+2100–U+214F 范围内的 Unicode 类似字母的数学符号。

此方法生成与 MathML Core 兼容的输出,并且不依赖于属性的 mathvariant 呈现器支持。


字符编码

导入编码

MathML 导入程序接受以下编码的输入:

  • UTF-16LE - 通过剪贴板接收 MathML 时使用。
  • UTF-8 — 当从文件 ((例如 ODF 文档、HTML 文件) )读取 MathML 时使用。 输入开头的 XML 声明 (<?xml version="1.0" encoding="UTF-8"?>) 是可选的。

这两种编码都支持完整的 Unicode 范围。 对于 UTF-16LE, (U+10000 及更高) 的补充平面字符支持代理项对。

导出编码

  • UTF-16LE - 剪贴板输出的默认值。
  • UTF-8 — 用于基于文件的导出 (ODF、PDF 属性) 。

导出的 MathML 始终使用 Unicode 文本字符。 永远不会写入命名字符引用 (,例如 &alpha;) 。 仅当 XML 序列化程序要求 ((例如, &#x2061; 某些代码路径中的不可见运算符) )时才使用数字字符引用。


剪贴板支持

应用可以复制和粘贴 MathML,以便与支持 MathML 的其他应用实现良好的互操作性。

复制期间放置在剪贴板上的 MathML

剪贴板格式名称 说明
MathML MathML 演示文稿标记 (UTF-16LE)
MathML Presentation 与 相同的内容 MathML,注册为单独的格式,以便与使用此名称的应用程序兼容

CF_TEXT CF_UNICODETEXT如果用户启用了 和 格式选项,则还会使用 MathML 填充。

粘贴期间接受的格式

粘贴时,应用按以下优先级顺序检查数学特定格式的剪贴板:

  1. MathMLMathML Presentation
  2. CF_UNICODETEXT / CF_TEXT — 尝试导入为 MathML,如果成功,则保留。 否则,应用将继续尝试导入其他格式。

HTML

HTML 导入中的 MathML

当 MathML 嵌入在 HTML 文档中 (例如从网页粘贴或以 HTML 文件) 打开时,HTML 分析器会提取 <math>...</math> 块并将其传递给 MathML 导入程序。 在此上下文中,可识别超过 2,000 个 HTML 命名字符引用,包括:

  • 希腊文字母: &alpha;&beta;&Gamma;、等。
  • 运算符: &plus;&minus;&times;&InvisibleTimes;、等。
  • 关系: &le;&ge;&ne;&equiv;&subset;、等。
  • 箭头: &rarr;&larr;&harr;&Rightarrow;、等。
  • 类似字母: &Afr; () 、 &Aopf; (双打A) 、 &Ascr; (脚本A) 等。
  • 不可见运算符: &InvisibleTimes; (U+2062) 、 &ApplyFunction; (U+2061) 、 &InvisibleComma; (U+2063)

这些命名字符引用由 HTML 规范定义,而不是由 XML 或 MathML 定义。 导入仅支持和 &#945;) 等&#x03B1;数字字符引用的独立 MathML XML (时无法识别它们。

数学ML 作为 HTML 中带有 xmlns 前缀的 XML 数据岛也会导入,即使 Web 浏览器本身未将其呈现为数学。

HTML 导出中的 MathML

导出 HTML 时当前 编写 MathML。 HTML 导出中的公式呈现为图像或省略,具体取决于应用程序和导出设置。


打开文档格式 (ODF)

当以 Open Document Format (.odt.odp) 加载和保存文档时,MathML 用作公式格式。 加载和保存开放文档格式时,将按照上述相同方式导入和导出 MathML。


辅助功能

UI 自动化 (Windows)

在 Windows 上,每个公式的 MathML 表示形式通过自定义UI 自动化 (UIA) 属性在辅助功能树中公开。 屏幕阅读器等辅助技术可以读取此属性,以获取公式内容的结构化数学说明。

PDF/UA 导出

导出为 PDF 时,公式使用 PDF/UA 标记树中的 自定义属性MSFT_MathML 编写。 此属性包含公式的 MathML 标记。 支持此属性的 PDF 阅读器可以使用它使数学内容可供辅助技术访问。


限制

导入限制

  1. 不支持内容数学ML。 仅导入演示文稿数学ML。 将忽略内容 <annotation-xml> MathML 元素 (<apply><ci><cn><csymbol>、 等 ) 。

  2. <maction> 部分支持。 仅呈现 的第 <maction> 一个子级。 actiontype不支持属性和选择/切换行为。

  3. <mlabeledtr> 被视为 <mtr> 标签 (第一个子) 被视为常规 <mtd>

  4. <mstyle> 属性继承。 大多数属性都通过 <mstyle>继承,但某些复杂的继承链可能无法完全解析。

  5. <mpadded> 施 胶。widthheightdepthlspace 调整已分析,但映射到 OMML 虚拟构造,与 MathML 的灵活模型相比,这些构造的大小控制有限。

  6. 换行。 不支持数学ML 换行属性 (linebreaklinebreakstylelineleading等 ) 。

  7. <menclose> 表示法覆盖率。 仅支持一部分 notation 值。 忽略 (不支持的值,例如 phasoranglelongdivactuarial) 。

  8. <ms> 字符串呈现。 元素 <ms> 的处理方式 <mtext>与 类似。 可以识别自定义 lquoterquote 属性,但引用行为可能与 MathML 规范不同。

  9. 列/行跨越。 上的 rowspan<mtd>columnspan 属性已分析,但 OMML 矩阵不支持跨越,因此忽略这些属性。

  10. intent. 不支持 MathML 4 intent 属性。

导出限制

  1. <semantics><annotation> 导出的 MathML 不包括语义注释或替代表示形式。

  2. 无公式编号。 不导出公式数字/标记。

  3. 大小和颜色导出。mathsizemathcolormathbackground 不导出。

  4. 矩阵对齐。 从 OMML 导出列对齐方式,但复杂的对齐模式 (多个对齐组,对齐范围) 可能无法完全保留。

  5. 不可见运算符。 OMML 函数应用构造使用 <mo>&#x2061;</mo> (ApplyFunction 导出) ,但并非所有不可见的运算符区别都保留。

  6. HTML 导出中没有 MathML。 保存为 HTML 时,公式不编写为 MathML。

往返注意事项

  • 导入→导出: 将 MathML 导入 Office Math,然后导出回 MathML 会生成语义等效的输出,但标记结构可能有所不同。 例如, <mfenced> 在 输入中变为 <mrow> 输出 <mo> 中的元素。

  • mathvariant → Unicode 字母数字: 使用 mathvariant="bold" Unicode 数学字母数字符号 (U+1D400–U+1D7FF) 或 unicode 类似字母的数学符号 (U+2100–U+214F) 导出输入。

  • 字符引用→字符: HTML 输入中的命名字符引用 (例如, &alpha;) 导出为文本 Unicode 字符 (α) 。 两者在语义上相同。


要求

除非另有说明,否则此处所述的功能在 Microsoft 365 版本 2606 (适用于 Windows 的内部版本 20131.xxxxx) 和适用于 Mac 的版本 16.110 及更高版本中受支持。 早期版本支持此处所述的一些功能,但不是所有功能。