본문으로 이동

MathML

위키백과, 우리 모두의 백과사전.
112.173.221.206 (토론)님의 2013년 9월 18일 (수) 18:09 판

MathML(Mathematical Markup Language)은 XML 응용 중 하나로 수학 수식을 표현하기 위한 마크업 언어이다. 수식을 월드 와이드 웹에서 표현하기 위해 만들어졌다. MathML은 단순한 수식의 표기 뿐 아니라 수식의 의미를 표현할 수도 있다.


내용 MathML

내용 MathML은 수식의 모양보다는 내용에 집중한다. 내용 MathML의 중심은 함수 적용을 나타내는 <apply> 엘리먼트이다. 적용하는 함수는 <apply> 아래의 첫 번째 자식 엘리먼트(child element)이고, 나머지 자식 엘리먼트들은 피연산자(형식인수)이다. 내용 MathML은 적은 수의 애트리뷰트만을 사용한다.

식별자나 숫자 같은 토큰들은 표현 MathML에서처럼 개별적으로 마크업된다. 다만 cicn 같은 엘리먼트로 표현된다. 연산자들은 단순히 다른 종류의 토큰이 되는 게 아니라, 특수 엘리먼트로 표현되는데, 이들의 수학적 의미는 MathML에 의해 인지된다. times, power 등이 그 예이다. 100개가 넘는 함수 및 연산자에 대응되는 엘리먼트가 있다([1]를 보라.).

예를 들어, <apply><sin/><ci>x</ci></apply>를 나타내며, <apply><plus/><ci>x</ci><cn>5</cn></apply>를 나타낸다. 연산자와 함수를 표현하는 엘리먼트들은 빈 엘리먼트(empty element)인데, 그 이유는 그들의 피연산자들이 <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 같은 functional languageexpressions와 거의 같은 구조이다. <apply>...</apply>는 Scheme의 (...)에 해당하고, 많은 연산자 및 함수들이 Scheme 함수에 대응된다. 이런 간단한 문자 변환과 개별 토큰의 태그 제거만으로, 위 예제를 아래와 같이 변환할 수 있다:

 (plus
   (times a (power x 2))
   (times b x)
   c)

이는 널리 알려진 XML 엘리먼트 구조와 LISP 또는 Scheme의 S-expressions 사이의 가까운 관계를 반영한다.[1][2]


이차 방정식의 근의 공식

LaTeX 문법으로는 다음처럼 나타낸다.

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

또다른 문서 마크업 언어인 troff/eqn에서는 다음처럼 나타낸다.

x={-b +- sqrt{b sup 2 - 4ac}} over 2a

오픈오피스 수식편집에서는 다음 두 가지 방법으로 나타낸다.

x={-b plusminus sqrt {b^2 - 4 ac}} over {2 a}
x={-b +- sqrt {b^2 - 4ac}} over 2a

이 수식을 표현 MathML로는 다음처럼 나타낼 수 있다.

<math xmlns="http://www.w3.org/1998/Math/MathML">
 <mi>x</mi>
 <mo>=</mo>
 <mfrac>
  <mrow>
   <mrow>
    <mo>-</mo>
    <mi>b</mi>
   </mrow>
   <mo>&PlusMinus;</mo>
   <msqrt>
    <msup>
     <mi>b</mi>
     <mn>2</mn>
    </msup>
    <mo>-</mo>
    <mrow>
     <mn>4</mn>
     <mo>&InvisibleTimes;</mo>
     <mi>a</mi>
     <mo>&InvisibleTimes;</mo>
     <mi>c</mi>
    </mrow>
   </msqrt>
  </mrow>
  <mrow>
   <mn>2</mn>
   <mo>&InvisibleTimes;</mo>
   <mi>a</mi>
  </mrow>
 </mfrac>
</math>

콘텐츠 MathML로는 다음과 같다.

<apply>
  <eq/>
  <ci>x</ci>
  <apply>
    <divide/>
    <apply>
      <csymbol>&PlusMinus;</csymbol>
      <apply>
        <minus/>
        <ci>b</ci>
      </apply>
      <apply>
        <root/>
        <degree><cn>2</cn></degree>
        <apply>
          <minus/>
          <apply>
            <power/>
            <ci>b</ci>
            <cn>2</cn>
          </apply>
          <apply>
            <times/>
            <cn>4</cn>
            <ci>a</ci>
            <ci>c</ci>
          </apply>
        </apply>
      </apply>
    </apply>
    <apply>
      <times/>
      <cn>2</cn>
      <ci>a</ci>
    </apply>
  </apply>
</apply>


지원 소프트웨어

편집기

최근에 발표된 마이크로소프트 워드, 오픈오피스 워드프로세서, 아래한글 HWP 등의 여러 문서 편집기에서 MathML을 지원하고 있다.

수식 입력 및 편집 전문 소프트웨어인 매스매직, MathType, 매스매티카, 메이플 등에서도 입력된 수식을 MathML 포맷으로 저장하거나, MathML 수식을 읽어들여 편집할 수 있도록 지원한다.

MathML 변환

수식은 일종의 세계 표준 언어이기도 하지만, 수학이나 물리 분야 뿐만 아니라 이공계 각 분야는 물론 통계와 인문 분야 등 그 사용 분야가 폭넓고, 그 다양한 수식 형태와 심볼 등으로 구성된 복잡성으로 인해 키보드와 마우스를 기본으로 하는 컴퓨터 인터페이스 상에서 입력과 편집은 쉬운 일이 아니다.

따라서 수식 편집기 소프트웨어마다 저마다의 장점을 앞세운 인터페이스와 다양한 입력 방식이 제시되었고, 프로그램에 따라 다양한 파일 포맷이 만들어지게 되었다.

많은 수식 편집기가 내부적인 수식 저장 포맷으로 TeXLaTeX 표현을 차용하거나 이를 응용하여 사용하고 있기는 하지만, 용도에 따라 수식을 화면에 표시하기 위한 그림 포맷(GIF, JPEG, PNG 등), 다른 응용프로그램과 호환하기 위한 포맷(LaTeX, TeX, MathML, WMF, PICT 등), 고품질 출력을 위한 포맷(EPS, PDF, SVG, DVI) 등 다양한 포맷으로 사용되고 있다.

대부분의 수식편집기 소프트웨어는 자체 파일 포맷 외에, 이러한 파일 포맷 중 한두가지 포맷으로의 저장이나 변환은 지원하지만, 다양한 파일 포맷 간의 손쉬운 변환을 제공하는 것은 많지 않으며, 수식의 복잡성과 원래 사용되었던 심볼 서체의 의존성 등으로 인해 완벽한 변환을 기대하기는 어려운 경우가 많다.

현재로서는 수식 편집 전문 프로그램인 MathMagic이 가장 다양한 파일 포맷을 읽고 쓸 수도록 지원하고 있으며, Plain TeX, LaTeX, AMS LaTeX, MathML, GIF, JPEG, PNG, BMP, PICT, WMF, EPS, PDF, Wiki 수식(MediaWiki TeXvc), ASCIIMath, ASCIIMathML 등의 포맷을 지원하고 있으며(버전에 따라 다소 차이가 있을 수 있음), MathType, MS Word 수식, Google Docs 수식, Zoho Writer 등에서 작성된 수식도 지원한다. MathMagic은 또한 일괄변환(Batch conversion) 기능을 지원하고 있어, 동시에 여러가지 파일 포맷으로 된 복수의 파일이나 폴더를 다른 포맷으로 변환할 수도 있다.


웹 브라우저

주요 웹 브라우저 중에서 최신 버전의 게코 엔진을 사용하는 브라우저(파이어폭스카미노 등)와 오페라 9.5 이상에서 지원하고 있다.

게코 엔진을 쓰는 브라우저에서 현재 제대로 기능을 지원받으려면 특별한 글꼴을 따로 다운로드받아야 한다.

오페라 브라우저에서는 MathML for CSS profile 기능을 지원하고 있다.

같이 보기

바깥 고리

  1. Steven DeRose. The SGML FAQ Book: Understanding the Relationship of SGML and XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8.
  2. Canonical S-expressions#cite note-0