MathML

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

MathML (англ. Mathematical Markup Language, мова розмітки математичних виразів) — основана на XML мова розмітки для описання математичних виразів разом зі структурою та змістом. Застосовується для розміщення математичних формул на сторінках інтернету.

Стандарт мови розмітки MathML має статус рекомендації (англ. Recommendation) консорціуму W3C.

Історія[ред.ред. код]

Версія 1.01 специфікації була оприлюднена в липні 1999, а версія 2.0 з'явилась в лютому 2001. У жовтні 2003, другу редакцію стандарту було опубліковано як остаточну версію. В липні 2006, консорціум W3C поставив завдання робочій групі з розробки MathML (англ. MathML Working Group) розробити стандарт MathML версії 3 до лютого 2008.

Розробка MathML відбувалась до остаточного затвердження стандарту Простору імен XML (англ. XML namespaces). Як такі, документи MathML часто не містять посилання на простір назв. Однак, рекомендованим простором назв для документів MathML є http://www.w3.org/1998/Math/MathML.

Представлення та семантика[ред.ред. код]

MathML містить інструкції не лише тільки для представлення а і значення складових формули (остання має назву «англ. Content MathML»). Оскільки значення рівняння зберігається окремо від його представлення, спосіб відображення цього рівняння визначається користувачем (або програмою, що використовує користувач для перегляду формул). Наприклад, веб-сторінки, що містять MathML можуть відображатись як звичайні сторінки в багатьох веб-браузерах, а користувачі з вадами зору, використовуючи спеціальне програмне забезпечення, — читач екрану (англ. screen reader), можуть почути ці формули.

Приклад[ред.ред. код]

Відома формула розв'язків квадратного рівняння:

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

може бути записана в синтаксисі мови LaTeX як:

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

в troff/eqn як:

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

в OpenOffice.org Math як (обидва варіанти правильні):

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

Наведене вище рівняння може бути записано в Presentation MathML як вираз, що складається із елементів описання представлення, таких як mfrac або msqrt:

<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>

Елемент annotation можна використовувати для зберігання семантичної аннотації у відмінному від XML форматі, наприклад, у форматі, що використовується редактором формул. Як варіант, рівняння може бути представлене в Content MathML у вигляді дерева, що складається із функціональних елементів подібних до apply (для застосування функції) або eq (для відношення рівності):

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <apply>
    <eq/>
    <ci>x</ci>
    <apply>
      <frac/>
      <apply>
        <csymbol definitionURL="http://www.example.com/mathops/multiops.html#plusminus">
          <mo>&PlusMinus;</mo>
        </csymbol>
        <apply>
          <minus/>
          <ci>b</ci>
        </apply>
        <apply>
          <power/>
          <apply>
            <minus/>
            <apply>
              <power/>
              <ci>b</ci>
              <cn>2</cn>
            </apply>
            <apply>
              <times/>
              <cn>4</cn>
              <ci>a</ci>
              <ci>c</ci>
            </apply>
          </apply>
          <cn>0.5</cn>
        </apply>
      </apply>
      <apply>
        <times/>
        <cn>2</cn>
        <ci>a</ci>
      </apply>
    </apply>
  </apply>
  <annotation encoding="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>
</math>

У дереві виразів наведеному вище, елемени подібні до times визначено специфікацією MathML і ними позначаються математичні функції, що застосовуються до елементів рівного рівня, які інтерпретуються як аргументи. Елемент csymbol є загальним елементом розширення, значення якого описується в документі за адресою, вказаною в атрибуті definitionURL.

Не зважаючи на те, що нотація в XML менш компактна за TeX, застосування XML має потенціал для поширеного застосування на веб-сторінках, відображення у веб-браузерах, та безпосередньої інтерпретації у спеціалізованому математичному програмному забезпеченні. MathML не призначеня для перегляду або редагування вручну.[1]

Джерела інформації[ред.ред. код]

  1. Buswell, Steven; Devitt, Stan; Diaz, Angel; et al (1999-07-07). «Mathematical Markup Language (MathML™) 1.01 Specification (Abstract)». Архів оригіналу за 2013-06-26. Процитовано 2006-09-26. «While MathML is human-readable it is anticipated that, in all but the simplest cases, authors will use equation editors, conversion programs, and other specialized software tools to generate MathML.» 

Дивіться також[ред.ред. код]

Зовнішні посилання[ред.ред. код]