MathML: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
편집 요약 없음
1번째 줄:
'''MathML'''(Mathematical Markup Language)은 [[XML]] 응용 중 하나로 [[수학]] 수식을 표현하기 위한 [[마크업 언어]]이다. 수식을 [[월드 와이드 웹]]에서 표현하기 위해 만들어졌다. MathML은 단순한 수식의 표기 뿐 아니라 수식의 의미를 표현할 수도 있다.
 
===표현 MathML===
표현 MathML은 수식의 화면 표시에 집중하며, 30여 가지의 엘리먼트들이 있다. 이들 엘리먼트의 이름은 모두 <code>m</code>으로 시작한다. 표현 MathML 식은 ''토큰''들이 모여 구성되며, 레이아웃을 조절하는 고수준 엘리먼트에 의해 조합된다. (50여 종의 애트리뷰트 또한 존재하는데, 이들은 주로 미세 조정에 쓰인다.).
 
토큰 엘리먼트들은 일반적으로 문자만을 포함한다(즉 다른 엘리먼트를 포함하지 않는다). 다음을 포함한다:
 
*<code><mi>x</mi></code> – 식별자;
*<code><mo>+</mo></code> – 연산자;
*<code><mn>2</mn></code> – 숫자.
*<code><mtext>non zero</mtext></code> – 텍스트.
 
이들 토큰 엘리먼트들은 호스트 언어에서 마크업을 허용하는 확장점으로 쓰일 수도 있다는 것에 주의하라.
[[HTML5]]에서의 MathML은 mtext에서 대부분의 HTML 마크업을 허용한다. 즉,
 
*<code>&lt;mtext>&lt;b>non&lt;/b> zero&lt;/mtext></code>
 
와 같이, HTML 마크업을 MathML 내에 내장된 텍스트를 꾸미는 데 쓸 수도 있다(이 예제에서는 첫 번째 단어를 굵게 처리한다).
 
이들은 레이아웃 엘리먼트를 이용하여 조합된다:
 
*<code><mrow></code> – 항목들로 이루어진 가로 행;
*<code><msup></code>, <code> <munderover> </code> 등 – 위첨자, limits over and under operators like sums, etc.;
* <code><mfrac></code> – 분수;
* <code><msqrt></code> and <code><mroot></code> – 근호;
* <code><mfenced></code> - 내용을 괄호(예를 들어 소괄호)로 감싼다.
 
HTML이나 XML에서처럼, 특별한 기호나 이름을 나타내는 데 쓸 수 있는 많은 엔티티([[entities]])가 있다. 예를 들어 &amp;pi;, &amp;RightArrow; 등이다. 한 가지 흥미로운 MathML의 기능은, 일반적으로 보이지 않는 연산자를 표현하기 위한 엔티티도 존재한다는 것이다. 암묵적인 곱셈연산자(implicit multiplication) <code>&amp;InvisibleTimes;</code> 가 그 예이다. 그 외에 다음과 같은 것들이 있다:
U+2061 FUNCTION APPLICATION; U+2062 INVISIBLE TIMES; U+2063 INVISIBLE SEPARATOR; U+2064 INVISIBLE PLUS. 완전한 MathML 엔티티 명세는 [http://www.w3.org/TR/MathML3/chapter7.html]에 있으며, HTML 및 XML에서의 일반적인 사용을 위한 연관 명세([http://www.w3.org/TR/xml-entity-names/])와 밀접히 연관되어 있다.
 
따라서, 수식 <math>a x^2+b x+c</math>는 두 개의 레이아웃 엘리먼트를 필요로 한다: 하나는 전체적인 수평 행을, 다른 하나는 지수 표현을 위한 위첨자 행을 생성한다. 레이아웃 엘리먼트와 토큰만을 포함시키면, 구조는 다음과 같이 될 것이다:
 
<source lang="xml">
<mrow>
a &InvisibleTimes; <msup>x 2</msup>
+ b &InvisibleTimes; x
+ c
</mrow>
</source>
 
그러나 개별 토큰들은 식별자(mi), 연산자(mo), 숫자(mn)로 구별되어야 한다. 토큰 마크업을 추가하면, 완성된 양식은 아래와 같다:
 
<source lang="xml">
<mrow>
<mi>a</mi> <mo>&InvisibleTimes;</mo> <msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mo>&InvisibleTimes;</mo><mi>x</mi>
<mo>+</mo><mi>c</mi>
</mrow>
</source>
 
유효한 MathML 문서는 전형적으로 XML 선언, DOCTYPE 선언, document 엘리먼트로 이루어진다.
그리고 document body는 &lt;math> 엘리먼트 속에 나타나는 MathML 표현식을 포함한다. MathML이 [[HTML]], [[DocBook]], 다른 [[XML]] 스키마 같은 더 일반적인 문서에 포함되는 일도 흔하다. 위의 MathML 예제만으로 이루어진 완전한 문서는 아래와 같다:
 
<source lang="xml">
<?xml version="1.0" encoding="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>&InvisibleTimes;</mo>
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&InvisibleTimes; </mo>
<mi>x</mi>
<mo>+</mo>
<mi>c</mi>
</mrow>
</math>
</source>