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 屬性來繪製無橫線的“分數”。在下一篇文章中,我們將繼續介紹基礎數學符號,並討論 指令碼

另見