MathML memo

MathMLに関する 忘備録的なメモ。

MathML 紹介

何か?

数式をXMLで書くための文法。これにより、ブラウザでまともに数式を表示 したり、検索できるようになる。特に検索は非常に期待していて、 単なる単語の一致だけにとどまらず、「〜を積分している式」「〜が積の形で 含まれている式」などのように検索することが可能になる。

実際の例

例えば、TeXによる式を以下のように書く。


  \begin{equation}

   x = \cfrac{-b \pm \sqrt{b^2-4ac}}{2a} 

  \end{equation}



 \begin{equation}

  a = \left(

      \begin{array}{cc}

       1 & 2\\

       3 & 4

      \end{array}

     \right)

 \end{equation}

この結果は以下のよう。
これをMathMLで書くと、

  <math xmlns="http://www.w3.org/1998/Math/MathML">

    <mrow>

      <mi>x</mi>

      <mo>=</mo>

      <mfrac displaystyle="true" scriptlevel="0" >

        <mrow>

          <mrow>

            <mo>-</mo>

            <mi>b</mi>

            <mo>±</mo>

            <msqrt>

              <mrow>

                <mrow>

                  <msup>

                    <mi>b</mi>

                    <mn>2</mn>

                  </msup>

                  <mo>-</mo>

                  <mn>4</mn>

                  <mi>a</mi>

                  <mi>c</mi>

                </mrow>

              </mrow>

            </msqrt>

          </mrow>

        </mrow>

        <mrow>

          <mrow>

            <mn>2</mn>

            <mi>a</mi>

          </mrow>

        </mrow>

      </mfrac>

    </mrow>

  </math>



<br />



  <math xmlns="http://www.w3.org/1998/Math/MathML">

    <mrow>

      <mi>a</mi>

      <mo>=</mo>

      <mrow>

        <mo>(</mo>

        <mrow>

          <mtable>

            <mtr>

              <mtd columnalign="center" >

                <mrow>

                  <mn>1</mn>

                </mrow>

              </mtd>

              <mtd columnalign="center" >

                <mrow>

                  <mn>2</mn>

                </mrow>

              </mtd>

            </mtr>

            <mtr>

              <mtd columnalign="center" >

                <mrow>

                  <mn>3</mn>

                </mrow>

              </mtd>

              <mtd columnalign="center" >

                <mrow>

                  <mn>4</mn>

                </mrow>

              </mtd>

            </mtr>

          </mtable>

        </mrow>

        <mo>)</mo>

      </mrow>

    </mrow>

  </math>

とても人間が書くような内容とは思えない。

つまり、MathMLは機械寄りの記述方式であり、 何らかの入力支援もしくは変換によって生成されることが期待されている。

MathML 文法

MathMLには「Contents Martkup(内容記述)」「Presentation Markup(表 現記述)」の2種類ある。前者は数式を意味の上で記述する方式で、表現につ いては一切関与せず、データを数式として処理したいときに用いる。後者は内 容は全然関知しないが、とにかくTeXのように数式表現を書きたいときに用い る。また、両方を同時に用いるときの状況についても考慮されている。

表現記述

なんとなくTeXのをXMLで書いた感じ。括弧は自動的に大きさが調整される。

他にもいくつかある。これぐらいがよく使う。 いろいろオプションがある。詳しくはW3Cの仕様書を参照。

内容記述

そのうち書くかも。

MathML実装系

MathML表示関係

大抵の数式ツールはMathMLを扱うことが出来る。

Webブラウザでは、AmayaMozillaが有名。

変換系

Mozilla で MathML と SVG
MozillaでMathMLとSVGを扱う情報いろいろ。この中に、日本語TeX文書 からMathML付きXHTML文書への変換がかかれている。
TeX2MathML
拙作のJavaプログラム。Javaなのでマルチプラットフォームで、日本語 を含んだ表現も変換可能。SmartDocに統合され、SmartDocにTeX形式の数式を書くとMathMLに変換される。

桜井雅史: E-mail : m.sakurai@cmt.phys.kyushu-u.ac.jp
Web page : http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/
Last modified: Fri Nov 02 18:53:26 2001