数式とWeb

この記事では ウェブページで 数式を表示するためのMathMLとMathJaxの2つの技術を紹介します。MathMLは普及に失敗した標準で、一方の MathJax は事実上の標準となっています。

MathML

MathML 数式を記述するためのマークアップ言語である。文書の中で数式を扱うにはには MathML を XHTMLに埋め込んで記述します。

MathML の歴史

  • 1999年7月にMathML規格バージョン1.01がW3CのMathワーキンググループから勧告
  • 2001年2月にバージョン2.0が勧告
  • 2003年10月にバージョン2.0第2版が勧告
  • 2010年5月にSTIX Fonts を公開
  • 2010年10月にバージョン3.0が勧告

Web ブラウザでのMath MLのレンダリングの品質はインストールされているフォントに依存しており、Microsoft Windows OS では Cambria Mathフォントが使用できます。また、STIXフォントプロジェクトではオープンライセンスのSTIX Fonts を配布しています。

MathMLは人間がMathMLを直接書いたり編集したりするのには向かず数式エディタ無しで扱うのは難しい。また対応するWebブラウザーが限られ殆ど普及していません。

以下は二次方程式の解の公式の記述例です。

<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>

このように煩雑な記述となります。MathML は ドナルド・クヌースが1978年に公開した TeX と比較して明らかに劣る技術です。MathML が普及しなかったのは当然と言えるでしょう。

MathJax

MathJax は ウェブブラウザ上で数式表示するクロスブラウザのJavaScriptライブラリです。MathML、LaTeX、ASCIIMathMLで記述することができます。MathJaxは Apache License で公開されています。MathJaxは MathML と異なりフォントやプラグインに依存していません。したがってJavaScriptに対応したあらゆるブラウザでの動作を可能しています。

世界最大の数学論文データベース MathSciNetは MathJax を採用しています。このことから数学研究の世界ではウェブでの数式表示に関して MathJax が標準になったことを意味していると言えます。

MathJax は YOSBITS のサイトの 数式表示にも利用しています。

MathJax の利用方法

MathJax ライブラリは CDN が用意されていますので 次の記述でロードできます。Wordpress のような CMS でもライブラリをCMSサーバーに準備せずに簡単に利用することができます。

<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
MathJax での記述例
二次方程式の解の公式を latex コマンドを使用して記述しています。

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

$$x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a}$$

ブラウザに表示されているMathJax数式上のコンテキストメニューから MathML や LaTeX形式 でコピーすることができます。