Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Математический язык разметки ( MathML ) - это язык математической разметки , приложение XML для описания математических обозначений и фиксации как их структуры, так и содержания. Он направлен на интеграцию математических формул в страницы всемирной паутины и другие документы. Он является частью HTML5 и стандарта ISO / IEC 40314 с 2015 года.

История [ править ]

MathML 1 был выпущен в качестве рекомендации W3C в апреле 1998 года как первый язык XML , рекомендованный W3C . Версия 1.01 формата была выпущена в июле 1999 года, а версия 2.0 появилась в феврале 2001 года.

В октябре 2003 года математической рабочей группой W3C было опубликовано второе издание MathML Version 2.0 в качестве окончательного выпуска.

MathML был первоначально разработан до завершения работы над пространствами имен XML . Однако ему было назначено пространство имен сразу после завершения Рекомендации по пространству имен, и для использования XML элементы должны находиться в пространстве имен с URI пространства имен MathML Namespace . Когда MathML используется в HTML (в отличие от XML), это пространство имен автоматически выводится анализатором HTML, и его не нужно указывать в документе.

MathML версии 3 [ править ]

Версия 3 спецификации MathML была выпущена в качестве рекомендации W3C 20 октября 2010 г. Рекомендация A MathML для профиля CSS была выпущена позже 7 июня 2011 г .; [1] это подмножество MathML, подходящее для форматирования CSS. Другое подмножество, Strict Content MathML , предоставляет подмножество MathML контента с единообразной структурой и предназначено для совместимости с OpenMath . Другие элементы контента определены в терминах преобразования в строгое подмножество. Новые элементы содержимого включают в себя то, <bind>что связывает связанные переменные ( <bvar>) с выражениями, например индекс суммирования. Новый <share>элемент позволяет разделять структуру. [2]

Разработка MathML 3.0 прошла несколько этапов. В июне 2006 года W3C повторно уполномочил рабочую группу MathML разработать рекомендацию MathML 3 до февраля 2008 года, а в ноябре 2008 года продлил срок действия до апреля 2010 года. В июне 2009 года был опубликован шестой рабочий проект версии MathML 3. 10 августа 2010 года версия 3 были преобразованы в «Предлагаемую рекомендацию», а не в проект. [2]

Второе издание MathML 3.0 было опубликовано как рекомендация W3C 10 апреля 2014 года. [3] Спецификация была утверждена в качестве международного стандарта ISO / IEC 40314: 2015 23 июня 2015 года. [4]

Представление и семантика [ править ]

MathML имеет дело не только с представлением, но и со значением компонентов формулы (последняя часть MathML известна как «Content MathML»). Поскольку значение уравнения сохраняется отдельно от презентации, то, как будет передаваться контент, можно оставить на усмотрение пользователя. Например, веб-страницы со встроенным в них MathML можно просматривать как обычные веб-страницы во многих браузерах, но пользователи с ослабленным зрением также могут читать им тот же MathML с помощью программ чтения с экрана (например, с помощью подключаемого модуля MathPlayer для Internet Explorer или Firefox , Opera 9.50 build 9656+ или Fire Voxрасширение для Firefox). Новые версии JAWS поддерживают озвучивание MathML, а также вывод шрифта Брайля. [5]

Презентация MathML [ править ]

Презентация MathML ориентирована на отображение уравнения и содержит около 30 элементов. Имена всех элементов начинаются с m. Выражение Presentation MathML построено из токенов , которые объединены с использованием элементов более высокого уровня, которые контролируют их макет (также имеется около 50 атрибутов, которые в основном контролируют мелкие детали).

Элементы токена обычно содержат только символы (не другие элементы). Они включают:

  • <mi>x</mi> - идентификаторы;
  • <mo>+</mo> - операторы;
  • <mn>2</mn> - числа.
  • <mtext>non zero</mtext> - текст.

Однако обратите внимание, что эти элементы токена могут использоваться в качестве точек расширения, позволяя разметку на основных языках. MathML в HTML5 позволяет использовать большую часть встроенной разметки HTML в mtext, и

  • <mtext><b>non</b> zero</mtext>

соответствует разметке HTML, которая используется в MathML для разметки встроенного текста (в этом примере первое слово выделено жирным шрифтом).

Они объединяются с использованием элементов макета, которые обычно содержат только элементы. Они включают:

  • <mrow> - горизонтальный ряд предметов;
  • <msup>, <munderover>И другие - надстрочные, пределы над и под операторами , как суммы и т.д .;
  • <mfrac> - фракции;
  • <msqrt>а <mroot>- корни;
  • <mfenced> - окружение контента ограничениями, например круглыми скобками.

Как обычно в HTML и XML, многие объекты доступны для указания специальных символов по имени, например, &pi;и &RightArrow;. Интересной особенностью MathML является то, что сущности также существуют для выражения обычно невидимых операторов, например, &InvisibleTimes;для неявного умножения. Они есть:

ФУНКЦИОНАЛЬНОЕ ПРИЛОЖЕНИЕ U + 2061; U + 2062 НЕВИДИМЫЕ ВРЕМЯ; НЕВИДИМЫЙ СЕПАРАТОР U + 2063; и U + 2064 НЕВИДИМЫЙ ПЛЮС. Полная спецификация объектов MathML [6] тесно согласована с соответствующими спецификациями для использования с HTML и XML [7] в целом.

Таким образом, для выражения требуются два элемента макета: один для создания общей горизонтальной строки и один для экспоненты с верхним индексом. Включая только элементы макета и (еще не размеченные) голые токены, структура выглядит так:

 <mrow> a & InvisibleTimes;  <msup> x 2 </msup> + b & InvisibleTimes; Икс + c </mrow>

Однако отдельные токены также должны быть идентифицированы как идентификаторы (mi), операторы (mo) или числа (mn). После добавления разметки токена полная форма будет выглядеть так:

 <mrow>  <mi> a </mi>  <mo> & InvisibleTimes; </mo>  <msup> <mi> x </mi> <mn> 2 </mn> </msup>  <mo> + </mo> <mi> b </mi> <mo> & InvisibleTimes; </mo> <mi> x </mi>  <mo> + </mo> <mi> c </mi>  </mrow>

Допустимый документ MathML обычно состоит из объявления XML, объявления DOCTYPE и элемента документа. Затем тело документа содержит выражения MathML, которые появляются в элементах <math> по мере необходимости в документе. Часто MathML встраивается в более общие документы, такие как HTML , DocBook или другие схемы XML . Полный документ, состоящий только из приведенного выше примера MathML, показан здесь:

 <? xml version = "1.0" encoding = "UTF-8"?>  <! DOCTYPE math PUBLIC "- // W3C // DTD MathML 2.0 // EN"  "http://www.w3.org/Math/DTD /mathml2/mathml2.dtd ">  <math  xmlns = " http://www.w3.org/1998/Math/MathML " >  <mrow>  <mi> a </mi>  <mo> & InvisibleTimes; </mo>  <msup>  <mi> x </mi>  <mn> 2 </mn>  </msup>  <mo> + </mo>  <mi> b </mi>  <mo> & InvisibleTimes;  </mo> <mi> x </mi>  <mo> + </mo>  <mi> c</mi>  </mrow>  </math>

Content MathML [ править ]

Content MathML фокусируется на семантике или значении выражения, а не на его макете. Центральным <apply>элементом Content MathML является элемент, представляющий приложение-функцию. Применяемая функция является первым дочерним элементом <apply>, а ее операнды или параметры - оставшимися дочерними элементами. Content MathML использует только несколько атрибутов.

Токены, такие как идентификаторы и числа, размечены индивидуально, как и в Presentation MathML, но с такими элементами, как ciи cn. Вместо того , чтобы быть просто другой тип маркера, операторы представлены конкретные элементы, у которых математическая семантика известны MathML: times, powerи т.д. Есть более ста различных элементов для различных функций и операторов. [8]

Например, представляет и представляет . Элементы, представляющие операторы и функции, являются пустыми элементами, потому что их операнды являются другими элементами, находящимися под содержимым .<apply><sin/><ci>x</ci></apply><apply><plus/><ci>x</ci><cn>5</cn></apply><apply>

Выражение могло быть представлено как

<math>  <apply>  <plus />  <apply>  <times />  <ci> a </ci>  <apply>  <power />  <ci> x </ci>  <cn> 2 </cn>  </ применить>  </apply>  <apply>  <times />  <ci> b </ci>  <ci> x </ci>  </apply>  <ci> c </ci>  </apply> </math>

Content MathML почти изоморфен выражениям на функциональном языке, таком как Scheme . <apply>...</apply>составляет схему (...), а многие элементы оператора и функции составляют функции схемы. С этим тривиальным буквальным преобразованием, плюс снятие тегов с отдельных токенов, приведенный выше пример становится:

 ( плюс  ( умноженное  на  ( степень  x  2 ))  ( умноженное на  b  x )  c )

Это отражает давно известную тесную взаимосвязь между структурами элементов XML и S-выражениями LISP или Scheme . [9] [10]

Аннотации Викиданных в Content MathML [ править ]

Согласно OM Society [11] словари содержимого OpenMath могут использоваться как наборы символов и идентификаторов с декларациями их семантики - имен, описаний и правил. Как предлагается в [12], семантическая база знаний Викиданные [13] может использоваться в качестве словаря содержимого OpenMath для связывания семантических элементов математической формулы с уникальными и независимыми от языка элементами Викиданных.

Пример и сравнение с другими форматами [ править ]

Известная квадратичная формула :

будет размечен с использованием синтаксиса LaTeX следующим образом:

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

в troff / eqn вот так:

x = {- b + - sqrt {b sup 2 - 4ac}} над 2a

в Apache OpenOffice Math и LibreOffice Math вот так (все три действительны):

x = {- b плюс минус sqrt {b ^ 2 - 4 ac}} над {2 a}x = {- b + - sqrt {b ^ 2 - 4ac}} над {2a}x = {- b ± sqrt {b ^ 2 - 4ac}} над {2a}

в AsciiMath вот так:

х = (- b + - sqrt (b ^ 2 - 4ac)) / (2a)

Вышеупомянутое уравнение может быть представлено в Presentation MathML как дерево выражений, состоящее из элементов макета, таких как элементы mfrac или msqrt :

<math  mode = "display"  xmlns = "http://www.w3.org/1998/Math/MathML" >  <semantics>  <mrow>  <mi> x </mi>  <mo> = </mo>  < mfrac>  <mrow>  <mo  form = "prefix" > & # x2212; <! - - -> </mo>  <mi> b </mi>  <mo> & # x00B1; <! - & PlusMinus; -> </mo>  <msqrt>  <msup>  <mi> b </mi>  <mn> 2 </mn> </msup>  <mo> & # x2212; <! - - -> </mo>  <mn> 4</mn>  <mo> & # x2062; <! - & InvisibleTimes; -> </mo>  <mi> а </mi>  <mo> & # x2062; <! - & InvisibleTimes; -> </mo>  <mi> c </mi>  </msqrt>  </mrow>  <mrow>  <mn> 2 </mn>  <mo> & # x2062; <! - & InvisibleTimes; -> </mo>  <mi> a </mi>  </mrow>  </mfrac>  </mrow>  <annotation  encoding = "TeX" > x = \ frac {-b \ pm \ sqrt {b ^ 2-4ac}} {2a} </annotation>  <annotation  encoding = "StarMath 5.0" > x = {- b плюс минус sqrt {b ^ 2 - 4 ac}} над {2 a} </annotation>  </semantics> </math>

В этом примере используется <annotation>элемент, который можно использовать для встраивания семантической аннотации в формате, отличном от XML, например, для хранения формулы в формате, используемом редактором формул, например StarMath, или разметки с использованием синтаксиса LaTeX .

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

Встраивание MathML в файлы HTML / XHTML [ править ]

MathML, будучи XML, может быть встроен в другие файлы XML, такие как файлы XHTML, с использованием пространств имен XML. Такие браузеры, как Firefox 3+ и Opera 9.6+ (поддержка не завершена), могут отображать Presentation MathML, встроенную в XHTML.

<? xml version = "1.0" encoding = "UTF-8"?> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 плюс MathML 2.0 // EN"  "http://www.w3.org/ Математика / ОТД / mathml2 / XHTML-math11-f.dtd "> <HTML  XMLNS = "http://www.w3.org/1999/xhtml"  XML: Lang = "EN" >  <голова>  <название> Пример MathML, встроенный в файл XHTML </title>  <meta  name = "description"  content = "Пример MathML, встроенный в файл XHTML" />  </head>  <body>  <h1> Пример MathML, встроенного в файл XHTML < / h1>  <p> Площадь круга равна  <math  xmlns = "http://www.w3.org/1998/Math/MathML" >  <mi> & # x03C0; <! - π -> </mi>  <mo> & # x2062; <! - & InvisibleTimes; -> </mo>  <msup>  <mi> r </mi>  <mn> 2 </mn>  </msup>  </math> . </p>  </body> </html>
Визуализация формулы для круга в MathML + XHTML с использованием Firefox 22 в Mac OS X

Встроенный MathML также поддерживается в файлах HTML5 в текущих версиях WebKit ( Safari и JavaFX / WebView ), Gecko ( Firefox ). Нет необходимости указывать пространства имен, как в XHTML.

<! DOCTYPE html> < html  lang = "en" >  < head >  < meta  charset = "utf-8" >  < title > Пример MathML, встроенного в файл HTML5 </ title >  </ head >  < body >  < h1 > Пример MathML, встроенного в файл HTML5 </ h1 >  < p > Площадь круга равна  < математика >  < mi > & pi; </ mi >  < mo > & InvisibleTimes; </ mo >  < msup >  < mi > r </ mi >  < mn > 2 </ mn >  </ msup >  </ math > . </ p >  </ body > </ html >

Поддержка браузера [ править ]

Из основных веб - браузеров , Gecko -На браузеры (например, Firefox ) имеют наиболее полную встроенную поддержку MathML. [15] [16]

Хотя механизм компоновки WebKit имеет разрабатываемую версию MathML [17], эта функция доступна только в версии Safari 5.1 и выше , [18] Chrome 24 [19] [20], но не в более поздних версиях Chrome. [21] Google удалил поддержку MathML, заявив, что проблемы с архитектурной безопасностью и малое использование не оправдывают затраты времени на разработку. [22] По состоянию на октябрь 2013 года реализация WebKit / Safari содержала множество ошибок. [23]

JavaFX / WebView . Также на основе WebKit встроенный веб-браузер JavaFX поддерживает MathML, начиная с версий JavaFX 8 Update 192 и JavaFX 11. Поддержка не поддерживается в предыдущих версиях JavaFX 8, JavaFX 9 и JavaFX 10.

Opera между версиями 9.5 и 12 поддерживает профиль MathML для CSS [24] [25], но не может правильно позиционировать диакритические знаки. [26] До версии 9.5 требовался пользовательский JavaScript или пользовательские таблицы стилей для имитации поддержки MathML. [27] Начиная с Opera 14, Opera отказывается от поддержки MathML, перейдя на движок Chromium 25. [28]

Internet Explorer не поддерживает MathML изначально. Поддержка IE6 через IE9 может быть добавлена ​​путем установки плагина MathPlayer . [29] В IE10 есть несколько сбоев в работе MathPlayer, и Microsoft решила полностью отключить в IE11 интерфейс бинарных плагинов, который нужен MathPlayer. [30] MathPlayer имеет лицензию , которая может ограничить его использование или распространение в коммерческих веб - страниц и программного обеспечения. Использование или распространение подключаемого модуля MathPlayer для отображения содержимого HTML через элемент управления WebBrowser в коммерческом программном обеспечении также может быть запрещено этой лицензией.

KHTML -На Konqueror в настоящее время не обеспечивает поддержку MathML. [31]

Качество рендеринга MathML в браузере зависит от установленных шрифтов. Проект STIX Fonts выпустил исчерпывающий набор математических шрифтов под открытой лицензией. Cambria Math шрифт поставляется с Microsoft Windows была несколько более ограниченную поддержку. [32]

По словам члена команды MathJax, ни один из основных производителей браузеров не платил своим разработчикам за любую работу по рендерингу MathML; любая существующая поддержка в подавляющем большинстве случаев является результатом неоплачиваемого времени / работы волонтеров. [33]

В 2015 году была основана ассоциация MathML Association для поддержки принятия стандарта MathML. [34]

Другие стандарты [ править ]

Другой стандарт под названием OpenMath , который был разработан (в основном теми же людьми, которые разработали Content MathML) более конкретно для семантического хранения формул, также может использоваться в качестве дополнения к MathML. Данные OpenMath можно внедрить в MathML с помощью &lt;annotation-xml encoding="OpenMath"&gt;элемента. Словари содержимого OpenMath можно использовать для определения значений <csymbol>элементов. Следующее определило бы P 1 ( x ) как первый полином Лежандра

<apply>  <csymbol  encoding = "OpenMath"  definitionURL = "http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP" >  <msub> <mi> P </mi> <mn> 1 </mn> </msub>  </csymbol>  <ci> x </ci> </apply>

Формат OMDoc был создан для разметки более крупных математических структур, чем формулы, от утверждений, таких как определения, теоремы, доказательства или примеры, до теорий и учебников. Формулы в документах OMDoc могут быть написаны в Content MathML или OpenMath; для презентации они конвертируются в Presentation MathML.

ISO / IEC стандарт Office Open XML (OOXML) определяет другой XML - математический синтаксис, полученный из Microsoft Office продуктов. Однако он частично совместим [37] посредством относительно простых преобразований XSL .

См. Также [ править ]

  • CSS
  • Список языков разметки документов
  • Сравнение языков разметки документов
  • Редакторы формул
  • LaTeX2HTML
  • LaTeXML
  • KaTeX  - библиотека JavaScript, конвертирующая LaTeX в MathML
  • MathJax  - библиотека JavaScript, конвертирующая LaTeX в MathML

Примечания [ править ]

  1. ^ a b c Доступно с плагином MathPlayer.

Ссылки [ править ]

  1. ^ «MathML для профиля CSS» . W3C. 7 июня 2011 . Проверено 25 июля 2013 года .
  2. ^ a b Язык математической разметки Версия 3.0 Рекомендация W3C . W3.org. Проверено 9 мая 2012 года.
  3. ^ MathML Версия 3.0 2-е издание . W3.org. Проверено 8 июля 2014 года.
  4. ^ «W3C MathML 3.0 утвержден как международный стандарт ISO / IEC» . W3.org . 23 июня 2015 . Дата обращения 12 июля 2015 .
  5. ^ "Версия 16 JAWS" .
  6. ^ «Персонажи, объекты и шрифты» . www.w3.org .
  7. ^ «Определения сущностей XML для символов (2-е издание)» . www.w3.org .
  8. ^ «Разметка содержимого» . www.w3.org .
  9. ^ Стивен ДеРоуз. Книга часто задаваемых вопросов SGML: Понимание взаимосвязи SGML и XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8 . 
  10. ^ Канонические S-выражения # cite note-0
  11. ^ "OpenMath Home · OpenMath" . www.openmath.org .
  12. ^ Мориц Шуботц; Филипп Шарпф; Бела Гипп. (2018). «Представление математических формул в Content MathML с использованием Викиданных» (PDF) . Birndl @ sigir .
  13. ^ "Викиданные" . www.wikidata.org .
  14. ^ Басвелл, Стивен; Девитт, Стэн; Диас, Ангел; и другие. (7 июля 1999 г.). "Спецификация математического языка разметки (MathML) 1.01 (Аннотация)" . Проверено 26 сентября 2006 года . Хотя MathML удобен для чтения человеком, ожидается, что во всех случаях, кроме простейших, авторы будут использовать редакторы уравнений, программы преобразования и другие специализированные программные инструменты для создания MathML.
  15. ^ Ван, Фредерик, Mozilla MathML Status , Mozilla
  16. ^ Сидже, Роджер Б., Разработка MathML для Mozilla , Mozilla
  17. ^ Ошибка 3251 - Реализация MathML (основная ошибка) , WebKit. . . (Однако «см. Также») https://trac.webkit.org/wiki/MathML%20Status
  18. ^ Safari 5.1 и математика
  19. ^ Поддержка MathML в Chrome , BrowserFame, заархивировано из оригинала 14 октября 2012 г. , получено 16 октября 2012 г.
  20. ^ Стабильный Chrome 24 поддерживает MathML и закрывает дыры в безопасности , The H Online , получено 11 января 2013 г.
  21. ^ Обновление стабильного канала , получено 7 апреля 2013 г.
  22. ^ a b «Google вычитает MathML из Chrome, и гнев умножается» . CNET . Проверено 22 ноября 2014 года .
  23. ^ Фредерик Ван. «Финансирование разработок MathML в Gecko и WebKit - Блог де Фредерик» . maths-informatique-jeux.com . Архивировано из оригинального 14 декабря 2014 года . Проверено 22 ноября 2014 года .
  24. ^ McCathieNevile, Чарльз (27 сентября 2007), Can пустельги делать математику? Поддержка MathML в Opera Kestrel , Opera
  25. Olsen, Tommy A. (16 ноября 2007 г.), Еще больше работ , Opera, заархивировано из оригинала 18 ноября 2007 г.
  26. ^ MathML - Блог Opera MathML . My.opera.com (1 ноября 2007 г.). Проверено 9 мая 2012 года.
  27. ^ UserJS для MathML 2.0 . My.opera.com. Проверено 9 мая 2012 года.
  28. ^ Opera 14 бета для Android выходит , архивируются с оригинала на 8 марта 2013
  29. ^ MathPlayer - история версий
  30. ^ «Microsoft искажает отображение математики в IE10 и 11» . dessci.com . Архивировано из оригинала на 1 июля 2014 года . Проверено 22 ноября 2014 года .
  31. ^ Ошибка 30526 - Поддержка MathML для Konqi
  32. ^ Vismor, Тимоти, Просмотр математики в Интернете , получены 13 апреля +2011
  33. ^ Питер Краутцбергер. «MathML продолжает развиваться» . oreilly.com . Проверено 22 ноября 2014 года .
  34. ^ Deyan Ginev; Майкл Колхейз; Мориц Шуботц; Раньер Сильва; Frédéric Wang, Mondial Association for Tools Handling MathML , данные получены 20 июня 2016 г.
  35. ^ Зависит отвыбранного механизма компоновки : Trident, Gecko или WebKit.
  36. ^ Зависит отвыбранного движка компоновки : Trident или Gecko.
  37. ^ Дэвид Карлайл (9 мая 2007 г.), XHTML и MathML из Office 2007 , Дэвид Карлайл , получено 20 сентября 2007 г.

Дальнейшее чтение [ править ]

Технические характеристики [ править ]

  • Рекомендация W3C: Спецификация математического языка разметки (MathML) 1.01
  • Рекомендация W3C: язык математической разметки (MathML) версии 2.0 (второе издание)
  • Рекомендация W3C: язык математической разметки (MathML) версии 3.0 (третье издание)

Внешние ссылки [ править ]

  • W3C Math Home - содержит спецификации, ответы на часто задаваемые вопросы и список поддерживаемого программного обеспечения.
  • Пави, Сандху (12 декабря 2002 г.). «Справочник по математике» . Чарльз Ривер Медиа . Дата обращения 2 октября 2015 .