<mfenced>
要素が廃止されたことにより、古い MathML で記述された式は括弧が表示されないなどの混乱があります。
プレゼンテーションマークアップでは見栄えにより数式を表現します。例えば x2
は下記の様に表します。「二乗」という意味はなく、<msup>
を用いて 2
という数字を x
の右上に表示することを指示しています。
<math> <msup> <mi>x</mi> <mn>2</mn> </msup> </math>
コンテントマークアップでは数式を意味で表現します。例えば x2
は下記の様に表します。<power>
を用いて x
を 2
乗することを示しています。コンテントマークアップを表示できるブラウザはまだあまりありません。
<math> <apply> <power /> <ci>x</ci> <cn>2</cn> </apply> </math>
数式は <math>
~</math>
の間に記述します。
<math> <mi>x</mi><mo>+</mo><mi>y</mi> </math>
デフォルトではインライン要素として表示されますが display="block"
を指定するとブロック要素として表示します。
<math display="block"> <mi>x</mi><mo>+</mo><mi>y</mi> </math>
<mn>
(math number) は数字を示します。
<math> <mn>123</mn> </math>
<mo>
(math operator) は演算子を示します。
<math> <mn>5</mn> <mo>+</mo> <mn>3</mn> <mo>=</mo> <mn>8</mn> </math>
<mi>
(math identifier) は変数などの識別子を示します。
<math> <mi>a</mi> <mo>+</mo> <mi>b</mi> <mo>=</mo> <mi>c</mi> </math>
加減乗除(+ー×÷)は下記の様に表します。
<math> <mi>a</mi> <mo>+</mo> <mi>b</mi> <mo>−</mo> <mi>c</mi> <mo>×</mo> <mi>d</mi> <mo>÷</mo> <mi>e</mi> </math>
⁢
は下記のように見えない掛け算がある場所に記述します。
<math> <mi>a</mi> <mo>⁢</mo> <mi>x</mi> <mo>=</mo> <mi>c</mi> </math>
括弧は以前は <mfenced>
を使用していましたが、現在では <mo>(</mo>
~<mo>)</mo>
で表します。
<math> <mi>a</mi> <mo>×</mo> <mo>(</mo> <mi>b</mi> <mo>+</mo> <mi>c</mi> <mo>)</mo> </math>
# 古い書き方 <math> <mi>a</mi> <mo>×</mo> <mfenced> # 非推奨 <mrow> <mi>b</mi> <mo>+</mo> <mi>c</mi> </mrow> </mfenced> </math>
<mfrac>
は分数を表します。2個の子要素を持ち、一つ目が分母、二つ目が分子となります。
<math> <mfrac> <mn>5</mn> <mn>123</mn> </mfrac> </math>
分数は小さめに表示されるので CSS で mfrac のフォントサイズを 120% の大きさにしています。
mfrac { font-size: 120%; }
<mrow>
は式をグルーピングします。
<math> <mfrac> <mi>a</mi> <mrow> <mi>b</mi> <mo>+</mo> <mi>c</mi> </mrow> </mfrac> </math>
<msup>
は式を右上に表示します。累乗などを表現する際に用いられます。
<math> <msup> <mi>x</mi> <mn>2</mn> </msup> </math>
<msub>
は式を右下に表示します。
<math> <msub> <mi>x</mi> <mn>2</mn> </msub> </math>
<mover>
は式を上部に表示します。ベクトルなどに使用されます。
<math> <mover> <mi>v</mi> <mo>→</mo> </mover> </math>
<munder>
は式を下部に表示します。
<math> <munder> <mi>lim</mi> <mrow> <mi>x</mi><mo>→</mo><mi>∞</mi> </mrow> </munder> <mi>x</mi> </math>
<msubsup>
は式を右上と右下に表示します。
<math> <msubsup> <mi>x</mi> <mi>a</mi> <mi>b</mi> </msubsup> </math>
<munderover>
は式を上部と下部に表示します。
<math> <munderover> <mi>x</mi> <mi>a</mi> <mi>b</mi> </munderover> </math>
<mmultiscripts>
は式を右下・右上・左下・左上に表示します。右側と左側の境界には <mprescripts />
を挿入します。
<math> <mmultiscripts> <mi>x</mi> <mo>a</mo> <mo>b</mo> <mprescripts /> <mo>c</mo> <mo>d</mo> </mmultiscripts> </math>
順列を表現するには mmultiscripts
を使用します。右上と左上には <none />
を指定します。
<math> <mmultiscripts> <mi>X</mi> <none /> <mi>c</mi> <mprescripts /> <mi>b</mi> <none /> </mmultiscripts> </math>
総和(Σ)は <munderover>
を用いて表現します。
<math> <munderover> <mi>∑</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow> <mi>n</mi> </munderover> <msub><mi>k</mi><mi>i</mi></msub> </math>
<msqrt>
は平方根を表示します。
<math> <msqrt> <mi>2</mi> </msqrt> </math>
<mroot>
は累乗根を表示します。
<math> <mroot> <mi>x</mi> <mn>3</mn> </mroot> </math>
行列を表すには <mtable>
, <mtr>
, <mtd>
によるテーブルを用います。
<math> <mo>(</mo> <mtable> <mtr> <mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd> </mtr> <mtr> <mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd> </mtr> </mtable> <mo>)</mo> </math>
関数は下記の様に表します。(x)
が f
の引数であることを示すために ⁡
を記述します。
<math> <mi>f</mi> <mo>⁡</mo> <mo>(</mo> <mi>x</mi> <mo>)</mo> </math>
三角関数の場合にも ⁡
を指定します。
<math> <mi>sin</mi> <mo>⁡</mo> <mi>θ</mi> </math>
積分には <msubsup>
を使用します。
<math> <msubsup> <mo>∫</mo> <mi>a</mi> <mi>b</mi> </msubsup> <mrow> <mi>f</mi> <mo>⁡</mo> <mo>(</mo> <mi>x</mi> <mo>)</mo> <mi>d</mi> <mi>x</mi> </mrow> </math>
対数には <msub>
を使用します。
<math> <msub> <mi>log</mi> <mi>a</mi> </msub> <mi>x</mi> </math>
<mstyle>
を用いて色、フォントサイズなどのスタイルを指定することができます。
<math> <mstyle mathcolor="red" mathbackground="#fcc" mathsize="24pt"> <mn>3</mn><mo>+</mo><mn>2</mn><mo>=</mo><mn>5</mn> </mstyle> </math>
<mtext>
はテキストを記述します。
<math> <mtext>Text...</mtext> </math>
<ms>
は数式処理システムやプログラムなど他のシステムで解釈される文字列を記述します。
<math> <ms>String</ms> </math>
<merror>
はエラーを示します。
<math> <merror> <mrow> <mtext>Division by zero:</mtext> <mfrac> <mn> 1 </mn> <mn> 0 </mn> </mfrac> </mrow> </merror> </math>
<mspace>
は何らかの理由でスペースを開けたい場合に使用します。
<math> <mi>a</mi> <mspace width="2em" /> <mi>b</mi> </math>
<mpadded>
を用いて数式をパディングすることができます。
<math display="block"> <mpadded width="20em" height="1em" depth="5em" lspace="2em" voffset="-3em" style="background: lightblue"> <mi>x</mi> <mo>+</mo> <mi>y</mi> </mpadded> </math>
<mphantom>
は幻影の意味を持ち、見えない式を記述します。式の位置を揃えたい場合に使用します。
<math> <mi>2</mi><mo>⁢</mo><mi>x</mi><mo>=</mo><mn>6</mn> </math> <br> <math> <mphantom><mi>1</mi><mo>⁢</mo></mphantom><mi>x</mi><mo>=</mo><mn>3</mn> </math>
linebreak
や linebreakstyle
などの属性が定義されていますが、大半のブラウザではサポートされていません。
<math> <mn>2</mn><mo>+</mo><mn>3</mn> <mo linebreak="newline" linebreakstyle="after">=</mo> <mi>5</mi> </math>
display="block"
を指定することによりブロック要素として表示することができますがセンタリングされてしまいます。行間も狭いです。行間は margin-bottom
で制御できますが、センタリングは text-align
も効かないようです。
<math display="block"> <mn>2</mn><mi>x</mi><mo>+</mo><mn>3</mn><mi>x</mi><mo>=10</mo> </math> <math display="block"> <mi>x</mi><mo>=</mo><mn>2</mn> </math>
<div>
で囲むのが手っ取り早いかもしれません。
<div> <math><mn>2</mn><mi>x</mi><mo>+</mo><mn>3</mn><mi>x</mi><mo>=10</mo></math> </div> <div> <math><mi>x</mi><mo>=</mo><mn>2</mn></math> </div>
MDN では <mtable>
を使用していました。
<math> <mtable> <mtr><mtd><mn>2</mn><mi>x</mi><mo>+</mo><mn>3</mn><mi>x</mi><mo>=10</mo></mtd></mtr> <mtr><mtd><mi>x</mi><mo>=</mo><mn>2</mn></mtd></mtr> </mtable> </math>
<semantics>
を用いて数式に対して注釈をつけることができます。
<math> <semantics> <mrow> <msup> <mi>x</mi> <mn>2</mn> </msup> </mrow> <annotation-xml encoding="MathML-Content"> <apply> <power /> <ci>x</ci> <cn>2</cn> </apply> </annotation-xml> </semantics> </math>
<math> <mi>a</mi><mo>⁢</mo><msup><mo>x</mo><mn>2</mn></msup> <mo>+</mo> <mi>b</mi><mo>⁢</mo><mo>x</mo> <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn> </math>
<math> <mrow> <mi>x</mi> <mo>=</mo> <mfrac> <mrow> <mrow><mo>-</mo><mi>b</mi></mrow> <mo>±</mo> <msqrt> <mrow> <msup><mi>b</mi><mn>2</mn></msup> <mo>-</mo> <mrow><mn>4</mn><mo>⁢</mo><mi>a</mi><mo>⁢</mo><mi>c</mi></mrow> </mrow> </msqrt> </mrow> <mrow><mn>2</mn><mo>⁢</mo><mi>a</mi></mrow> </mfrac> </mrow> </math>
<math> <mi>E</mi> <mo>=</mo> <mi>m</mi> <mo>⁢</mo> <msup><mi>c</mi><mn>2</mn></msup> </math>
<math> <mi>i</mi><mo>⁢</mo><mi>ℏ</mi> <mo>⁢</mo> <mfrac> <mrow><mo>∂</mo><mi>ψ</mi></mrow> <mrow><mo>∂</mo><mi>t</mi></mrow> </mfrac> <mo>=</mo> <mo>−</mo> <mfrac> <msup><mi>ℏ</mi><mn>2</mn></msup> <mrow><mn>2</mn><mo>⁢</mo><mi>m</mi></mrow> </mfrac> <mo>⁢</mo> <mfrac> <mrow><msup><mo>∂</mo><mn>2</mn></msup><mi>ψ</mi></mrow> <mrow><mo>∂</mo><msup><mi>x</mi><mn>2</mn></msup></mrow> </mfrac> <mo>+</mo> <mi>V</mi><mo>⁡</mo><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>ψ</mi> </math>
MyScript というサイトの Math というデモサービスがすごいです。手書きの数式を MathML に変換してくれます。