Тип интернет-СМИ | приложение / mathml + xml, приложение / mathml-презентация + xml, приложение / mathml-content + xml, math / mml |
---|---|
Разработан | Консорциум World Wide Web |
Тип формата | Язык разметки |
Расширен с | XML |
Стандарт | W3C MathML |
Математический язык разметки ( 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, многие объекты доступны для указания специальных символов по имени, например, π
и →
. Интересной особенностью MathML является то, что сущности также существуют для выражения обычно невидимых операторов, например, ⁢
для неявного умножения. Они есть:
ФУНКЦИОНАЛЬНОЕ ПРИЛОЖЕНИЕ 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]
Браузер | MathML |
---|---|
Amaya | да |
AOL Explorer | Нет [примечание 1] |
Avant | Нет |
Арора | да |
Василиск | да |
Камино | да |
Хром | Нет [22] |
Дилло | Нет |
Dooble | да |
ELinks | Нет |
Фалькон | Нет |
Стадо | да |
Галеон | да |
iCab | Нет |
Internet Explorer | Нет [примечание 1] |
Internet Explorer для Mac | Нет |
К-Мелеон | да |
Konqueror | Нет |
Ссылки | Нет |
Лунаскейп | Да [35] |
Рысь | Нет |
Maxthon | Нет |
Microsoft Edge | Нет |
Мидори | Нет |
Мозаика | Нет |
Mozilla | да |
Mozilla Firefox | да |
Netscape | да |
Браузер Netscape | Зависит [36] |
Netscape Navigator | Нет |
Netscape Navigator 9 | да |
NetSurf | Нет |
OmniWeb | Нет |
Опера | да |
Браузер Otter | да |
Бледная луна | да |
Полярность | Нет |
Qutebrowser | Нет |
Сафари | Нет |
SeaMonkey | да |
Шиира | Нет |
Слейпнир | Нет [примечание 1] |
серфить | Нет |
Браузер Torch | Нет |
Интернет | да |
Всемирная паутина | Нет |
w3m | Нет |
Другие стандарты [ править ]
Другой стандарт под названием OpenMath , который был разработан (в основном теми же людьми, которые разработали Content MathML) более конкретно для семантического хранения формул, также может использоваться в качестве дополнения к MathML. Данные OpenMath можно внедрить в MathML с помощью <annotation-xml encoding="OpenMath">
элемента. Словари содержимого 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
Примечания [ править ]
- ^ a b c Доступно с плагином MathPlayer.
Ссылки [ править ]
- ^ «MathML для профиля CSS» . W3C. 7 июня 2011 . Проверено 25 июля 2013 года .
- ^ a b Язык математической разметки Версия 3.0 Рекомендация W3C . W3.org. Проверено 9 мая 2012 года.
- ^ MathML Версия 3.0 2-е издание . W3.org. Проверено 8 июля 2014 года.
- ^ «W3C MathML 3.0 утвержден как международный стандарт ISO / IEC» . W3.org . 23 июня 2015 . Дата обращения 12 июля 2015 .
- ^ "Версия 16 JAWS" .
- ^ «Персонажи, объекты и шрифты» . www.w3.org .
- ^ «Определения сущностей XML для символов (2-е издание)» . www.w3.org .
- ^ «Разметка содержимого» . www.w3.org .
- ^ Стивен ДеРоуз. Книга часто задаваемых вопросов SGML: Понимание взаимосвязи SGML и XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8 .
- ^ Канонические S-выражения # cite note-0
- ^ "OpenMath Home · OpenMath" . www.openmath.org .
- ^ Мориц Шуботц; Филипп Шарпф; Бела Гипп. (2018). «Представление математических формул в Content MathML с использованием Викиданных» (PDF) . Birndl @ sigir .
- ^ "Викиданные" . www.wikidata.org .
- ^ Басвелл, Стивен; Девитт, Стэн; Диас, Ангел; и другие. (7 июля 1999 г.). "Спецификация математического языка разметки (MathML) 1.01 (Аннотация)" . Проверено 26 сентября 2006 года .
Хотя MathML удобен для чтения человеком, ожидается, что во всех случаях, кроме простейших, авторы будут использовать редакторы уравнений, программы преобразования и другие специализированные программные инструменты для создания MathML.
- ^ Ван, Фредерик, Mozilla MathML Status , Mozilla
- ^ Сидже, Роджер Б., Разработка MathML для Mozilla , Mozilla
- ^ Ошибка 3251 - Реализация MathML (основная ошибка) , WebKit. . . (Однако «см. Также») https://trac.webkit.org/wiki/MathML%20Status
- ^ Safari 5.1 и математика
- ^ Поддержка MathML в Chrome , BrowserFame, заархивировано из оригинала 14 октября 2012 г. , получено 16 октября 2012 г.
- ^ Стабильный Chrome 24 поддерживает MathML и закрывает дыры в безопасности , The H Online , получено 11 января 2013 г.
- ^ Обновление стабильного канала , получено 7 апреля 2013 г.
- ^ a b «Google вычитает MathML из Chrome, и гнев умножается» . CNET . Проверено 22 ноября 2014 года .
- ^ Фредерик Ван. «Финансирование разработок MathML в Gecko и WebKit - Блог де Фредерик» . maths-informatique-jeux.com . Архивировано из оригинального 14 декабря 2014 года . Проверено 22 ноября 2014 года .
- ^ McCathieNevile, Чарльз (27 сентября 2007), Can пустельги делать математику? Поддержка MathML в Opera Kestrel , Opera
- ↑ Olsen, Tommy A. (16 ноября 2007 г.), Еще больше работ , Opera, заархивировано из оригинала 18 ноября 2007 г.
- ^ MathML - Блог Opera MathML . My.opera.com (1 ноября 2007 г.). Проверено 9 мая 2012 года.
- ^ UserJS для MathML 2.0 . My.opera.com. Проверено 9 мая 2012 года.
- ^ Opera 14 бета для Android выходит , архивируются с оригинала на 8 марта 2013
- ^ MathPlayer - история версий
- ^ «Microsoft искажает отображение математики в IE10 и 11» . dessci.com . Архивировано из оригинала на 1 июля 2014 года . Проверено 22 ноября 2014 года .
- ^ Ошибка 30526 - Поддержка MathML для Konqi
- ^ Vismor, Тимоти, Просмотр математики в Интернете , получены 13 апреля +2011
- ^ Питер Краутцбергер. «MathML продолжает развиваться» . oreilly.com . Проверено 22 ноября 2014 года .
- ^ Deyan Ginev; Майкл Колхейз; Мориц Шуботц; Раньер Сильва; Frédéric Wang, Mondial Association for Tools Handling MathML , данные получены 20 июня 2016 г.
- ^ Зависит отвыбранного механизма компоновки : Trident, Gecko или WebKit.
- ^ Зависит отвыбранного движка компоновки : Trident или Gecko.
- ^ Дэвид Карлайл (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 .