MathML 分数和根

本文依靠文本容器,介绍了如何通过嵌套分数和根来构建更复杂的 MathML 表达式。

<mfrac>、<msqrt> 和 <mroot> 的子树

MathML 入门文章中,我们已经接触了 <mfrac> 元素来描述分数。让我们看一个基本示例,其中添加了根元素(<msqrt><mroot>)。

html
<math>
  <mfrac>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
  </mfrac>
</math>
<br />
<math>
  <msqrt>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
    <mtext>...</mtext>
    <mtext>childN</mtext>
  </msqrt>
</math>
<br />
<math>
  <mroot>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
  </mroot>
</math>

下面是浏览器渲染此内容的截图。

Screenshot of mfrac, msqrt, mroot

  • 我们已经知道 <mfrac> 元素被渲染成分数:第一个子元素(分子)绘制在第二个子元素(分母)上方,中间用一条水平线分隔。
  • <msqrt> 被渲染为平方根:其子元素像 <mrow> 一样布局,前面加上根号符号 √,并被一条横线完全覆盖。
  • 最后,<mroot> 元素被渲染为 n 次方根:第一个元素被根号符号覆盖,而第二个元素用作根的次数,并作为前缀的上标渲染。

嵌套不同元素

这里有一个练习,用于验证您是否理解了 MathML 子树与其视觉渲染之间的关系。文档包含一个 MathML 公式,您必须检查其中对应于该 MathML 公式子树的所有子树。完成后,您可以检查 MathML 公式源,并验证它是否符合您的预期。

可拉伸的根号符号

如前所述,<msqrt><mroot> 元素的横线会水平拉伸以覆盖其内容。但实际上,根号符号 √ 也会拉伸以与其内容一样高。

html
<math display="block">
  <mroot>
    <msqrt>
      <mfrac>
        <mn>1</mn>
        <mn>2</mn>
      </mfrac>
    </msqrt>
    <mn>3</mn>
  </mroot>
</math>

警告:通常需要 数学字体才能实现这种拉伸,上面的示例依赖于 Web 字体

无横线的“分数”

某些数学概念有时会使用类似分数的表示法,例如 二项式系数勒让德符号。使用 <mfrac> 元素来标记此类表示法是合适的。对于不绘制横线的类似分数表示法,请将 linethickness="0" 属性添加到 <mfrac> 元素。

html
<math display="block">
  <mrow>
    <mo>(</mo>
    <mfrac linethickness="0">
      <mn>3</mn>
      <mn>2</mn>
    </mfrac>
    <mo>)</mo>
  </mrow>
  <mo>=</mo>
  <mn>3</mn>
  <mo>≠</mo>
  <mfrac>
    <mn>3</mn>
    <mn>2</mn>
  </mfrac>
</math>

注意:虽然 linethickness 属性可以用来指定任意粗细,但最好保留默认值,该值是从数学字体中指定的参数计算得出的。

总结

在本课中,我们学习了如何使用 <mfrac><msqrt><mroot> 元素构建分数和根。我们注意到这些元素的某些特殊功能,即分数和根号符号。我们看到了如何使用 linethickness 属性来绘制无横线的“分数”。在下一篇文章中,我们将继续介绍基础数学符号,并讨论 脚本

另见