| 数学マークアップ言語 | |
| 略語 | 数学ML |
|---|---|
| ネイティブ名 |
|
| 状態 | W3C勧告[2] |
| 初版 | 1998年4月 |
| 最新バージョン | 3.0 [2] 2014年4月10日[2] |
| 組織 | W3C、ISO、IEC [1] |
| 委員会 |
|
| 編集者 |
|
| 著者 | 主要著者
|
| 基本基準 | テキスト |
| 関連規格 | OpenMath、Office Open XML、OMDoc |
| Webサイト |
|
数学マークアップ言語(MathML)は数学マークアップ言語であり、数学表記を記述し、その構造と内容の両方をキャプチャするためのXMLのアプリケーションであり、数ある数学マークアップ言語の1つです。その目的は、数式をワールドワイドウェブページやその他のドキュメントにネイティブに統合することです。HTML5の一部であり、 2015年からISO / IECによって標準化されています。 [1]
歴史
HTML での数学的マークアップの提案に基づくArena ブラウザでのいくつかの実験の後、 [4] MathML 1 が 1998 年 4 月に W3C 勧告としてリリースされ、 W3Cが推奨する最初のXML言語となりました。この形式のバージョン 1.01 は 1999 年 7 月にリリースされ、バージョン 2.0 は 2001 年 2 月に登場しました。この仕様の実装はAmaya 1.1、Mozilla 1.0、Opera 9.5で登場しました。[5] [6] 2003 年 10 月、 MathML バージョン 2.0 の第 2 版がW3C 数学ワーキング グループによる最終リリースとして公開されました。
MathMLはもともとXML名前空間が確定する前に設計されました。しかし、名前空間勧告が完成した直後に名前空間が割り当てられ、XMLで使用する場合、要素は名前空間URL http://www.w3.org/1998/Math/MathMLの名前空間に配置する必要があります。MathMLをHTMLで使用する場合(XMLではなく)、この名前空間はHTMLパーサーによって自動的に推測されるため、文書内で指定する必要はありません。[7]
MathML バージョン 3
MathML仕様のバージョン3は、 2010年10月20日にW3C勧告としてリリースされました。その後、2011年6月7日にMathML for CSS Profileの勧告がリリースされました。 [8]これは、CSSフォーマットに適したMathMLのサブセットです。もう1つのサブセットであるStrict Content MathMLは、統一された構造を持つコンテンツMathMLのサブセットを提供し、OpenMathと互換性があるように設計されています。他のコンテンツ要素は、厳密なサブセットへの変換の観点から定義されています。新しいコンテンツ要素には、合計インデックスなどの式に<bind>バインド変数()を関連付けるものがあります。新しい要素により、構造の共有が可能になります。[9]<bvar><share>
MathML 3.0 の開発はいくつかの段階を経た。2006 年 6 月、W3C は MathML ワーキング グループに MathML 3 勧告を 2008 年 2 月までに作成する権限を再付与し、2008 年 11 月にはその権限を 2010 年 4 月まで延長した。MathML 3 改訂版の 6 番目のワーキング ドラフトは 2009 年 6 月に公開された。2010 年 8 月 10 日、バージョン 3 はドラフトではなく「勧告案」に昇格した。[9] MathML 2 の実装はほぼ同時期にWebKitに導入され、 [10]数年後にはChromium実装が続いたが、 [11]その実装は 1 年も経たないうちに Chromium から削除された。[12]
MathML 3.0の第2版は、2014年4月10日にW3C勧告として公開されました。[2]この仕様は、2015年6月23日にISO/IEC国際標準40314:2015として承認されました。 [13]また、2015年には、MathML標準の採用を支援するためにMathML協会が設立されました。[14]当時、MathJaxチームのメンバーによると、主要なブラウザメーカーはいずれも、MathMLレンダリング作業に対して開発者に報酬を支払っていませんでした。存在したサポートは、圧倒的に無給のボランティアの時間/作業の結果でした。[15]
MathMLコア
2021年8月には、「ブラウザ実装に適した数学マークアップ言語(MathML)のコアサブセット」と説明されているMathML Coreと呼ばれる新しい仕様が公開されました。[16] MathML Coreは、詳細なレンダリングルールとCSSとの統合、自動化されたブラウザサポートテストリソースを含み、MathMLの基本的なサブセットに重点を置くことで、MathML 3.0とは一線を画しています。2023年の初めにChromiumに実装が追加されました。[17]
プレゼンテーションとセマンティクス
| ファイル名拡張子 |
.mml [18] [19] |
|---|---|
| インターネットメディアの種類 |
アプリケーション/mathml+xml [18] |
| タイプコード | MML |
| 統一型識別子 (UTI) | 公開.mathml |
| UTI の確認 | パブリック.xml |
| 開発者 | ワールドワイドウェブコンソーシアム |
| フォーマットの種類 | 数学マークアップ言語 |
| 延長 | テキスト |
| 延長 |
|
| 標準 |
|
| オープンフォーマット? | はい |
MathMLは、表現だけでなく、数式要素の意味も扱います(MathMLの後半部分は「コンテンツMathML」と呼ばれます)。数式の意味は表現とは別に保持されるため、コンテンツをどのように伝えるかはユーザーに任せることができます。たとえば、MathMLが埋め込まれたWebページは、多くのブラウザで通常のWebページとして表示できますが、視覚障害のあるユーザーは、スクリーンリーダー( SafariのVoiceOverなど)を使用して同じMathMLを読み上げることもできます。バージョン16以降のJAWSは、点字出力だけでなく、MathMLの音声出力もサポートしています。[20]
ブラウザでのMathMLのレンダリング品質は、インストールされているフォントに依存します。STIX Fontsプロジェクトは、オープンライセンスの下で包括的な数学フォントセットをリリースしました。Microsoft Windowsに付属するCambria Mathフォントのサポートは、やや制限されていました。[21]
有効な MathML ドキュメントは、通常、XML 宣言、DOCTYPE宣言、およびドキュメント要素で構成されます。ドキュメント本体には、ドキュメント内で必要に応じて要素に表示される MathML 式が含まれます。多くの場合、MathML は、 HTML、DocBook、またはその他のXMLベースの形式などのより一般的なドキュメントに埋め込まれます。
<math>
プレゼンテーション MathML
| インターネットメディアの種類 |
アプリケーション/mathml-プレゼンテーション+xml [18] |
|---|---|
| タイプコード | MMLp |
| 統一型識別子 (UTI) | 公開.mathml.プレゼンテーション |
| UTI の確認 | 公開.mathml |
| 延長 | 汎用 MathML |
プレゼンテーション MathML は数式の表示に重点を置いており、約 30 個の要素があります。要素の名前はすべて で始まります。プレゼンテーション MathML 式は、レイアウトを制御する上位レベルの要素を使用して組み合わせられたトークンmから構築されます。プレゼンテーションのより細かい詳細は、約 50 個の属性によって影響を受けます。
トークン要素には通常、文字のみが含まれます (他の要素は含まれません)。トークン要素には次のものが含まれます。
<mi>x</mi>– 識別子<mo>+</mo>– オペレーター<mn>2</mn>– 数字;<mtext>such that</mtext>- 文章。
ただし、これらのトークン要素は拡張ポイントとして使用して、ホスト言語でマークアップできることに注意してください。HTML5 の MathML では、mtext内のほとんどのインライン HTML マークアップが許可されており、HTML マークアップが MathML 内で使用され、埋め込まれたテキストがマークアップされます (この例では最初の単語が太字になっています)。
<mtext><b>non</b> zero</mtext>
これらは、通常は要素のみを含むレイアウト要素を使用して結合されます。これには次のものが含まれます。
<mrow>– 水平に並んだアイテム。<msup>、、<munderover>その他 – 上付き文字、合計などの演算子の上下限値など。<mfrac>– 分数;<msqrt>そして<mroot>– 根;<mfenced>– 括弧などのフェンスでコンテンツを囲みます。
HTML や XML でよくあるように、や などの特殊記号を名前で指定するためのエンティティが多数用意されています。MathML の興味深い特徴は、 (または暗黙の乗算を表す省略形)など、通常は表示されない演算子を表現するためのエンティティも存在することです。これらは次のとおりです。
π→⁢⁢
- U+2061 機能応用(のと区別するため)
- U+2062 INVISIBLE TIMES ( inと区別するため)
- U+2063 目に見えない区切り文字(逆も同様)
- U+2064 INVISIBLE PLUS (のと区別するため)。
MathMLエンティティの完全な仕様[22]は、一般的なHTMLおよびXMLで使用するための対応する仕様と密接に調整されています。[23]
したがって、式には2つのレイアウト要素が必要です。1つは全体の水平行を作成するためのもので、もう1つは上付き指数用です。ただし、個々のトークンは識別子()、演算子()、または数値()として識別される必要があります。トークンマークアップを追加すると、完全な形式は次のようになります。
<mi><mo><mn>
<mrow>
<mi> </mi> <mo> &InvisibleTimes ; </mo> <msup><mi> x </mi><mn> 2 </mn></msup> <mo> + </mo><mi> b </mi><mo> </mo><mi> x </mi> <mo> + </mo><mi> c </mi> </mrow>
上記の MathML の例だけで構成される完全なドキュメントを以下に示します。
<?xml version="1.0"coding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD /mathml2/mathml2.dtd">
<math xmlns= "http://www.w3.org/1998/Math/MathML" > <mrow> <mi> a </mi> <mo> </mo> <msup><mi> x </mi><mn> 2 </mn></msup> <mo> + </mo><mi> b </mi><mo> </mo><mi> x </mi> <mo> + </mo><mi> c </mi> </mrow> </math>
コンテンツ MathML
| インターネットメディアの種類 |
アプリケーション/mathml-コンテンツ+xml |
|---|---|
| タイプコード | MMLc |
| 統一型識別子 (UTI) | パブリック.mathml.content |
| UTI の確認 | 公開.mathml |
| 延長 | 汎用 MathML |
Content MathML は、式のレイアウトではなく、セマンティクス、つまり意味に重点を置いています。Content MathML の中心となるのは、<apply>関数の適用を表す要素です。適用される関数は の下の最初の子要素であり<apply>、そのオペランドまたはパラメーターは残りの子要素です。Content MathML は、いくつかの属性のみを使用します。
識別子や数字などのトークンは、Presentation MathMLと同様に個別にマークアップされますが、<ci>やなどの要素が使用されます<cn>。演算子は単なる別の種類のトークンではなく、特定の要素によって表され、その数学的意味はMathMLで認識されています:<times>、<power>など。さまざまな関数や演算子に対応する100を超える要素があります。[24]
たとえば、は を表し、 はを表します。演算子と関数を表す要素は、そのオペランドが を含む の下にある他の要素であるため、空要素です。
<apply><sin/><ci>x</ci></apply><apply><plus/><ci>x</ci><cn>5</cn></apply><apply>
この式は次のように表される。
<math>
<apply> <plus/> <apply> <times/> <ci> a </ci> <apply> <power/> <ci> x </ci> <cn> 2 </cn> </apply> </apply> <apply> <times/> <ci> b </ci> <ci> x </ci> </apply> <ci> c </ci> </apply> </math>
コンテンツ MathML は、 Schemeや他のLisp方言などの関数型言語の式とほぼ同型です。は Scheme の に相当し、多くの演算子と関数の要素は Scheme 関数に相当します。 この単純なリテラル変換と、個々のトークンのタグ解除により、上記の例は次のようになります。
<apply>...</apply>(...)
(プラス
(掛けるa ( 2乗) ) (掛けるb x ) c )
これは、XML要素構造とLISPまたはScheme S式との間に古くから知られている密接な関係を反映している。[25] [26]
コンテンツ MathML の Wikidata 注釈
OM Societyによると、[27] OpenMathコンテンツ辞書は、意味(名前、説明、ルール)の宣言を含むシンボルと識別子のコレクションとして使用できます。2018年にSIGIRカンファレンスで発表された論文[28]では、意味知識ベースWikidataをOpenMathコンテンツ辞書として使用し、数式の意味要素を一意で言語に依存しないWikidata項目にリンクできると提案されました。
例
よく知られている二次方程式は<mfrac>、Presentation MathML では、またはのようなレイアウト要素から構成される式ツリーとして表現できます<msqrt>。
<math mode= "display" xmlns= "http://www.w3.org/1998/Math/MathML" > <semantics> <mrow> <mi> x </mi> <mo> = </mo> <mfrac> <mrow> <mo form= "prefix" > − </mo> <mi> b </mi> <mo> ± </mo> <msqrt> <msup><mi> b </mi><mn> 2 </mn></msup> <mo> − </mo> <mn> 4 </mn><mo> </mo><mi> a </mi><mo> </mo><mi> c </mi> </msqrt> </mrow> <mrow> <mn> 2 </mn> <mo> </mo> <mi> a </mi> </mrow> </mfrac> </mrow> <annotation encoding= "application/x-tex" > <!-- TeX --> x = \frac{-b\pm\sqrt{b^2-4ac}}{2a}
</annotation> <annotation encoding= "StarMath 5.0" > x = {-b plusminus sqrt {b^2 - 4 ac}} over {2 a}
</annotation> <!-- さらに注釈を記述できます: eqn の場合は application/x-troff-eqn、AsciiMath の場合は application/x-asciimath... --> <!-- Semantic MathML は <annotation-xml encoding="MathML-Content"> の下にあります --> </semantics> </math>
この例では、<annotation>要素を使用しています。この要素は、非 XML 形式でセマンティック注釈を埋め込むために使用できます。たとえば、StarMathなどの数式エディターで使用される形式で数式を保存したり、 LaTeX構文を使用したマークアップを保存したりできます。encodingフィールドは通常MIME タイプですが、ほとんどの数式エンコーディングにはこのような登録がありません。このような場合は、自由形式のテキストを使用できます。
他のフォーマットほどコンパクトではありませんが、MathMLのXML構造により、そのコンテンツは広く利用でき、アクセスしやすくなり、Webブラウザなどのアプリケーションでほぼ瞬時に表示でき、数学ソフトウェア製品での意味の解釈が容易になります。MathMLは人間が直接書いたり編集したりすることを意図したものではありません。[29]
HTML/XHTML ファイルへの MathML の埋め込み
MathML は XML であるため、XML 名前空間を使用してXHTMLファイルなどの他の XML ファイル内に埋め込むことができます。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" >
< head >
< title > XHTML ファイルに埋め込まれた MathML の例</ title >
< meta name = "description" content = "XHTML ファイルに埋め込まれた MathML の例" />
</ head >
< body >
< h1 > XHTML ファイルに埋め込まれた MathML の例</ h1 >
< p >
円の面積は
< math xmlns = "http://www.w3.org/1998/Math/MathML" >
< mi > π <!-- π --> </ mi >
< mo > <!-- --> </ mo >
< msup >
< mi > r </ mi >
< mn > 2 </ mn >
</ msup >
</ math >。
</ p >
</ body >
</ html >

インライン MathML はHTML5ファイルでもサポートされています。XHTMLのように名前空間を指定する必要はありません。
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< title > HTML5 ファイルに埋め込まれた MathML の例</ title >
</ head >
< body >
< h1 > HTML5 ファイルに埋め込まれた MathML の例</ h1 >
< p >
円の面積は
<数学>
<ミ> π </ mi >
< mo > </ mo >
< msup >
< mi > r </ mi >
< mn > 2 </ mn >
</ msup >
</ math >。
</ p >
</ body >
</ html >
その他の規格
OpenMathと呼ばれる別の標準は、意味的に数式を保存するためにより具体的に設計されており (主に Content MathML を考案した同じ人々によって)、MathML を補完するために使用できます。OpenMath データは、要素を使用して MathML に埋め込むことができます。OpenMathコンテンツ辞書を使用して、要素の意味を定義できます。次の式は、 P 1 ( x ) を最初のルジャンドル多項式として定義します。
<annotation-xml encoding="OpenMath"><csymbol>
<apply>
<csymbol encoding= "OpenMath" definitionURL= "http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP" > <msub><mi> P </mi><mn> 1 </mn></msub> </csymbol> <ci> x </ci> </apply>
OMDoc形式は、定義、定理、証明、例などのステートメントから完全な理論、さらには教科書全体に至るまで、数式よりも大きな数学構造をマークアップするために作成されました。OMDoc ドキュメント内の数式は、Content MathML または OpenMath のいずれかで記述できます。プレゼンテーション用に、それらは Presentation MathML に変換されます。
ISO / IEC標準のOffice Open XML (OOXML)は、 Microsoft Office製品から派生した異なるXML数式構文を定義しています。ただし、 XSL変換を通じて部分的に互換性があります[30]。
参照
- CS
- ドキュメントマークアップ言語のリスト
- ドキュメントマークアップ言語の比較
- 数式エディタ
- LaTeX2HTML
- 翻訳
- KaTeX – LaTeX を MathML に変換する JavaScript ライブラリ
- MathJax – LaTeX を MathML に変換する JavaScript ライブラリ
参考文献
- ^ abcde 「ISO - ISO/IEC 40314:2016 - 情報技術 - 数学マークアップ言語 (MathML) バージョン 3.0 第 2 版」。ISO。2016年。2021年4 月 6 日閲覧。
- ^ abcdefgh Carlisle, David; Ion, Patrick; Miner, Robert, 編 (2014年4月10日). 「数学マークアップ言語 (MathML) バージョン3.0 第2版」. W3C . 2021年4月6日閲覧。
- ^ Carlisle, David; Wang, Frédéric, 編 (2022年5月4日). 「MathML Core」. W3C . 2023年3月3日閲覧。
- ^ 「12 - 数学方程式」1993年11月8日。
- ^ 「Mozilla 1.0 リリース!」 2002年6月5日. 2023年3月3日閲覧。
- ^ McCathieNevile, Charles (2007 年 9 月 27 日)、Kestrel は数学ができますか? Opera Kestrel の MathML サポート、Opera
- ^ 「HTML Living Standard」 。 2023年3月3日閲覧。
- ^ 「CSS プロファイルのための MathML」。W3C。2011 年 6 月 7 日。2013 年7 月 25 日閲覧。
- ^ abc 「数学マークアップ言語バージョン3.0 W3C勧告」W3.org 。 2012年5月9日閲覧。
- ^ Dakin, Beth (2010年8月17日). 「Announcing…MathML!」 . 2023年3月3日閲覧。
- ^ 「最新の Chrome ベータ版に関するウェブ開発者向けガイド」。2012 年 11 月 8 日。2023 年3 月 3 日閲覧。
- ^ 「Issue 152430のコメント32: MathMLのサポートを有効にする」。2013年2月5日。 2023年3月3日閲覧。
- ^ 「W3C MathML 3.0 が ISO/IEC 国際標準として承認されました」。W3.org。2015年 6 月 23 日。2015年6 月 12 日閲覧。
- ^ デヤン・ギネフ;マイケル・コールハーゼ;モーリッツ・シューボッツ。ラニエール・シウバ; Frédéric Wang、Mondial Association for Tools Handling MathML 、 2016 年6 月 20 日取得
- ^ Krautzberger, Peter (2013 年 11 月 1 日). 「MathML forges on」. oreilly.com . 2014 年11 月 22 日閲覧。
- ^ “MathML Core”. 2022年5月4日. 2023年3月3日閲覧。
- ^ 「Igalia が MathML を Chromium に戻す」 Igalia ニュース。2023 年 1 月 10 日。2023年1 月 10 日閲覧。
- ^ abc Libbrecht, Paul (2023年9月1日). 「MathMLメディア型宣言」. W3C . 2023年9月2日閲覧。
- ^ 「MathML インターフェース」。W3C。2003 年 10 月 21 日。2023年9 月 2 日閲覧。W3C
数学ワーキング グループは、
ブラウザー レジストリに使用される標準のファイル拡張子を推奨しています。
.mml - ^ 「JAWS バージョン 16」。2023 年9 月 7 日閲覧。
- ^ Vismor, Timothy, Viewing Mathematics on the Internet 、2011年4月13日閲覧
- ^ 「文字、実体、フォント」W3.org。
- ^ 「XML 文字エンティティ定義 (第 2 版)」。W3.org。
- ^ 「コンテンツマークアップ」W3.org。
- ^ Steven DeRose. SGML FAQ Book: SGMLとXMLの関係を理解する、Kluwer Academic Publishers、1997年。ISBN 978-0-7923-9943-8。
- ^ 標準的な S 式#cite note-0
- ^ 「OpenMath ホーム · OpenMath」。www.openmath.org。
- ^ Schubotz, Moritz; Scharpf, Philipp; Gipp, Bela (2018). 「Wikidata を使用したコンテンツ MathML での数式の表現」(PDF) . Birndl@sigir .
- ^ Buswell, Steven; Devitt, Stan; Diaz, Angel; et al. (1999 年 7 月 7 日). 「Mathematical Markup Language (MathML) 1.01 仕様 (概要)」 . 2006 年9 月 26 日閲覧。MathML
は人間が読める形式ですが、最も単純な場合を除き、作成者は数式エディタ、変換プログラム、その他の専用ソフトウェア ツールを使用して MathML を生成することが予想されます。
- ^ Carlisle, David (2007 年 4 月 10 日)。「Office 2007 の XHTML と MathML」。Blogspot。2007年9 月 20 日閲覧。
さらに読む
仕様
- W3C 勧告: 数学マークアップ言語 (MathML) 1.01 仕様
- W3C 勧告: 数学マークアップ言語 (MathML) バージョン 2.0 (第 2 版)
- W3C 勧告: 数学マークアップ言語 (MathML) バージョン 3.0 (第 3 版)
外部リンク
- W3C Math Home – 仕様、FAQ、およびサポートソフトウェアのリストが含まれています。
- Pavi, Sandhu (2002 年 12 月 12 日)。「MathML ハンドブック」。Charles River Media。2015年10 月 2 日閲覧。
- web-xslt – MathML を処理するためのXSLTプログラムのコレクション(例: Content MathML から Presentation MathML への変換、Presentation MathML からTeXへの変換)
