Mathematical Markup Language (на български: език за математическо маркиране) (MathML) е математически маркиращ език, приложение на XML за описване на математическа нотация, обхващащо не само структурата, но и съдъжанието ѝ.

MathML
Mathematical Markup Language
Mathml-square-logo-128 [1]
Информация
Файлово разширение.xml+(.html, .html5)
Тип MIMEtext/mathml, application/mathml+xml [2]
СобственикWorld Wide Web Consortium
Тип на форматаМаркиращ език
MathML
Mathematical Markup Language
в Общомедия

Служи за интегриране на математически формули в World Wide Web страници. MathML е препоръчан от математическата група W3C, и е част от HTML5. [3]

История редактиране

Предпоставки за възникването на езика редактиране

До създаването на MathML, дълги години уеб разработчиците записват математическите формули и изрази с помощта на текстообработващи програми или с езика LaTex. За да се визуализира в Уеб, текстът се преработва в pdf-формат или се включват изображения за формулите в jpg-формат[4]. Формулите, съхранявани като картинки, в общия случай са по-трудни за гледане, четене и разбиране спрямо останалия околен текст в даден уеб-документ. Резултатът е трудно разчитане от потребителя.

Други недостатъци на този подход са удълженото време за създаване и редактиране на формулите, невъзможност за достъп до част от формулите, забавянето и липсата на достъп до самия сорс-код. Претърсването на текст за определена формула е трудоемко. Реално една формула е много по-малка и може да се компресира по-добре от нейния картинен формат. При изображения на формули не се позволява описанието на семантиката на отделните символи.

MathML version 1.0 редактиране

Първата версия на MathML e представена от World Wide Web Consortium (W3C) през април 1998 г.

Версия 1.01 излиза през юли 1999 г.

MathML version 2.0 редактиране

Подготовката на второто издание на MathML 2.0 включва корекции на всички известни бъгове, оказали се проблематични в предишните версии, като не се правят промени, модифициращи фундамента на езика. В тази версия е разширен наборът от поддържани символи и е осигурена интеграция с други технологии на W3C. За първи път се включва и моделът MathML DOM (MathML Document Object Model) [5], така че компонентите на MathML могат да бъдат ползвани и управлявани от всеки език за сценарии. (MathML) Version 2.0 (Second Edition) е пусната през февруари 2001 г.

MathML version 3.0 редактиране

Развитието на MathML 3.0 е преминало през няколко етапа. През юни 2006 г. W3C упълномощава работната група на MathML да издаде Препоръка за MathML 3 до февруари 2008 г., а през ноември 2008 г. удължава пълномощията до април 2010 г. Шести Работен вариант на MathML 3 версията е публикуван през юни 2009 г.

Последната версия към дата 1 октомври 2015 е 3.0 2nd Edition и е публикувана като W3C Препоръка на 10 април 2014 г. Спецификацията е одобрена като ISO/IEC international standard 40314:2015 на 23 юни 2015 г.

Синтаксис и елементи на езика редактиране

Синтаксисът на езика включва текстови елементи, чрез които може да се уточни както представянето, така и съдържанието на математическата идея. Елементите се делят на два основни типа: презентиращи и съдържателни.

Презентиращи елементи редактиране

Имената на този тип елементи започват винаги с m и предназначението им е да комбинират отделните символи в математически изрази от по-високо ниво, посредством форматиране.

Презентиращите елементи са замислени да изразяват синтактичната структура на математическите означения подобно на начина, по който заглавията, секциите и параграфите обхващат горните нива на синтактичната структура на текстов документ.

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

  • Символни елементи (Представят отделни символи, имена, числа, букви, оператори и др.)
 
Ето как може да се представи изразът
 
символен елемент обозначава
mi identifier (идентификатор)
mn number (число)
mo operator (оператор)
mtext text (текст)
mspace space (интервал)
ms string literal (стрингов литерал)


  • Схемни разположения (Схемните разположения създават изрази отчасти и могат да имат за съдържание само елементи, с изключение на празните интервали, които се игнорират.)

В контекста на указателя за съдържание горният индекс типично ще се означава като оператор за степен xn, който ще изиска два операнда: „основа“ и „степен“. Това не е случайно, тъй като общото правило е, че разположението на математическите символи строго следват логическата структура на основните математически обекти.

 
Ето как може да се представи изразът
xn
схемно разположение действие
mrow групира хоризонтално произволен брой от под-изрази
mfrac образува обикновена дроб от два под-израза
msqrt образува корен квадратен (радикал без индекс)
mstyle променя стила
mpadded нагласява разстоянието около съдържанието
msub добавя долен индекс към основа



Съдържателни елементи редактиране

Основното множество от съдържателните елементи е избрано да бъде адекватно на простото кодиране на повечето формули.

Първата цел на кодирането на съдържание е да се установят явните връзки между математическите структури и тяхното математическо значение. Съдържателните елементи съответстват директно на частите от основното дърво на математическия израз. На всяка структура е присвоена съответна семантика по подразбиране и съществува механизъм за присвояване на нови математически дефиниции с нови конструкции. За постигане на тези цели MathML кодирането на съдържание се базира на концепцията на дървото на математическия израз. Съдържанието на дървото на израза се конструира от множество от по-примитивни обекти, наричани контейнери и оператори. MathML притежава богат набор от предефинирани обекти от тип контейнер и оператор, както и конструкции за комбиниране на контейнери и оператори така, че да се отчита математическия им смисъл.

Най-основният начин за изграждане на математически израз в MathML с маркиране на съдържание е използването на конструкцията „приложи“ („apply“). Един елемент на apply типично прилага някакъв оператор върху неговите аргументи. Това съответства на пълен математически израз, което означава част от математика, която може да е оградена със скоби или „логически скоби“, без да се променя нейния смисъл. Отварящият и затварящ таг на apply задават точно обхвата на всеки оператор или функция.

Така например   ще бъде изписан по следният начин:

      <apply><sin/><ci>x</ci></apply>
 
Ето как изглежда кодираният математически израз  
дума действие
interval, list, matrix, matrixrow, set, vector, apply конструктори
int, sum, product, root, diff, partialdiff оператори
neq, equivalent, approx, factorof двоична релация
condition условие
semantics, annotation, annotation-xml планировки
&true; Логическата константа true („истина“)
&false; Логическата константа false („лъжа“)


Работа с MathML в HTML / XHTML файлове редактиране

Работата с различните интерпретатори на тагове, процесори, транслатори и редактори е изключително важна и най-вече интегрирането му в HTML4 и XHTML. MathML маркирането трябва да се разпознава като валидно XML вложено съдържание, а не като грешка.

Освен, че може да се използва изолирано като език за обмен на математически изрази между MathML, той може да бъде използван и за вмъкване на формули в други приложения на XML.

Ето един пример за работа с MathML синтаксис в XHTML документ, като трябва да се забележи поставянето на xmlns атрибут в началото, който задава име-пространство по подразбиране за MathML елементите. Също така може да бъде използван и атрибут с xmlns префикс. Закодираният текст в примера по-долу изчислява лице на окръжност с формулата π*r 2.

      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
  "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Example of MathML embedded in an XHTML file</title>
    <meta name="description" content="Example of MathML embedded in an XHTML file"/>
  </head>
  <body>
    <h1>Example of MathML embedded in an XHTML file</h1>
    <p>
      The area of a circle is
      <math xmlns="http://www.w3.org/1998/Math/MathML">
        <mi>π<!-- π --></mi>
        <mo><!-- &InvisibleTimes; --></mo>
        <msup>
          <mi>r</mi>
          <mn>2</mn>
        </msup>
      </math>.
    </p>
  </body>
</html>

Работа с MathML в HTML5 файлове редактиране

HTML5 поддържа MathML синтаксиса! Поради тази причина, не е необходимо да се специфицира име – пространство, чрез атрибути.

Улеснението в HTML5 е видимо в по долния пример, изчисляващ лице на окръжност с формулата π*r 2.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Example of MathML embedded in an HTML5 file</title>
  </head>
  <body>
    <h1>Example of MathML embedded in an HTML5 file</h1>
    <p>
      The area of a circle is
      <math>
        <mi>π</mi>
        <mo>&InvisibleTimes;</mo>
        <msup>
          <mi>r</mi>
          <mn>2</mn>
        </msup>
      </math>.
    </p>
  </body>
</html>

Софтуерна поддръжка редактиране

Уел Браузъри редактиране

От големите уеб-браузъри, тези базирани на енджина „Gecko“ (Firefox, Camino) имат най-добра вградена поддръжка за MathML.

Въпреки че WebKit енджина има версия за разработка на MathML, тази функция е достъпна само в Safari версия 5.1 и нагоре, Chrome 24. Поддръжката за следващите версии е спряна от Google поради структурни проблеми в сигурността, както и ниската употреба не оправдава отделеното инженерно време. Opera поддържа MathML за CSS профил от версия 9.5 до 12, но отсъства възможността за позициониране на диакритични знаци. Преди версия 9.5 е необходимо потребителски JavaScript или друг лист от стилове(stylesheet) за да се емулира MathML. Поддръжката на MathML е спряна след Opera 14 и е заменена с енджина Chromium 25.

Internet Explorer фабрично не поддържа MathML. Поддръжката на MathML може да бъде добавена за версиите от IE6 до IE9 чрез инсталирането на плъгина MathPlayer. В IE10 се наблюдават грешки в изпълнението MathPlayer и затова във версия IE11 възможността за инсталиране на MathPlayer е премахната от Microsoft, с изключение на IE11 Enterprise Edition. MathPlayer се разпространява под лиценз, който може да ограничи дистрибуцията и употребата в комерсиален софтуер и уеб страници. KHTML базираният Konqueror за момента не предлага поддръжка за MathML.

Качеството на изпълниение на MathML в браузър зависи от инсталираните шрифтове. STIX Fonts project предоставя обширен набор от математически шрифтове, под отворен лиценз. Шрифтът Cambria Math, вграден в Microsoft Windows има малко по-ограничена поддръжка.

Според един от членовете на екипа на MathJax, нито един от разработчиците на големи браузъри не е платил за разширяването на поддръжката на MathML. Съществуващата поддръжка е резултат основно на неплатен, доброволен труд.

Браузърите, които биха могли да рендират страници, използващи конвенциите на MathML[6] (знакът '+' индикира, че и следващите версии също работят):

Списък с браузърите в табличен вид
За Windows За Linux/Unix За Macintosh
IE 5.0 с Techexplorer плъг-ин Netscape 6.1 с Techexplorer плъг-ин IE 5.0+ с Techexplorer плъг-ин
IE 5.5 с MathPlayer или с Techexplorer плъг-ини Netscape 7.0+ Mozilla 0.9.9+
IE 6.0+, опционално с MathPlayer или с Techexplorer плъг-ини Mozilla 0.9.9+
Netscape 7.0+ Amaya, всички версии (Само Presentation MathML)
Amaya, всички версии (Само Presentation MathML)
Mozilla 0.9.9+

Редактори редактиране

Някои редактори поддържат MathML още с инсталационния си пакет. Такива редактори са MathFlow и MathType от Design Science, MathMagic, Publicon от Wolfram Research и WIRIS. Full MathML editor list at W3C.

MathML се поддържа от основните офис продукти, като Apache OpenOffice (от OpenOffice Math), LibreOffice (от LibreOffice Math), Calligra Suite (KOffice), и MS Office 2007, също така и от изчислителни софтуерни продуктикато Mathematica, Maple и Microsoft версията Casio ClassPad 300.

Firemath, и addon, от Firefox, предоставят WYSIWYG MathML редактор.

Уеб конверсия редактиране

ASCIIMathML разполага с JavaScript библиотека за пренаписване на синтаксис, използван в уики-подобни страници с MathML. Работи и в Gecko-базирани браузъри, както и Internet Explorer с инсталиран MathPlayer. ASCIIMathML синтаксиса е подобен на този, използван в електронни научни калкулатори.

MathJax е JavaScript библиотека за онлайн рендериране на математически формули, може да бъде използвана за конвертирането на LaTeX в MathML за директна интерпретация от браузъра.

Equation Server за .NET от soft4science може да бъде използван за конверсия от TeX-Math (подраздел на LaTeX) в MathML. Също така може да бъде използван за създаването на изображения (Png, Jpg, Gif, и др.) от входяща информация от MathML или TeX-Math.

iqMath е JavaScript модул, който може да изпълнява динамична конверсия на прости TeX-подобни синтаксиси в MathML. Ако браузъра не поддържа MathML, конвертира в HTML и CSS.

LaTeXML е повторна имплементация на TeX системата, която има възможност да конвертира LaTeX документи в HTML и ePub, като използва или MathML, или конвертира математически изрази в PNG и SVG изображения. Това е един от малкото инструменти, които разполагат с опционален Content MathML изход на данни при конвертиране.

Принос към науката в световен мащаб редактиране

Поддръжката на MathML езика подпомага развитието на софтуерната разработка в много области, като например:

  • компютърни науки и образование (дистанционно обучение, електронни учебници и други помощни материали);
  • автоматизираното създаване на доклади;
  • Компютърни алгебрични системи;
  • Инструменти и приложения за работа и обучение в сферата на математиката, икономиката, физиката и др. науки.

Някои от производителите на софтуер отстъпват компонентни версии на своите MathML редактори, предоставяйки на разработчиците лесен начин за изпълнението на математически формули в приложенията им.

Вижте също редактиране

Бележки редактиране

  1. mathml-association.org MathML асоциация.
  2. MathML specification
  3. Conf.Uni.bg Науни трудове на русенския университет – 2014, том 53, серия 6.1
  4. FMI-Plovdiv(TeacherBook)
  5. Computerworld България Архив на оригинала от 2015-10-01 в Wayback Machine. Вестник за IT новини.
  6. dichev.com. Блогът на Александър Дичев.

Външни препратки редактиране