3. MathMLの書き方

MathMLを含む一般的なHTML文書は, リスト3.1のように書きます. FireFoxで表示するには, 拡張子をxmlまたはxhtmlとします.

<?xml version="1.0" encoding="Shift_JIS" ?> ...(1)
<!DOCTYPE html  PUBLIC
  "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
  "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"> ...(2)
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" > ..(3)
<head>
   :
   : 省略
   :
</head>
<body>
  <p>数式
  <math xmlns="http://www.w3.org/1998/Math/MathML"> ...(4)
  <mrow> ...(5)
    <mi>x</mi> ...(6)
    <mo>+</mo> ...(7)
    <mn>1</mn> ...(8)
    <mo>=</mo>
    <mn>2</mn>
  </mrow>
  </math>
  を表示します.</p>
   :
   : 省略
   :
</body>
</html>
リスト3.1 MathMLを含む一般的なHTML文書

このリスト3.1図3.1のように表示されます.

数式 x+1=2 を表示します.

図3.1 MathMLを含む一般的なHTML文書の表示例

まず, MathMLを含むHTML文書全体について見ていきます. MathMLを含むHTML文書は, まず(1)のようなXML宣言で書き始めます. 次に, (2)のように, MathMLを含んだXHTMLのDTDを使うことを宣言します. 文書は, (3)のように, 通常のHTML文書と同じ書き出しで始めます. ただし, xmlns="http://www.w3.org/1999/xhtml"という名前空間の宣言を必ず書く必要があり, HTML文書で使われていたlang属性の代わりにxml:lang属性を使う必要があります. なお, XHTML1.0で使われるlang属性とxml:lang属性を併記する書き方はできません. また, リスト3.1は日本語環境でShift_JIS文字コードを書いた場合です.

お詫び

以前, MathMLマニュアルは, lang属性とxml:lang属性を併記する書き方で書かれていました. しかし, これは, 間違った書き方です. 申し訳ございませんでした.

実際に数式を書くところには, (4)のように, mathというHTMLにはないタグを使います. mathには, 1つ1つxmlns="http://www.w3.org/1998/Math/MathML"という名前空間の宣言を付ける必要があります.

次に, mathの中身を見ていきます. まず, (5)のmrowですが, これは, 数式の構成要素を横にまとめるタグです. このmrowは, mrowの中に入れ子にすることもできます. 例えば, リスト3.2のようにも, リスト3.1mathの中身を表すことができます. また, mathの中に入れるタグは, 必ずしもmrowである必要はありません. 後述するmi, mo, mn4. MathML Tips集で紹介する様々なタグを入れることができます.

  <mrow>
    <mrow>
      <mi>x</mi>
      <mo>+</mo>
      <mn>1</mn>
    </mrow>
    <mo>=</mo>
    <mn>2</mn>
  </mrow>
リスト3.2 mrowの入れ子の例

次に, mrowの中身を見ていきます. mrowの中には, mi( (6) ), mo( (7) ), mn( (8) )の3つのタグが含まれています. まず, miは, x,yといった記号や, sin,cosといった関数名を示すのに使われます. 次に, moは, +,-,=といった演算子を表すのに使われます. 演算には, ","や()等も含まれます. 最後に, mnは, 数字を表すのに使われます.

以上でMathMLの書き方については終りです. 4. MathML Tips集W3Cの仕様書を基にいろいろ試して見て下さい.