MathML - MathML

MathML
РазработанКонсорциум World Wide Web
Тип форматаЯзык разметки
Расширен сXML
СтандартW3C MathML

Математический язык разметки (MathML) это язык математической разметки, приложение XML для описания математический нотации и фиксирование его структуры и содержания. Он направлен на интеграцию математических формул в Всемирная сеть страницы и другие документы. Это часть HTML5 и Стандарт ISO ISO / IEC DIS 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 пространство имен. Когда MathML используется в HTML (в отличие от XML), это пространство имен автоматически выводится анализатором HTML, и его не нужно указывать в документе.

MathML версии 3

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

Разработка MathML 3.0 прошла несколько этапов. В июне 2006 года W3C повторно уполномочил рабочую группу MathML разработать рекомендацию MathML 3 до февраля 2008 года, а в ноябре 2008 года продлил срок действия до апреля 2010 года. В июне 2009 года был опубликован шестой рабочий проект версии MathML 3. 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, Опера 9.50 build 9656+ или Fire Vox расширение для Firefox).

Презентация MathML

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

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

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

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

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

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

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

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

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

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

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

    <mrow>      а & InvisibleTimes; <msup>х 2</msup>      + b & InvisibleTimes; х + с </mrow>

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

    <mrow>      <mi>а</mi> <mo>& InvisibleTimes;</mo> <msup><mi>Икс</mi><mn>2</mn></msup>      <mo>+</mo><mi>б</mi><mo>& InvisibleTimes;</mo><mi>Икс</mi>      <mo>+</mo><mi>c</mi>    </mrow>

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

  <?xml version="1.0" encoding="UTF-8"?>             "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">  <математика xmlns ="http://www.w3.org/1998/Math/MathML">    <mrow>      <mi>а</mi>      <mo>& InvisibleTimes;</mo>      <msup>        <mi>Икс</mi>        <mn>2</mn>      </msup>      <mo>+</mo>      <mi>б</mi>      <mo>& InvisibleTimes; </mo>      <mi>Икс</mi>      <mo>+</mo>      <mi>c</mi>    </mrow>  </math>

Content MathML

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

Токены, такие как идентификаторы и числа, размечены индивидуально, как и для Presentation MathML, но с такими элементами, как ci и сп. Операторы представлены не просто токеном другого типа, а конкретными элементами, математическая семантика которых известна MathML: раз, мощностьи т. д. Существует более сотни различных элементов для разных функций и операторов.[7]

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

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

<math>    <apply>        <plus/>        <apply>            <times/>            <ci>а</ci>            <apply>                <power/>                <ci>Икс</ci>                <cn>2</cn>            </apply>        </apply>        <apply>            <times/>            <ci>б</ci>            <ci>Икс</ci>        </apply>        <ci>c</ci>    </apply></math>

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

  (плюс    (раз а (мощность Икс 2))    (раз б Икс)    c)

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

Аннотации Викиданных в Content MathML

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

Пример и сравнение с другими форматами

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

будет размечен с использованием Латекс синтаксис вроде этого:

х = frac{-b вечера  sqrt{б^2 - 4ac}}{}

в 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 элементы:

<математика режим ="дисплей" xmlns ="http://www.w3.org/1998/Math/MathML"> <semantics>  <mrow>    <mi>Икс</mi>    <mo>=</mo>    <mfrac>      <mrow>        <мес форма ="приставка">& # x2212;<!-- − --></mo>        <mi>б</mi>        <mo>& # x00B1;<!-- &PlusMinus; --></mo>        <msqrt>          <msup>            <mi>б</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>а</mi>      </mrow>    </mfrac>  </mrow>  <аннотация кодировка =«TeX»>     x =  frac {-b  pm  sqrt {b ^ 2-4ac}} {2a} </annotation>  <аннотация кодировка =«StarMath 5.0»>     x = {- b plusminus sqrt {b ^ 2 - 4 ac}} над {2 a} </annotation> </semantics></math>

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>  "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"> xmlns ="http://www.w3.org/1999/xhtml" xml: lang ="en">  <head>    <title>Пример MathML, встроенного в файл XHTML</title>    <мета имя ="описание" содержание =«Пример MathML, встроенного в файл XHTML»/>  </head>  <body>    <h1>Пример MathML, встроенного в файл XHTML</h1>    <p>      Площадь круга равна <математика xmlns ="http://www.w3.org/1998/Math/MathML">        <mi>& # x03C0;<!-- π --></mi>        <mo>& # x2062;<!-- &InvisibleTimes; --></mo>        <msup>          <mi>р</mi>          <mn>2</mn>        </msup>      </math>.    </p>  </body></html>
не плавать
Визуализация формулы для круга в MathML + XHTML с использованием Firefox 22 в Mac OS X

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

<!DOCTYPE html><html язык="en">  <голова>    <мета кодировка=«УТФ-8»>    <заглавие>Пример MathML, встроенного в файл HTML5</заглавие>  </голова>  <тело>    <h1>Пример MathML, встроенного в файл HTML5</h1>    <п>      Площадь круга равна <математика>        <ми>&Пи;</ми>        <мес>& InvisibleTimes;</мес>        <msup>          <ми>р</ми>          <мин>2</мин>        </msup>      </математика>.    </п>  </тело></html>

Поддержка браузера

Из основных веб-браузеры, Геккон браузеры на основе (например, Fire Fox ) имеют наиболее полную встроенную поддержку MathML.[14][15]

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

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

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

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

В KHTML -на основании Konqueror в настоящее время не поддерживает MathML.[30]

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

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

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

БраузерMathML
Amayaда
AOL ExplorerНет[примечание 1]
AvantНет
Арорада
Василискда
Каминода
ХромНет[21]
ДиллоНет
Doobleда
ELinksНет
ФальконНет
Стадода
Галеонда
iCabНет
Internet ExplorerНет[примечание 1]
Internet Explorer для MacНет
К-Мелеонда
KonquerorНет
СсылкиНет
Лунаскейпда[34]
РысьНет
MaxthonНет
Microsoft EdgeНет
МидориНет
МозаикаНет
Mozillaда
Mozilla Firefoxда
Netscapeда
Браузер NetscapeЗависит[35]
Netscape NavigatorНет
Netscape Navigator 9да
NetSurfНет
OmniWebНет
Операда
Бледная лунада
ПолярностьНет
СафариНет
SeaMonkeyда
ШиираНет
СлейпнирНет[примечание 1]
серфитьНет
Браузер TorchНет
Интернетда
Всемирная сетьНет
w3mНет

Прочие стандарты

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

<apply>   кодировка ="OpenMath" определениеURL ="http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP">    <msub><mi>п</mi><mn>1</mn></msub>  </csymbol>  <ci>Икс</ci></apply>

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

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

Смотрите также

Заметки

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

использованная литература

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

дальнейшее чтение

Характеристики

внешние ссылки