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 |
small、 normal、 big或 长度 |
继承 | 字号 |
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使用显式值替代 、 largeop、 separator和 fence 。
<mfrac> 属性
| 属性 | 值 | 默认值 | 说明 |
|---|---|---|---|
linethickness |
长度, medium 或 0 |
medium |
分数条粗细。
0 生成二项式系数 (无条形) 。
thin 和 thick 不受支持。 |
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不支持、 circle、 longdiv、 phasorangle和 roundedbox 。 |
多个表示法值可以组合 (空格分隔) 。
<munder>
/
<mover>
/
<munderover> 属性
| 属性 | 值 | 默认值 | 说明 |
|---|---|---|---|
accent |
true, false |
automatic |
overscript 是否为重音 |
accentunder |
true, false |
automatic |
下标是否为重音 |
<msub>
/
<msup>
/
<msubsup> 属性
subscriptshift 和 superscriptshift 不受支持。
<mtable> 属性
rowalign不支持、columnalign、rowspacingcolumnwidth、columnspacing、widthalignmentscope、frame、 和 framespacing 。
<mtr> 和 <mtd> 属性
rowalign不支持 、 columnalign、 rowspan和 columnspan 。
<mpadded> 属性
width不支持 、 lspace、 height和 depth 。
<mspace> 属性
width不支持 、 height和 depth 。
字符引用
Standard XML 数字字符引用 (√, √ 所有 MathML 输入都支持) 。
仅当 MathML 嵌入到 HTML 中时,≤才支持 html 命名字符引用 α (、⁢、 等 ) 。 这些不是 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>⁡</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 文本字符。 永远不会写入命名字符引用 (,例如 α) 。 仅当 XML 序列化程序要求 ((例如, ⁡ 某些代码路径中的不可见运算符) )时才使用数字字符引用。
剪贴板支持
应用可以复制和粘贴 MathML,以便与支持 MathML 的其他应用实现良好的互操作性。
复制期间放置在剪贴板上的 MathML
| 剪贴板格式名称 | 说明 |
|---|---|
MathML |
MathML 演示文稿标记 (UTF-16LE) |
MathML Presentation |
与 相同的内容 MathML,注册为单独的格式,以便与使用此名称的应用程序兼容 |
CF_TEXT
CF_UNICODETEXT如果用户启用了 和 格式选项,则还会使用 MathML 填充。
粘贴期间接受的格式
粘贴时,应用按以下优先级顺序检查数学特定格式的剪贴板:
-
MathML或MathML Presentation -
CF_UNICODETEXT/CF_TEXT— 尝试导入为 MathML,如果成功,则保留。 否则,应用将继续尝试导入其他格式。
HTML
HTML 导入中的 MathML
当 MathML 嵌入在 HTML 文档中 (例如从网页粘贴或以 HTML 文件) 打开时,HTML 分析器会提取 <math>...</math> 块并将其传递给 MathML 导入程序。 在此上下文中,可识别超过 2,000 个 HTML 命名字符引用,包括:
- 希腊文字母:
α、β、Γ、等。 - 运算符:
+、−、×、⁢、等。 - 关系:
≤、≥、≠、≡、⊂、等。 - 箭头:
→、←、↔、⇒、等。 - 类似字母:
𝔄() 、𝔸(双打A) 、𝒜(脚本A) 等。 - 不可见运算符:
⁢(U+2062) 、⁡(U+2061) 、⁣(U+2063)
这些命名字符引用由 HTML 规范定义,而不是由 XML 或 MathML 定义。 导入仅支持和 α) 等α数字字符引用的独立 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 阅读器可以使用它使数学内容可供辅助技术访问。
限制
导入限制
不支持内容数学ML。 仅导入演示文稿数学ML。 将忽略内容
<annotation-xml>MathML 元素 (<apply>、<ci>、<cn><csymbol>、 等 ) 。<maction>部分支持。 仅呈现 的第<maction>一个子级。actiontype不支持属性和选择/切换行为。<mlabeledtr>被视为<mtr>。 标签 (第一个子) 被视为常规<mtd>。<mstyle>属性继承。 大多数属性都通过<mstyle>继承,但某些复杂的继承链可能无法完全解析。<mpadded>施 胶。 、widthheight、depth和lspace调整已分析,但映射到 OMML 虚拟构造,与 MathML 的灵活模型相比,这些构造的大小控制有限。换行。 不支持数学ML 换行属性 (
linebreak、linebreakstyle、lineleading等 ) 。<menclose>表示法覆盖率。 仅支持一部分notation值。 忽略 (不支持的值,例如phasorangle、longdiv、actuarial) 。<ms>字符串呈现。 元素<ms>的处理方式<mtext>与 类似。 可以识别自定义lquote和rquote属性,但引用行为可能与 MathML 规范不同。列/行跨越。 上的
rowspan<mtd>和columnspan属性已分析,但 OMML 矩阵不支持跨越,因此忽略这些属性。intent. 不支持 MathML 4intent属性。
导出限制
否
<semantics>或<annotation>。 导出的 MathML 不包括语义注释或替代表示形式。无公式编号。 不导出公式数字/标记。
大小和颜色导出。
mathsize、mathcolor和mathbackground不导出。矩阵对齐。 从 OMML 导出列对齐方式,但复杂的对齐模式 (多个对齐组,对齐范围) 可能无法完全保留。
不可见运算符。 OMML 函数应用构造使用
<mo>⁡</mo>(ApplyFunction 导出) ,但并非所有不可见的运算符区别都保留。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 输入中的命名字符引用 (例如,
α) 导出为文本 Unicode 字符 (α) 。 两者在语义上相同。
要求
除非另有说明,否则此处所述的功能在 Microsoft 365 版本 2606 (适用于 Windows 的内部版本 20131.xxxxx) 和适用于 Mac 的版本 16.110 及更高版本中受支持。 早期版本支持此处所述的一些功能,但不是所有功能。