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[1].

Представлення та семантика

[ред. | ред. код]

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

Приклад

[ред. | ред. код]

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

може бути записана в синтаксисі мови 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 не призначена для перегляду або редагування вручну.[2]

Джерела інформації

[ред. | ред. код]
  1. MathML Namespace. Архів оригіналу за 23 січня 2008. Процитовано 22 січня 2008.
  2. Buswell, Steven; Devitt, Stan; Diaz, Angel; et al (7 липня 1999). Mathematical Markup Language (MathML™) 1.01 Specification (Abstract). Архів оригіналу за 26 червня 2013. Процитовано 26 вересня 2006. 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.

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]