MathMLが今後どのように普及するか、未来を考えてみたい。このため、まずは、2017年11月時点での現状を整理してみる。
1. MathMLの作成
○数式エディタ
デザインサイエンス社のMathTypeは数式専用のエディタであり、編集した数式をMathMLで出力できる。MathTypeをWord、Pages、iBooksAuthorなどのワープロに組み込んで使える。
○WordのOOXMLから変換
Microsoft Wordはバイナリ文書(doc)形式の時代には、MathTypeの簡易版を組み込んでいた。Word文書形式がOffice Open XML(docx)形式になったWord 2007より独自開発の新しい数式エディタを内蔵している[1]。この新しい数式エディタで編集した数式は、OOMXL形式の文書中では独自の数式XML (Office Math Markup Language (OMML))で保存される[2]。このOMML形式の数式をWord内蔵のスタイルシートでMathMLに変換したり、Wordの編集画面から数式をコピーしてメモ帳にMathMLとして貼り付けることができる。
○TeXから変換
TeXマークアップをMathMLマークアップに変換するツールは様々なところからオープンソースとして提供されている。例えば、PagesとiBooks AuthorはLaTeXで数式を書くことができる。その場合は「blahtex」を使ってLaTeXで入力した数式をMathMLに変換している[3]。
○直接記述
PagesとiBooks AuthorはMathMLを直接記述して数式を入力できる[4]。
2. MathMLを使える主な配布形式の紹介
○XML文書
MathMLはXML形式のマークアップである。XMLではメインの文書の中に他の語彙によるマークアップを組み込む、名前空間という仕組が用意されている。名前空間を使えば任意のXML文書にMathMLを組み込むことができる。なお、以下に主なマークアップ語彙でのMathMLの採用例を挙げる。
○XHTML
XHTMLは、HTMLをXMLとして表現した語彙であり、上記の名前空間の機構をつかってMathMLを組み込むことができる。
○HTML5
HTML5は、MathMLの語彙をHTML5の要素と同様に扱ってHTML5文書中に記述できる(ネイティブサポートという)。こうして組み込まれたMathMLによる数式の解析は、XMLとして組み込まれたときの解析とは若干の相違が生じる。MathMLのバージョン3仕様も、HTML5に組み込むために改訂された(MathML3.0 Second Edition)。
XHTMLとHTMLでどのような点が異なるかはMathML 3.0仕様書に整理されている[5]。
○EPUB3
EPUB3.1は、MathMLを本文中に組み込むことができる。但し、若干の制約が付いている[6]。
○JATS
Journal Article Tag Suite (JATS) の正式版V1.1および安定ドラフト版V1.2d1は、いずれもMathMLを組み込める。数式の最上位は<mml:math>である。
○DITA
DITA 1.2まではDITAでMathMLを使おうとするとDITA 1.1で導入されたforeign要素を特殊化してMathMLを使えるようにする必要があった。DITA 1.3では数式とMathMLの二つのドメインが追加された。MathMLドメインを使えば特殊化する必要がなくなった[7]。
○DAISY
DAISYコンソーシアムのMathML in DAISY Working GroupはDAISY3標準で数式をアクセシブルにするための仕様の策定を最優先課題としている[8]。
3. MathMLのレンダリング
(1) 可視化(ビジュアルレンダリング)
○ブラウザネイティブ
FireFoxはMathMLをブラウザ自体の機能で可視化できる。但し、MathMLの要素や属性などを完全にサポートしている状態ではない。MathJax、KaTeX、MediaWIkiに対して、FireFoxのネイティブなMathMLレンダリングを強制するためのAdd-onも用意されている[9]。
Safariは5.1からMathMLをサポートしている。それはボランティアによるWebKitの改善努力に依存するものであまり高精度とは言えなかった[10]。しかし、IgaliaによるWebKitの改善が続けられている[11]。
Chrome、EdgeはMathMLをサポートしていない。
Microsoft DevelopperのページではMathMLサポートに関する投票が行われている[12]。
○MathJaxによるサポート
MathJaxはMathMLをサポートしないブラウザの上で、MathMLを表示するJavaScriptプログラムである。MathJaxは多くの学会や団体が支援しており、最も成功したオープンソースの一つとして普及している。MathJaxの最新版は2.7(2017年8月リリース)である。
MathJaxは、現在、3.0を開発中である。3.0ではアーキテクチャが根本的に変更になることが告知されている[13]。
○プラグイン数式レンダラ
デザインサイエンス社のMathPlayerは、当初は、IEのプラグインとして普及した。しかし、IE10以降ではMathPlayerをプラグインとして使うためのAPIが禁止になってしまった。
○XML組版ソフト
(2) 読み上げ(音声レンダリング)
○デザインサイエンス社のMathPlayerは、MathMLを音声で読むことができる[14]。MathPlayerは無料で配布されている。
4.MathMLの歴史
W3C 勧告の歴史はMathML勧告のバージョン史[15]にまとめられている。
1998年4月に MathML 1.0
2001年2月に MathML 2.0 (2003年10月 Second Edition)
2010年10月に MathML 3.0 (2014年4月 Second Edition) Second Editionでは、主にHTML5でMathMLを使うのに適合するようにXMLのパースに関する前提条件の変更の改訂がなされた。
5. まとめ
MathMLは、ドキュメントをXMLで記述するときに、数式を表現する技術として重要な存在である。必ずしも常に順風満帆という状態ではないが、徐々に普及していることが確かめられる。XML以外ではHTML5でもネイティブにサポートされている。但し、ブラウザのネイティブレンダリングに向けて足並みが揃っている状態ではない。MicrosoftのEdgeのプロジェクトでMathMLサポートへの投票が行われているが、投票者のコメントを見ると視覚障害者から熱烈な要望が多いようだ。
[1] Office2007の新しい数式エディタ
[2] 22.1 Math “ECMA-376-1:2016 Office Open XML File Formats — Fundamentals and Markup Language Reference” October 2016
[3] Pages および iBooks Author での LaTeX と MathML の対応について
[4] Pages で書類に方程式を追加する、iBooks Author: LaTeX、MathML、または MathType で数式を追加する/編集する
[5] 6.4.3 Mixing MathML and HTML “Mathematical Markup Language (MathML) Version 3.0 2nd Edition”
[6] 2.5.1 Embedded MathML “EPUB Content Documents 3.1
Recommended Specification” 5 January 2017
[7] B.2.1 Changes from DITA 1.2 to DITA 1.3 “Darwin Information Typing Architecture (DITA) Version 1.3 Part 0: Overview”
[8] MathML
[9] Mozilla MathML Status、Native MathML
[10] WebKitの数式(MathML)でSafariはボランティアの努力を採用し、数式を表示できる。Chromeは同じものを不採用として批判を浴びる。
[11] Improvements in MathML Rendering
[12] How can we improve the Microsoft Edge developer experience? MathML
[13] MathJax V3開発は、根本的な方針変更となる
[14] MathPlayer Can Speak!
[15] MathML Recommendation Version History
【広告】
「MathML数式組版入門 Ver 1.1」