MathML <mo> 标签换行小数点

MathML <mo> tag wrapping a decimal point

我在使用我们的学习管理系统 (LMS) 中内置的 MathML 编辑器时发现了一些奇怪的东西。当我输入浮点数时,它用 <mo> 标记包裹小数点。

例如,我希望 1.2 输出为:

<mn>1.2</mn>

然而,编辑器输出:

<mn>1</mn>
<mo>.</mo>
<mn>2</mn>

我很好奇是否有人可以确认这两个输出是否相等,以便我知道是否请求修复。

由于 <mo> 标记是表示 MathML,我敢说这两种表示法是等价的。此外,任何编辑都可能很难决定像 3.5、3·5、3'5 这样的表达式是十进制数还是其他与用户的文化和意图无关的东西。

我认为有几个方面。

它们在视觉上呈现相同吗?

没有。 大多数渲染器会在句点周围添加 space,因为 MathML operator dictionary 指定 . 作为中缀运算符。

在 MathML 中写 1.2 的首选方式是什么。

是。<mn>1.2</mn>。参见 the mn examples in the spec

它们在语义上是否相同?

这可能是一个见仁见智的问题。我会争辩说他们不是。使用最小的上下文(例如,lang=en 某处),很清楚 <mn>1.2</mn> 的意思,而 <mn>1</mn><mo>.</mo><mn>2</mn> 更通用(特别是,因为它违背了规范的建议)。

AT 会为非视觉用户呈现相同的效果吗?

No. 例如 MathPlayer(JAWS、NVDA、Dolphin 使用的)会将 <mn>1.2</mn> 发声为 "one point two",将 <mn>1</mn><mo>.</mo><mn>2</mn> 发声为 "one dot two"。 ChromeVox 会将后者发音为 "one period two"。