MathMLを含むHTML文書を書く場合, 大きく分けてHTML構文で書く方法とXML構文で書く方法の2つがあります.
HTML構文で書く場合, リスト1のように書きます. Firefoxで表示するには, 拡張子をhtmlとします. なお, Firefoxはバージョン4.0以降である必要があります. ちなみに, この場合, MathMLのバージョンは最新のものとなります. 2024年現在, 最新の勧告はMathML3で, MathMLコアとMathML4が勧告に向けて作業中です.
<!DOCTYPE html> ...(1) <html lang="ja"> ...(2) <head> <meta charset="UTF-8"> ...(3) : : 省略 : </head> <body> <p>数式 <math> ...(4) <mrow> ...(5) <mi>x</mi> ...(6) <mo>+</mo> ...(7) <mn>1</mn> ...(8) <mo>=</mo> <mn>2</mn> </mrow> </math> を表示します.</p> : : 省略 : </body> </html>リスト1 MathMLを含む文書(HTML構文で書く場合)
このリスト1は図1のように表示されます.
はじめに, 文書全体について見ていきます. HTML構文で書く場合, まず(1)のように書き始めます. HTML4以前の文書や従来のXHTMLと違い, PUBLIC
から先の宣言部分は書かなくてもかまいません. (2)のようにhtml
のタグには, 後で述べるXML構文のようなxmlns="~"
といった名前空間宣言は書きません. なお, 従来のHTML4以前から利用されているlang
属性を使用します. また, HTMLでは, UTF-8文字コードで書くのが標準であり, (3)のように指定します.
実際に数式を書くところには, (4)のように, math
という元々のHTMLにはないタグを使います. ここでも, 後で述べるXML構文のような名前空間宣言は書きません.
続いて, math
の中身を見ていきます. まず, (5)のmrow
ですが, これは, 数式の構成要素を横にまとめるタグです. このmrow
は, mrow
の中に入れ子にすることもできます. 例えば, リスト2のようにも, リスト1のmath
の中身を表すことができます. また, math
の中に入れるタグは, 必ずしもmrow
である必要はありません. 後述するmi
, mo
, mn
など様々なタグを入れることができます.
<mrow> <mrow> <mi>x</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>=</mo> <mn>2</mn> </mrow>リスト2
mrow
の入れ子の例
最後に, mrow
の中身を見ていきます. mrow
の中には, mi
( (6) ), mo
( (7) ), mn
( (8) )の3つのタグが含まれています. まず, mi
は, x,yといった記号や, sin,cosといった関数名を示すのに使われます. 次に, mo
は, +,-,=といった演算子を表すのに使われます. 演算子には, コンマ","やカッコ()等も含まれます. 最後に, mn
は, 数字を表すのに使われます.
また, πやⅇといった特殊な文字を入力する場合, πやⅇといった名前付き文字参照(実体参照)を利用すると便利です. HTML構文では, 特別に宣言などを書かなくても名前付き文字参照を利用できます.
XML構文で書く場合, リスト3のように書きます. 従来は, 2.2 従来のXHTMLで書く場合のとおりDTD宣言を含めた妥当な文書として書いていました. 現在は, DTD宣言を含めない整形式の文書として書くことが一般的です. Firefoxで表示するには, 拡張子をxmlまたはxhtmlとします. ちなみに, この場合, MathMLのバージョンは最新のものとなります.
<?xml version="1.0" encoding="UTF-8" ?> ...(1) <!DOCTYPE html> ...(2) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> ...(3) <head> <meta charset="UTF-8"/> ...(4) : : 省略 : </head> <body> <p>数式 <math xmlns="http://www.w3.org/1998/Math/MathML"> ...(5) <mrow> <mi>x</mi> <mo>+</mo> <mn>1</mn> <mo>=</mo> <mn>2</mn> </mrow> </math> を表示します.</p> : : 省略 : </body> </html>リスト3 MathMLを含む文書(XML構文で書く場合)
このリスト3は図2のように表示されます.
XML構文で書く場合, まず(1)のようなXML宣言で書き始めます. 次に, (2)のように, HTML文書であることを宣言します. 文書は, (3)のように, 従来のHTML文書と同じ書き出しで始めます. ただし, xmlns="http://www.w3.org/1999/xhtml"
という名前空間の宣言を必ず書く必要があり, 従来のHTML文書で使われていたlang
属性の代わりにxml:lang
属性を使う必要があります. なお, XHTML1.0で使われるlang
属性とxml:lang
属性を併記する書き方はできません. また, リスト1はUTF-8文字コードを書いた場合で, meta
タグを書く際は(4)のように書きます.
実際に数式を書くところには, (5)のようにmath
というタグを使います. XML構文では, math
に1つ1つxmlns="http://www.w3.org/1998/Math/MathML"
という名前空間の宣言を付ける必要があります.
πやⅇといった特殊な文字を入力する場合, πやⅇといった名前付き文字参照(実体参照)を利用すると便利です. ただし, 整形式の文書ではDTD宣言を書いていないので, そのままでは利用できません. 利用する場合, リスト4のように書きます.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html [ <!ENTITY % htmlmathml-f PUBLIC "-//W3C//ENTITIES HTML MathML Set//EN//XML" "http://www.w3.org/2003/entities/2007/htmlmathml-f.ent"> %htmlmathml-f; ...(6) ]> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta charset="UTF-8"/> : : 省略 : </head> <body> <p>数式 <math xmlns="http://www.w3.org/1998/Math/MathML"> <msub> <mi>log</mi> <mi>ⅇ</mi> ...(7) </msub> <mo>⁡</mo> <mi>x</mi> </math> を表示します.</p> : : 省略 : </body> </html>リスト4 MathMLを含む文書(XML構文で書く場合:名前付き文字参照の利用方法)
このリスト4は図3のように表示されます.
名前付き文字参照を利用する場合, (6)のように名前付き文字参照の宣言を含む外部のファイルを読み込む必要があります. こうすることで, (7)のように名前付き文字参照を利用できます. なお, この方法はFirefoxでは正しく読み込まれますが, 他のブラウザでは読み込まれない場合があります.
MathML3は, 名前付き文字参照だけではなく数値文字参照の利用方法も挙げています. 数値文字参照を利用する場合, リスト5のように書きます.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html> ...(8) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta charset="UTF-8"/> : : 省略 : </head> <body> <p>数式 <math xmlns="http://www.w3.org/1998/Math/MathML"> <msub> <mi>log</mi> <mi>ⅇ</mi> ...(9) </msub> <mo>⁡</mo> <mi>x</mi> </math> を表示します.</p> : : 省略 : </body> </html>リスト5 MathMLを含む文書(XML構文で書く場合:数値文字参照の利用方法)
数値文字参照を利用する場合, (8)のように特別なファイルの読み込みは不要で, (9)のように数値文字参照を直接書くことができます.
従来は, XHTMLで書く場合にリスト5のようにDTD宣言を含めた妥当な文書として書いていました. Firefoxで表示するには, 拡張子をxmlまたはxhtmlとします. ちなみに, この場合MathMLのバージョンはMathML2となります.
<?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"> ...(10) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"/> ...(11) : : 省略 : </head> <body> <p>数式 <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>x</mi> <mo>+</mo> <mn>1</mn> <mo>=</mo> <mn>2</mn> </mrow> </math> を表示します.</p> : : 省略 : </body> </html>リスト6 MathMLを含む文書(従来のXHTMLで書く場合)
このリスト6は図4のように表示されます.
従来は, XHTMLで書く場合, (10)のように, MathMLを含んだXHTMLのDTDを使うことを宣言するのが一般的でした. また, リスト6は日本語環境でShift_JIS文字コードを書いた場合で, (11)のように文字コードを指定していました.
また, 従来のXHTMLの書き方はDTD宣言を書いているので, この中に名前付き文字参照の宣言が含まれています. そのため, 名前付き文字参照を利用できます.