Presentation MathML:如何在初等数学中正确放置十进制长加法的结转?
Presentation MathML: How to place carryovers of long addition of decimal numbers in Elementary Math correctly?
我正在尝试根据 Elementary Math for Long Addition 生成 MathML。从 W3 website 的例子中,只有没有小数点的赋值,例如
<mstack>
<mscarries crossout='updiagonalstrike'>
<mn>2</mn> <mn>12</mn> <mscarry crossout='none'> <none/> </mscarry>
</mscarries>
<mn>2,327</mn>
<msrow> <mo>-</mo> <mn> 1,156</mn> </msrow>
<msline/>
<mn>1,171</mn>
</mstack>
这将表示为:
所以,我刚刚创建了自己的 MathML 文件,其中包含带小数点的数字。我的 MathML 是:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
</msrow>
<mscarries>
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<none/>
</mscarries>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
结果是:
可以看到遗留物没有正确放置。它们从左边的(不可见的)小数点前开始,而不是从最右边的列开始到左边。
任何人都知道如何根据 MathML 使用初等数学正确放置这些遗留物? (我也尝试使用 stackalign='right'
作为 mstack
的属性,但它看起来也不太好。)
提前致谢!
据我所知,没有任何基于 Web 的 MathML 渲染器能够很好地支持 MathML 3 的所谓 "elementary math" 部分。
如评论中所述,fmath似乎不支持location="s"
。
WIRIS is closest (with minor visual glitches), MathJax's experimental extension 在这方面遇到了麻烦(由于其骇人听闻的 msline
技巧)但可以大致正确。
不幸的是,它们在错误方面有所不同,因此这里为每个示例提供了一个 MathML 示例。
以下在 WIRIS(但不是 MathJax)中运行良好:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<mscarries location="s">
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<mn>1</mn>
<none/>
<none/>
</mscarries>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
<none/>
</msrow>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
下一个与 MathJax(使用 mml3 扩展名,例如,使用 http://codepen.io/pkra/pen/QwbJWa)大致兼容,但不适用于 WIRIS。
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<mscarries position="-2" location="s">
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<mn>1</mn>
</mscarries>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
<none/>
</msrow>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
免责声明:我是 MathJax 团队的一员。
我正在尝试根据 Elementary Math for Long Addition 生成 MathML。从 W3 website 的例子中,只有没有小数点的赋值,例如
<mstack>
<mscarries crossout='updiagonalstrike'>
<mn>2</mn> <mn>12</mn> <mscarry crossout='none'> <none/> </mscarry>
</mscarries>
<mn>2,327</mn>
<msrow> <mo>-</mo> <mn> 1,156</mn> </msrow>
<msline/>
<mn>1,171</mn>
</mstack>
这将表示为:
所以,我刚刚创建了自己的 MathML 文件,其中包含带小数点的数字。我的 MathML 是:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
</msrow>
<mscarries>
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<none/>
</mscarries>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
结果是:
可以看到遗留物没有正确放置。它们从左边的(不可见的)小数点前开始,而不是从最右边的列开始到左边。
任何人都知道如何根据 MathML 使用初等数学正确放置这些遗留物? (我也尝试使用 stackalign='right'
作为 mstack
的属性,但它看起来也不太好。)
提前致谢!
据我所知,没有任何基于 Web 的 MathML 渲染器能够很好地支持 MathML 3 的所谓 "elementary math" 部分。
如评论中所述,fmath似乎不支持location="s"
。
WIRIS is closest (with minor visual glitches), MathJax's experimental extension 在这方面遇到了麻烦(由于其骇人听闻的 msline
技巧)但可以大致正确。
不幸的是,它们在错误方面有所不同,因此这里为每个示例提供了一个 MathML 示例。
以下在 WIRIS(但不是 MathJax)中运行良好:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<mscarries location="s">
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<mn>1</mn>
<none/>
<none/>
</mscarries>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
<none/>
</msrow>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
下一个与 MathJax(使用 mml3 扩展名,例如,使用 http://codepen.io/pkra/pen/QwbJWa)大致兼容,但不适用于 WIRIS。
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<mn>789.255</mn>
<mscarries position="-2" location="s">
<mn>1</mn>
<mn>1</mn>
<mn>1</mn>
<none/>
<mn>1</mn>
</mscarries>
<msrow>
<mo>+</mo>
<mn>56.86</mn>
<none/>
</msrow>
<msline/>
<mn>846.115</mn>
</mstack>
</math>
免责声明:我是 MathJax 团队的一员。