MathML 入門

在本文中,我們將使用一個簡單的 HTML 文件,看看如何向其中新增 MathML 公式,並介紹一些元素。

透過 <math> 元素在 HTML 中插入公式

MathML 使用與 HTML 相同的語法來表示元素和屬性的樹。特別是,每個數學公式都由一個 <math> 元素表示,該元素可以放置在 HTML 頁面中。在下面的文件中,它位於文字段落內

html
<!doctype html>
<html lang="en-US">
  <head>
    <title>My first math page</title>
  </head>
  <body>
    <p>
      The fraction
      <math>
        <mfrac>
          <mn>1</mn>
          <mn>3</mn>
        </mfrac>
      </math>
      is not a decimal number.
    </p>
  </body>
</html>

<mfrac> 元素指定一個分數,其第一個子元素是分子,第二個子元素是分母。在瀏覽器中渲染如下:

警告: 如果您看到的不是分數而是“1 3”,則表示您的瀏覽器可能不支援 MathML。有關更多詳細資訊,請檢視 瀏覽器相容性表

display 屬性

請注意,在前面的示例中,公式與段落文字在同一行。然而,通常的做法是將大型數學公式居中顯示在自己的行上,如下所示。要實現這一點,您需要將 display="block" 屬性附加到 <math> 元素上。

您可能還會注意到外觀上的一些細微變化:分數文字和垂直間距會稍微變大。沒有 display="block" 屬性時,高度會最小化,以避免干擾周圍文字的流動。有了 display="block" 屬性後,則優先考慮數學公式的可讀性。

注意: 這對應於 LaTeX 中行內公式(用美元符號 $...$ 分隔)和顯示公式(用 \[...\] 分隔)的概念。

注意: 上面提到的外觀變化實際上由 math-style 屬性控制,對於 <math display="block">,該屬性預設為 normal,否則為 compact。在某些 MathML 子樹中,此屬性可以自動變為 compact,但在本次入門教程中我們將忽略此細節。同樣,這與 LaTeX 類似。

<mrow> 元素進行分組

<math> 元素實際上可以包含任意數量的子元素,並將它們排列成一行。例如,“1 + 2 + 3”這個簡單的公式在 MathML 中將這樣編碼:

html
<math>
  <mn>1</mn>
  <mo>+</mo>
  <mn>2</mn>
  <mo>+</mo>
  <mn>3</mn>
</math>

<mrow> 元素是一個通用容器,它執行類似的佈局,但可以放置在 MathML 子樹的任何位置。它有助於將多個元素分組。例如,下面分數的分子(其第一個子元素)是“one plus two”。

html
<math>
  <mfrac>
    <mrow>
      <mn>1</mn>
      <mo>+</mo>
      <mn>2</mn>
    </mrow>
    <mn>3</mn>
  </mfrac>
</math>

輪到你了:編寫巢狀表示式

作為練習,請嘗試只使用我們到目前為止看到的 MathML 元素來編寫以下表達式。如果您遇到困難或想驗證解決方案,請檢視示例的原始碼。

總結

在本文中,我們研究瞭如何使用 <math> 元素在 HTML 文件中插入數學公式。我們瞭解了使用 display="block" 和不使用 display="block"<math> 元素之間的渲染差異。此外,我們還遇到了其他幾個 MathML 元素:用於分數的 <mfrac>,用於分組的 <mrow>,以及一些文字元素。我們將在下一篇文章中進一步分析這些 文字容器

另見