MathJax

MathJax はMathML、LaTeX、ASCIIMathMLで記述された数式をウェブブラウザ上で表示するクロスブラウザのJavaScriptライブラリである。MathJaxはApache Licenseのもとでオープンソースソフトウェアとしてリリースされている。

先行のJavaScript数式フォーマットライブラリのの後継としてMathJaxプロジェクトは2009年に開始し.、アメリカ数学会によって管理されている。プロジェクトはアメリカ数学会、デザインサイエンス社、応用数理学会によって設立され、米国物理学協会やStack Exchange Networkのような多数のスポンサーによってサポートされている。

MathJaxはarXiv、エルゼビアのScienceDirect、MathSciNet、、MathOverflow、ウィキペディア（バックエンドで）、スカラーペディア、Project Euclid journals、New features in IEEE Xplore, retrieved 2015-04-20.、、コーセラ、を含むウェブサイトで利用されている。

 特徴 
MathJaxをウェブページコンテンツと一緒にダウンロードし、ページ中の数式マークアップを走査し、数式を組版する。したがって、MathJaxは読者のシステム上にソフトウェアや追加フォントをインストールする必要はない。これはモバイルデバイスを含むJavaScriptに対応したあらゆるブラウザでの動作を可能にする。

MathJaxはHTMLとCSSの組み合わせを使用するか、対応していればブラウザのネイティブMathMLサポートを使用することで数式を表示することができる。MathJaxが数式を組版するために使う厳密法はユーザのブラウザ、ユーザのシステム上で利用可能なフォント、コンフィグレーション設定によって決定される。MathJax v2.0-betaはSVGレンダリングを導入した。

HTMLとCSSによる組版の場合、利用可能ならば数式フォントを使用し、古いブラウザでは画像に頼ることで、MathJaxは数式表示品質を最大限にする。Webフォントをサポートする新しいブラウザでは、MathJaxは必要に応じてダウンロードするWebフォントの包括的なセットを提供する。ブラウザがWebフォントをサポートしない場合、MathJaxは有効なフォントがユーザのシステム上で利用可能かチェックする。これが機能しない場合、MathJaxは必要な記号の画像を提供する。MathJaxはWebフォント、ローカルフォント、イメージフォントを有効・無効に設定することができる。

MathJaxはウェブページで数式を含むためにSTIXフォントを使用する。ローカルコンピュータ上にそのフォントをインストールすることでMathJaxの組版速度が向上するMathJax Font Help  accessed 2012-08-14.。

MathJaxはLaTeXまたはMathMLのマークアップで記述された数学的表記を表示することができる。MathJaxは数式表示のためのものであり、LaTeXは文書レイアウト言語なので、MathJaxは数学的表記を記述するために使用されるLaTeXのサブセットだけをサポートする。

基本的なWAI-ARIAの“role”と古い“altext”属性と同様に、支援技術ソフトウェアに自身のAPIを通してMathMLを公開することによって、MathJaxは数式のアクセシビリティもサポートする。

MathJaxアーキテクチャはダイナミックにロードしたモジュールによって将来的に入力言語や表示方法の追加をサポートするように設計されている。MathJaxはページの数式インスタンスと一緒に列挙と対話のためのJavaScript APIも含む。

 ブラウザの互換性 
MathJaxはInternet Explorer 6、Firefox 3、Google Chrome 0.3、Safari 2.0、Opera 9.5、iPhone/iPad Safari、Androidブラウザを含む代表的なブラウザで数式をレンダリングする。いくつかの古いバージョンのブラウザはWebフォント（@font-face CSS構文）をサポートしないので、それらはMathJaxイメージフォントモードを使う必要がある。ブラウザ互換性リストは公式サイトで入手できる。

プラグインサポート
MathJaxはMediaWiki、Drupal、WordPress、Joomla!を含む多くのポピュラーなウェブプラットフォームに容易に追加することができる。

Node.js
MathJax は、バージョン3からNode.jsで使用できる。バージョン2では、MathJax-nodeライブラリがNode.jsとの互換性を提供している。

数式エディタの互換性
ブラウザに表示されているMathJax数式は、右クリックまたはControl-クリックした場合、サブメニュー「Show Math As」でMathMLやLaTeX形式でコピーすることができる。コピーした数式はMathematica、MathType、、のようなMathMLやLaTeXをサポートする数式エディタにペーストできる。

MathMLやLaTeX形式で生成されたサードパーティの数式エディタによる数式はMathJax対応のウェブページで利用できる。

 TeXサポート 
MathJaxはLaTeXの数学環境コマンドを再現する。エクステンションを介してAMS-LaTeX数学コマンドがサポートされる。MathJaxはTeXマクロや、\color や \underline のような種々の書式設定をサポートする。

 MathMLサポート 
MathJaxはbeta 2リリースでMathML 2.0と、MathML 3.0のいくつかのコンストラクトの部分的なサポートを追加した。MathJaxはPresentation MathMLをサポートし、さらにバージョン2.2以降、content MathMLの実験的サポートを提供する。

 CDN 
MathJaxはコンテンツデリバリネットワーク(CDN)を提供しており、MathJaxをブラウザで表示する際にJavaScriptを読み込むことができる。これにより、インストールが不要になり、また、最新バージョンのライブラリを使用することができる。このサーバーの使用量は、2011年の月間トラフィック1.3TBから、2017年には月間70TBへ増加した。サーバーのホスティングコストが上昇したため、メインのCDNサーバーは2017年4月30日に停止したが、代替のサードパーティCDNサーバーは利用可能である。

 関連項目 


 ASCIIMathML
 KaTeX - MathJaxに代わるJavaScript

 脚注 

 外部リンク 

 GitHub page
 Twitter
 Facebook
 About web fonts
 Mathjax Tutorial
 Easy Copy MathJax （コマンドを簡単にコピーできる）
 MediaWiki extensions:
 SimpleMathJax
 MathJax

Category:オープンソースソフトウェア
Category:数学に関する記事
Category:ウェブ開発
Category:ウェブ技術
Category:JavaScript
Category:ウェブサイトの構成