Connexions

You are here: Home » Content » Content MathML (日本語 - Japanese)
Content Actions

Content MathML (日本語 - Japanese)

Module by: Sarah Coppin, Brent Hendricks, Hironori Takaryo Based on: Content MathMLSarah Coppin, Brent Hendricks

Summary: A short introduction to writing Content MathML by hand. It covers tokens, prefix notation, and applying functions and operators. In addition it introduces writing derivatives, integrals, vectors, and matrices.

 Content MathMLの正式なリファレンスはSection 4 of the MathML 2.0 Specificationです。World Wide Web Consortium(W3C)はMathMLのための使用を書きました。テキストは読み込み可能で、検索も簡単です。詳しいことや分からないことのために、このチュートリアルを見てください。このチュートリアルはMathML 2.0に基づいています。
 このドキュメントでは、MathMLネームスペース内でタグを定義するのに、プリフィックスmが使用されています。そのため、<apply>タグは<m:apply>として参照されます。MathMLネームスペース内でのすべてのマークアップは、<m:math>タグに囲まれなければならないことを覚えていてください。

Content MathMLの原理:関数と演算子の適用

 Content MathMLについて理解するための基本概念は、一連の機能と演算子を、他の要素に適用することから成っています。これを行うためにContent MathMLは、プリフィックスnatationを使用します。Prefix notationでは、演算子が最初になり、その後に演算対象が続きます。2+3は以下のように書きます。
	<m:math>
	 <m:apply>
	  <m:plus/>
	  <m:cn>2</m:cn>
	  <m:cn>3</m:cn>
	 </m:apply>
	</m:math>
This would display as 2+3 2 3 .
 上記のContent MathMLの例には3つの種類の要素があります。最初はapplyタグですこれは演算子(または関数)が演算対象に適用されようとしていることを示します。次は適用される関数もしくは演算子がきます。この例の場合、演算子plusが適用されています。最後は、演算子の後にくる演算対象です。この例の場合、演算対象は加えられる数です。要約すると、applyタグは、関数(sinやffなど)か演算子(+や-など)を、それに続く要素に適用します。

トークン

 Content MathMLには、cicncsymbolの3つのトークンがあります。トークンは基本的に最も低い要素です。トークンは作用している要素の種類を意味します。cnタグは、タグの中身が数字であることを示します。ciタグは、タグの中身が識別子であることを示します。識別子とは変数や関数のことです。例えばxxyyそしてffなどです。さらにci要素は、Presentation MathMLを含めることができます。トークン(特にcicn)は、Content MathMLで多く使用されます。あらゆる数、変数、または関数がトークンによってマークされます。
 csymbolは、cicnとは異なったタイプのトークンです。それは、新しいオブジェクトを作成するために使用されます。それはplainテキストかPresentation MathMLを含むことができます。Content MathMLで定義されている演算子か関数を必要とするとき、それの作成にcsymbolを使用することができます。
 cicsymbolの両方は、識別子か新しいシンボルがどように表示されるかを決めるPresentation MathMLを使用することができます。Presentation MathMLについてより詳しく学びたいなら、Section 3 of the MathML 2.0 Specificationを見てください。例えば、添字2があるxxを表示するためには以下のコードを使用すると良いでしょう。
	<m:math>
	 <m:ci>
	  <m:msub>
	   <m:mi>x</m:mi>
	   <m:mn>2</m:mn>
	  </m:msub>
	 </m:ci>
	</m:math>
This would display as x 2 x 2 .
 ci要素には、要素の内容に関する詳しい情報を提供するために使用するtype属性があります。例えば、ciタグの内容が関数(type='fn')、ベクトル(type='vector')、複素数(type='complex')、そして他のいろいろなもの同様に、宣言することができます。type属性の使用は、あなたが書いている数字の意味をエンコードするのを助けてくれます。

関数と演算子

 関数を変数に適用するため、関数の最初の引数を適用してください。2番目の引数は変数になるでしょう。例えば、以下のコードを使って意味をエンコードします。引数xxをもつffという関数(ffを意味しているciタグのtype属性にtype='fn'と入力してください)。
	<m:math>
	 <m:apply>
	  <m:ci type='fn'>f</m:ci>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as fx f x .
 また事前に定義された関数と演算子がContent MathMLにはあります。例えばサインとコサインは事前に定義されています。事前に定義されたこれらの関数と演算子は、applyタグに直接続く空のタグです。xxを引数とするサイン関数は上記の例と同様に定義することができます。
	<m:math>
	 <m:apply>
	  <m:sin/>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as sinx x .
 MathML specificationのチャプター4で、事前に定義された関数の違いについてのより詳しい記述を見ることができます。
 また、事前に定義された関数に加えて、多くの事前に定義された演算子があります。それらのいくつかは、plus(和)、minus(差)、times(乗)、divide(商)、power(べき乗)、root(ルート)などです。
 ほとんどの演算子が、特定の数の子要素タグを持っています。例えば、power演算子は2つの子要素を持っています。最初の子要素はbaseで、2番目がexponentのvalueです。しかし、多くの子要素を含むことができる他のタグがあります。例えば、plus演算子は1つ以上の子要素を持つことができます。これはn-ary operatorと呼ばれます。
 負の変数を表すことは、正の変数を表すことと少し異なる構文があります。この場合、あなたは問題の変数や数へ、plusやminus演算子を適用します。以下のコードは負のxxを表すためのものです。
	<m:math>
	 <m:apply>
	  <m:minus/>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as -x x .
 負の変数を表すこととは対象的に、負の数を表すには以下のようなコードを使います。
		<m:math><m:cn>-1</m:cn></m:math>
	
This will display as -1-1.
 より複雑な式を作成するためには、これらの要素を互いに入れ子にしてください。複雑な式はこのように作成することができます。bbccの和のaa倍は、以下のように記述されます。
	<m:math>
	 <m:apply>
	  <m:times/>
	  <m:ci>a</m:ci>
	  <m:apply>
	   <m:plus/>
	   <m:ci>b</m:ci>
	   <m:ci>c</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as ab+c a b c .
 eq演算子は方程式を書くのに使用されます。それは他の演算子と同じように使用されます。これはapplyの最初の子要素です。それは2つ(以上)の子要素を持ちます。それらは等しい量になります(例えば右辺=左辺)。例えば、bbaa倍とccaa倍の和はbbccの和のaa倍と等しいことを表すなら、以下のように記述されます。
	<m:math>
	 <m:apply>
	  <m:eq/>
	  <m:apply>
	   <m:plus/>
	   <m:apply>
	    <m:times/>
	    <m:ci>a</m:ci>
	    <m:ci>b</m:ci>
	   </m:apply>
	   <m:apply>
	    <m:times/>
	    <m:ci>a</m:ci>
	    <m:ci>c</m:ci>
	   </m:apply>
	  </m:apply>
	  <m:apply>
	   <m:times/>
	   <m:ci>a</m:ci>
	   <m:apply>
	    <m:plus/>
	    <m:ci>b</m:ci>
	    <m:ci>c</m:ci>
	   </m:apply>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as ab+ac=ab+c a b a c a b c .

積分

 積分のための演算子はintです。しかし、演算子や上記の関数とは異なり、それは子要素を持っています。積分対象を表すbvar、積分範囲を表すlowlimituplimit(もしくはintervalcondition)です。lowlimituplimit(この2つはセット)、interval、およびconditionは3つの異なった方法です。bvar、lowlimituplimitinterval、およびconditionの各子要素は、トークン要素を取ることを忘れないでください。以下は、「0からbbまでのxxの積分」を表しています。
	<m:math>
	 <m:apply>
	  <m:int/>
	  <m:bvar><m:ci>x</m:ci></m:bvar>
	  <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
	  <m:uplimit><m:ci>b</m:ci></m:uplimit>
	  <m:apply>
	   <m:ci type='fn'>f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as 0bfxdx x 0 b f x .

微分

 微分の演算子はdiffです。積分と同じような方法で行えます。まずbvarを使用して、微分対象を定義する必要があります。以下は、「ff(xx)に対するxxについての微分」を表しています。
	<m:math>
	 <m:apply>
	  <m:diff/>
	  <m:bvar>
	   <m:ci>x</m:ci>
	  </m:bvar>
	  <m:apply>
	   <m:ci type="fn">f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as ddxfx x f x .
 より高次の微分を関数に適用するには、bvarタグのdegreeタグを追加して行ってください。degreeタグは微分の回数を含みます。以下は、「ff(xx)のxxに対する2回微分」を表しています。
	<m:math>
	 <m:apply>
	  <m:diff/>
	  <m:bvar>
	   <m:ci>x</m:ci>
	   <m:degree><m:cn>2</m:cn></m:degree>
	  </m:bvar>
	  <m:apply><m:ci type="fn">f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as d2dx2fx x 2 f x .

ベクトルと行列

 ベクトルはvectorタグを使用し、他の要素の組み合わせで作成されます。
	<m:math>
	 <m:vector>
	  <m:apply>
	   <m:plus/>
	   <m:ci>x</m:ci>
	   <m:ci>y</m:ci>
	  </m:apply>
	  <m:ci>z</m:ci>
	  <m:cn>0</m:cn>
	 </m:vector>
	</m:math>
This will display as x+yz0 x y z 0 .
 行列は同じように行えます。matrix要素はいくつかのmatrixrow要素を含み、matrixrow要素は行列の値を含みます。
	<m:math>
	 <m:matrix>
	  <m:matrixrow>
	   <m:ci>a</m:ci>
	   <m:ci>b</m:ci>
	   <m:ci>c</m:ci>
	  </m:matrixrow>
	  <m:matrixrow>
	   <m:ci>d</m:ci>
	   <m:ci>e</m:ci>
	   <m:ci>f</m:ci>
	  </m:matrixrow>
	  <m:matrixrow>
	   <m:ci>g</m:ci>
	   <m:ci>h</m:ci>
	   <m:ci>j</m:ci>
	  </m:matrixrow>
	 </m:matrix>
	</m:math>
This will display as abcdefghj a b c d e f g h j .
 また、行列式を得るため、行列内の要素を選択して、行列を移項するための演算子があります。

エンティティ

 使用する必要があると思われる文字(例えば、Greek、letters)のために、MathMLはエンティティを定義しています。Content MathML内で、Presentation MathMLを埋め込む必要があるときに、それらは非常に役に立ちます。エンティティのリストはMathML 2.0の仕様の中で見つけられます。これらのエンティティを使用することは、ユニコードの文字で表すよりもいい方法です。なぜなら、これらエンティティは必要ならば再定義することができるからです。

最後に

 Content MathMLでは、さらにいろいろなことができます。Content MathMLを多く書く計画があるなら、MathML specificationを見ることをお勧めします。

Comments, questions, feedback, criticisms?

Discussion forum

Send feedback