MathMLの2つのマークアップ

MathMLマークアップは大きく2種類に分かれます。プレゼンテーションとコンテントです。

プレゼンテーションマークアップ

プレゼンテーションマークアップは数式のレイアウトを表現します。数式のレイアウトは数式の書き方と言っても良いと思います。例えば1を4で割る、1÷4とも書けますし1/4とも書けますし、分数で書くこともできます。

<math>
<mn>1</mn>
<mo>÷</mo>
<mn>4</mn>
</math>

1÷4

<math>
<mn>1</mn>
<mo>/</mo>
<mn>4</mn>
</math>

1/4

<math>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
</math>

14

また、同じ数式の書き方をしても、表すものが同じとも限りません。xの対数logxと書いた場合に、暗黙的な底を何とするかは文脈なり分野によって異なるでしょうし、3+4iのiも虚数単位なのか、ただの変数なのか、それとも別の何かは文脈によります。

<math>
<mi>log</mi>
<mn>x</mn>
</math>

xの対数

<math>
<mn>3</mn>
<mo>+</mo>
<mrow><mn>4</mn><mi>i</mi></mrow>
</math>

3+4i

コンテントマークアップ

それに対して、コンテントマークアップはより抽象的・厳密に数式を表現します。1を4で割るなら、演算子「割る」をオペランド「1」と「4」に適用する、と表現します。それが最終的にどのような数式になるかは表現しません。また、対数虚数単位にも専用の要素があるため、より厳密に表現できます。

<math>
<apply>
<divide />
<cn>1</cn>
<cn>4</cn>
</apply>
</math>

1を4で割る

<math>
<apply>
<log /><!-- 暗黙的な底は10 -->
<ci>x</ci>
</apply>
</math>

xの自然対数

<math>
<apply>
  <plus />
  <cn>3</cn>
  <apply>
    <times />
    <cn>4</cn>
    <imaginaryi /><!-- 虚数単位 -->
  </apply>
</apply>
</math>

複素数3+4i

実際のマークアップ

MathMLとしてよく使われているのはプレゼンテーションマークアップで、一部のブラウザーによるサポートも進んでいます。EPUB 3.0で埋め込めるMathMLも基本的にはプレゼンテーションマークアップです(EPUB Content Documents 3.0)。

なお、MathMLではプレゼンテーションマークアップアノテーションとしてコンテントマークアップを埋め込むこともできます。また、コンテントマークアップアノテーションとしてプレゼンテーションマークアップを指定することもできます。