MathML

MathML (viết tắt cho Mathematical Markup Language, Ngôn ngữ Đánh dấu Toán học) là một ứng dụng XML nhằm viết ký hiệu và công thức toán học trên máy tính. Mục đích của ngôn ngữ lập trình này là trao đổi thông tin trên máy tính, từ đó hiển thị trên màn hình và tính toán. Tuy nhiên, MathML còn được dùng nhằm hiển thị thông tin toán học trên World Wide Web, mà W3C khuyên sử dụng.

Phiên bản 1.01 được công bố vào tháng 7 năm 1999 và bản 2.0 xuất hiện vào tháng 2 năm 2001. Tháng 10 năm 2003, bản chỉnh sửa lần thứ hai của phiên bản 2.0 của MathML được công bố là bản cuối cùng của nhóm toán W3C.

MathML được thiết kế để không chỉ hiển thị tốt công thức toán học mà còn, theo tùy chọn, chứa ý nghĩa của công thức, giúp các máy tính có thể trao đổi và hiểu nội dung toán học. Một chuẩn khác là OpenMath được thiết kế đặc biệt cho lưu trữ ý nghĩa toán học có thể được dùng để bổ trợ cho MathML.

Đối với hiển thị trên trang mạng, cấu trúc XML không ngắn gọn như TeX, nhưng có thể được dễ dàng sử dụng bởi các trình duyệt, cho phép hiển thị ngay lập tức công thức toán học một cách đẹp mắt, đồng thời truyền tải ý nghĩa toán học cho các phần mềm tính toán. Khác với TeX, MathML không được thiết kế để viết hay sửa trực tiếp bởi con người. Cần có công cụ soạn thảo, hay chuyển đổi từ ngôn ngữ thân thiện với người khác (như TeX), để cho ra kết quả là biểu diễn MathML.

Ví dụ
Công thức bậc hai:

Vốn được viết theo ngữ pháp TeX:

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

Sẽ có thể được viết bằng MathML:
 <math>
 <mrow>
  <mi>x</mi>
  <mo>=</mo>
  <mfrac>
    <mrow>
      <mrow>
        <mo>-</mo>
        <mi>b</mi>
      </mrow>
      <mo>&PlusMinus;</mo>
      <msqrt>
        <mrow>
          <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>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mo>&InvisibleTimes;</mo>
      <mi>a</mi>
    </mrow>
  </mfrac>
 </mrow>
</math>

Nếu muốn hiển thị đúng trong trình duyệt Mozilla, cần thêm

 <?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
 "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
 [ <!ENTITY mathml "http://www.w3.org/1998/Math/MathML"> ] >

Và lưu giữ các mã này trong  có đuôi .xml.

Như trong ví dụ trên:

 <?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
 "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
 [ <!ENTITY mathml "http://www.w3.org/1998/Math/MathML"> ] >
<body>
<math xmlns="&mathml;">
<mrow>
  <mi>x</mi>
  <mo>=</mo>
  <mfrac>
    <mrow>
      <mrow>
        <mo>-</mo>
        <mi>b</mi>
      </mrow>
      <mo>&PlusMinus;</mo>
      <msqrt>
        <mrow>
          <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>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mo>&InvisibleTimes;</mo>
      <mi>a</mi>
    </mrow>
  </mfrac>
</mrow>
</math>
</body>

Hỗ trợ

Có nhiều phần mềm chuyển TeX thành MathML. Như itex2mml . Hãng Wolfram Research cung cấp một trang mạng chuyển mọi biểu thức toán học sang MathML.

Trong số các trình duyệt thông dụng, Mozilla và một số trình duyệt cùng họ như là Mozilla Firefox trực tiếp hiển thị MathML.  Các trình duyệt khác có thể cần thêm phần mềm gắn vào; như Internet Explorer cần gắn thêm MathPlayer.

MathML được hỗ trợ bởi các phần mềm văn phòng như Microsoft Word, OpenOffice.org và KOffice và các phần mềm tính toán kỹ thuật như Maple, Mathematica, và MathCad.

Tham khảo

Liên kết ngoài
Trang chính thức trên W3C
MathML ở Mozilla
Phần mềm soạn MathML
Phần mềm soạn MathML
MathPlayer cho Internet Explorer.
Trang công cụ MathML của Wolfram Research
Chuẩn OpenMath 
Itex  - Chuyển LaTeX thành MathML
:m:Blahtex Dự án chuyển mã TeX sang MathML cho Wikimedia.
ASCIIMath Javascript để viết công thức toán học trong trình duyệt dùng MathML

XML
Ngôn ngữ đánh dấu
Tiêu chuẩn của W3C
Tiêu chuẩn dựa trên XML