Тип интернет-СМИ | приложение / mathml + xml, приложение / mathml-презентация + xml, приложение / mathml-content + xml, math / mml |
---|---|
Разработано | Консорциум World Wide Web |
Тип формата | Язык разметки |
Расширен с | XML |
Стандарт | W3C MathML |
Математический язык разметки | |
Родное имя | |
---|---|
Положение дел | Рекомендация W3C |
Впервые опубликовано | Апрель 1998 ( 1998-04) |
Последняя версия | 3.0 10 апреля 2014 г. ; 7 лет назад ( 2014-04-10) |
Организация | W3C, ISO, МЭК |
Комитет | |
Редакторы | |
Авторы | Основные авторы
|
Базовые стандарты | XML |
Связанные стандарты | OpenMath, Office Open XML, OMDoc |
Сокращенное название | MathML |
Веб-сайт |
Математический язык разметки ( MathML) - это язык математической разметки, приложение XML для описания математических обозначений и фиксации как его структуры, так и содержания. Он направлен на интеграцию математических формул в страницы всемирной паутины и другие документы. Он является частью HTML5 и стандарта ISO / IEC 40314 с 2015 года.
MathML 1 был выпущен в качестве рекомендации W3C в апреле 1998 года как первый язык XML, рекомендованный W3C. Версия 1.01 формата была выпущена в июле 1999 года, а версия 2.0 появилась в феврале 2001 года.
В октябре 2003 года второе издание MathML Version 2.0 было опубликовано в качестве окончательного выпуска рабочей группой W3C Math.
MathML был первоначально разработан до завершения создания пространств имен XML. Однако ему было назначено пространство имен сразу после завершения Рекомендации по пространству имен, и для использования XML элементы должны находиться в пространстве имен с URL-адресом пространства имен http://www.w3.org/1998/Math/MathML. Когда MathML используется в HTML (в отличие от XML), это пространство имен автоматически выводится анализатором HTML, и его не нужно указывать в документе.
Версия 3 спецификации MathML была выпущена как рекомендация W3C 20 октября 2010 года. Рекомендация A MathML для профиля CSS была позже выпущена 7 июня 2011 года; это подмножество MathML, подходящее для форматирования CSS. Другое подмножество, Strict Content MathML, предоставляет подмножество MathML контента с единообразной структурой и предназначено для совместимости с OpenMath. Другие элементы контента определяются в терминах преобразования в строгое подмножество. Новые элементы содержимого включают в себя то, lt;bindgt;
что связывает связанные переменные ( lt;bvargt;
) с выражениями, например индекс суммирования. Новый lt;sharegt;
элемент позволяет разделять структуру.
Разработка MathML 3.0 прошла несколько этапов. В июне 2006 года W3C повторно уполномочил рабочую группу MathML подготовить рекомендацию MathML 3 до февраля 2008 года, а в ноябре 2008 года продлил срок действия устава до апреля 2010 года. В июне 2009 года был опубликован шестой рабочий проект версии MathML 3. 10 августа 2010 года версия 3 были преобразованы в «Предлагаемую рекомендацию», а не в проект.
Второе издание MathML 3.0 было опубликовано в качестве Рекомендации W3C 10 апреля 2014 года. Спецификация была утверждена в качестве международного стандарта ISO / IEC 40314: 2015 23 июня 2015 года.
MathML имеет дело не только с представлением, но и со значением компонентов формулы (последняя часть MathML известна как «Content MathML»). Поскольку значение уравнения сохраняется отдельно от презентации, то, как будет передаваться контент, можно оставить на усмотрение пользователя. Например, веб-страницы со встроенным MathML можно просматривать как обычные веб-страницы во многих браузерах, но пользователи с ослабленным зрением также могут читать им тот же MathML с помощью программ чтения с экрана (например, с помощью подключаемого модуля MathPlayer для Internet Explorer или Firefox, Opera 9.50 build 9656+ или расширение Fire Vox для Firefox). Новые версии JAWS поддерживают озвучивание MathML, а также вывод шрифта Брайля.
Презентация MathML ориентирована на отображение уравнения и содержит около 30 элементов. Имена всех элементов начинаются с m
. Выражение Presentation MathML создается из токенов, которые объединяются с использованием элементов более высокого уровня, которые контролируют их макет (также имеется около 50 атрибутов, которые в основном контролируют мелкие детали).
Элементы токена обычно содержат только символы (не другие элементы). Они включают:
lt;migt;xlt;/migt;
- идентификаторы;lt;mogt;+lt;/mogt;
- операторы;lt;mngt;2lt;/mngt;
- числа.lt;mtextgt;non zerolt;/mtextgt;
- текст.Однако обратите внимание, что эти элементы токена могут использоваться в качестве точек расширения, позволяя разметку на языках хоста. MathML в HTML5 допускает большую часть встроенной HTML-разметки в многотекстовом тексте и lt;mtextgt;lt;bgt;nonlt;/bgt; zerolt;/mtextgt;
соответствует этому, при этом HTML-разметка используется в MathML для разметки встроенного текста (в этом примере первое слово выделено жирным шрифтом).
Они объединяются с использованием элементов макета, которые обычно содержат только элементы. Они включают:
lt;mrowgt;
- горизонтальный ряд предметов;lt;msupgt;
, lt;munderovergt;
И другие - надстрочные, пределы над и под операторами, как суммы и т.д.;lt;mfracgt;
- фракции;lt;msqrtgt;
а lt;mrootgt;
- корни;lt;mfencedgt;
- окружение контента ограничениями, такими как круглые скобки.Как обычно в HTML и XML, многие сущности доступны для указания специальных символов по имени, например, amp;pi;
и amp;RightArrow;
. Интересной особенностью MathML является то, что сущности также существуют для выражения обычно невидимых операторов, таких как amp;InvisibleTimes;
(или сокращение amp;it;
) для неявного умножения. Они есть:
Полная спецификация объектов MathML тесно согласована с соответствующими спецификациями для использования с HTML и XML в целом.
Таким образом, для выражения требуются два элемента макета: один для создания общей горизонтальной строки и один для экспоненты с надстрочным индексом. Включая только элементы макета и (еще не размеченные) голые токены, структура выглядит так:
lt;mrowgt; a amp;InvisibleTimes; lt;msupgt;x 2lt;/msupgt; + b amp;InvisibleTimes; x + c lt;/mrowgt;
Однако отдельные токены также должны быть идентифицированы как идентификаторы (mi), операторы (mo) или числа (mn). После добавления разметки токена полная форма будет выглядеть так:
lt;mrowgt; lt;migt;alt;/migt; lt;mogt;amp;InvisibleTimes;lt;/mogt; lt;msupgt;lt;migt;xlt;/migt;lt;mngt;2lt;/mngt;lt;/msupgt; lt;mogt;+lt;/mogt;lt;migt;blt;/migt;lt;mogt;amp;InvisibleTimes;lt;/mogt;lt;migt;xlt;/migt; lt;mogt;+lt;/mogt;lt;migt;clt;/migt; lt;/mrowgt;
Допустимый документ MathML обычно состоит из объявления XML, объявления DOCTYPE и элемента документа. Затем тело документа содержит выражения MathML, которые появляются в элементах lt;mathgt; по мере необходимости в документе. Часто MathML встраивается в более общие документы, такие как HTML, DocBook или другие схемы XML. Полный документ, состоящий только из приведенного выше примера MathML, показан здесь:
lt;?xml version="1.0" encoding="UTF-8"?gt; lt;!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"gt; lt;math xmlns="http://www.w3.org/1998/Math/MathML"gt; lt;mrowgt; lt;migt;alt;/migt; lt;mogt;amp;InvisibleTimes;lt;/mogt; lt;msupgt;lt;migt;xlt;/migt;lt;mngt;2lt;/mngt;lt;/msupgt; lt;mogt;+lt;/mogt;lt;migt;blt;/migt;lt;mogt;amp;InvisibleTimes;lt;/mogt;lt;migt;xlt;/migt; lt;mogt;+lt;/mogt;lt;migt;clt;/migt; lt;/mrowgt; lt;/mathgt;
Content MathML фокусируется на семантике или значении выражения, а не на его макете. Центральным lt;applygt;
элементом Content MathML является элемент, представляющий приложение-функцию. Применяемая функция является первым дочерним элементом lt;applygt;
, а ее операнды или параметры - оставшимися дочерними элементами. Content MathML использует только несколько атрибутов.
Токены, такие как идентификаторы и числа, размечаются индивидуально, как и для Presentation MathML, но с такими элементами, как ci
и cn
. Вместо того, чтобы быть просто другой тип маркера, операторы представлены конкретные элементы, у которых математическая семантика известны MathML: times
, power
и т.д. Есть более ста различных элементов для различных функций и операторов.
Например, представляет и представляет. Элементы, представляющие операторы и функции, являются пустыми элементами, потому что их операнды являются другими элементами, находящимися под содержимым. lt;applygt;lt;sin/gt;lt;cigt;xlt;/cigt;lt;/applygt;
lt;applygt;lt;plus/gt;lt;cigt;xlt;/cigt;lt;cngt;5lt;/cngt;lt;/applygt;
lt;applygt;
Выражение можно представить как
lt;mathgt; lt;applygt; lt;plus/gt; lt;applygt; lt;times/gt; lt;cigt;alt;/cigt; lt;applygt; lt;power/gt; lt;cigt;xlt;/cigt; lt;cngt;2lt;/cngt; lt;/applygt; lt;/applygt; lt;applygt; lt;times/gt; lt;cigt;blt;/cigt; lt;cigt;xlt;/cigt; lt;/applygt; lt;cigt;clt;/cigt; lt;/applygt; lt;/mathgt;
Content MathML почти изоморфен выражениям на функциональном языке, таком как Scheme. lt;applygt;...lt;/applygt;
составляет схему (...)
, а многие операторы и функциональные элементы составляют функции схемы. С этим тривиальным буквальным преобразованием, плюс снятие тегов с отдельных токенов, приведенный выше пример выглядит следующим образом:
(plus (times a (power x 2)) (times b x) c)
Это отражает давно известную тесную взаимосвязь между структурами элементов XML и S-выражениями LISP или Scheme.
Согласно OM Society, словари содержимого OpenMath могут использоваться как наборы символов и идентификаторов с декларациями их семантики - имен, описаний и правил. В документе 2018 года, представленном на конференции SIGIR, предлагалось использовать базу семантических знаний Wikidata в качестве словаря содержимого OpenMath для связывания семантических элементов математической формулы с уникальными и независимыми от языка элементами Викиданных.
Известная квадратичная формула :
будет размечен с использованием синтаксиса LaTeX следующим образом:
x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
в troff / eqn вот так:
x={-b +- sqrt{b sup 2 – 4ac}} over 2a
в Apache OpenOffice Math и LibreOffice Math вот так (все три действительны):
x={-b plusminus sqrt {b^2 – 4 ac}} over {2 a} x={-b +- sqrt {b^2 – 4ac}} over {2a} x={-b ± sqrt {b^2 – 4ac}} over {2a}
в AsciiMath вот так:
x=(-b +- sqrt(b^2 - 4ac))/(2a)
Вышеупомянутое уравнение может быть представлено в Presentation MathML как дерево выражений, составленное из элементов макета, таких как элементы mfrac или msqrt:
lt;math mode="display" xmlns="http://www.w3.org/1998/Math/MathML"gt; lt;semanticsgt; lt;mrowgt; lt;migt;xlt;/migt; lt;mogt;=lt;/mogt; lt;mfracgt; lt;mrowgt; lt;mo form="prefix"gt;amp;minus;lt;/mogt; lt;migt;blt;/migt; lt;mogt;amp;pm;lt;/mogt; lt;msqrtgt; lt;msupgt;lt;migt;blt;/migt;lt;mngt;2lt;/mngt;lt;/msupgt; lt;mogt;amp;minus;lt;/mogt; lt;mngt;4lt;/mngt;lt;mogt;amp;it;lt;/mogt;lt;migt;alt;/migt;lt;mogt;amp;it;lt;/mogt;lt;migt;clt;/migt; lt;/msqrtgt; lt;/mrowgt; lt;mrowgt; lt;mngt;2lt;/mngt; lt;mogt;amp;it;lt;/mogt; lt;migt;alt;/migt; lt;/mrowgt; lt;/mfracgt; lt;/mrowgt; lt;annotation encoding="application/x-tex"gt;lt;!-- TeX --gt; x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} lt;/annotationgt; lt;annotation encoding="StarMath 5.0"gt; x={-b plusminus sqrt {b^2 - 4 ac}} over {2 a} lt;/annotationgt; lt;!-- More annotations can be written: application/x-troff-eqn for eqn, application/x-asciimath for AsciiMath... --gt; lt;!-- Semantic MathML go under lt;annotation-xml encoding="MathML-Content"gt;. --gt; lt;/semanticsgt; lt;/mathgt;
В этом примере используется lt;annotationgt;
элемент, который можно использовать для встраивания семантической аннотации в формате, отличном от XML, например, для хранения формулы в формате, используемом редактором формул, таким как StarMath, или разметки с использованием синтаксиса LaTeX. encoding
Поле обычно представляет собой тип MIME, хотя большинство из уравнения кодирования не имеет такую регистрацию; В этом случае можно использовать произвольный текст.
Хотя XML-структура менее компактна, чем TeX, она обещает сделать его широко используемым и позволяет мгновенно отображать его в приложениях, таких как веб-браузеры, и облегчает интерпретацию его значения в математических программных продуктах. MathML не предназначен для написания или редактирования непосредственно людьми.
MathML, будучи XML, может быть встроен в другие файлы XML, такие как файлы XHTML, с использованием пространств имен XML. Такие браузеры, как Firefox 3+ и Opera 9.6+ (поддержка не завершена), могут отображать Presentation MathML, встроенную в XHTML.
lt;?xml version="1.0" encoding="UTF-8"?gt; lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"gt; lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"gt; lt;headgt; lt;titlegt;Example of MathML embedded in an XHTML filelt;/titlegt; lt;meta name="description" content="Example of MathML embedded in an XHTML file"/gt; lt;/headgt; lt;bodygt; lt;h1gt;Example of MathML embedded in an XHTML filelt;/h1gt; lt;pgt; The area of a circle is lt;math xmlns="http://www.w3.org/1998/Math/MathML"gt; lt;migt;amp;#x03C0;lt;!-- π --gt;lt;/migt; lt;mogt;amp;#x2062;lt;!-- amp;InvisibleTimes; --gt;lt;/mogt; lt;msupgt; lt;migt;rlt;/migt; lt;mngt;2lt;/mngt; lt;/msupgt; lt;/mathgt;. lt;/pgt; lt;/bodygt; lt;/htmlgt;
Встроенный MathML также поддерживается в файлах HTML5 в текущих версиях WebKit ( Safari и JavaFX / WebView ), Gecko ( Firefox ). Нет необходимости указывать пространства имен, как в XHTML.
lt;!DOCTYPE htmlgt; lt;html lang="en"gt; lt;headgt; lt;meta charset="utf-8"gt; lt;titlegt;Example of MathML embedded in an HTML5 filelt;/titlegt; lt;/headgt; lt;bodygt; lt;h1gt;Example of MathML embedded in an HTML5 filelt;/h1gt; lt;pgt; The area of a circle is lt;mathgt; lt;migt;amp;pi;lt;/migt; lt;mogt;amp;InvisibleTimes;lt;/mogt; lt;msupgt; lt;migt;rlt;/migt; lt;mngt;2lt;/mngt; lt;/msupgt; lt;/mathgt;. lt;/pgt; lt;/bodygt; lt;/htmlgt;
Из основных веб - браузеров, Gecko -На браузеры (например, Firefox ) имеют наиболее полную встроенную поддержку MathML.
Хотя механизм компоновки WebKit имеет разрабатываемую версию MathML, эта функция доступна только в версии 5.1 и выше Safari, Chrome 24, но не в более поздних версиях Chrome. Google удалил поддержку MathML, заявив, что проблемы с архитектурной безопасностью и малое использование не оправдывают затраты времени на разработку. По состоянию на октябрь 2013 года реализация WebKit / Safari содержит множество ошибок.
JavaFX / WebView. Также на основе WebKit встроенный веб-браузер JavaFX поддерживает MathML, начиная с версий JavaFX 8 Update 192 и JavaFX 11. Поддержка не поддерживается в предыдущих версиях JavaFX 8, JavaFX 9 и JavaFX 10.
Opera между версиями 9.5 и 12 поддерживает профиль MathML для CSS, но не может правильно позиционировать диакритические знаки. До версии 9.5 требовался пользовательский JavaScript или пользовательские таблицы стилей для имитации поддержки MathML. Начиная с Opera 14, Opera отказывается от поддержки MathML, перейдя на движок Chromium 25.
Microsoft Edge не поддерживает MathML и не планирует добавлять поддержку.
Internet Explorer не поддерживает MathML изначально. Поддержка IE6 через IE9 может быть добавлена путем установки плагина MathPlayer. В IE10 есть несколько сбоев в работе MathPlayer, и Microsoft решила полностью отключить в IE11 интерфейс бинарных плагинов, который нужен MathPlayer. MathPlayer имеет лицензию, которая может ограничивать его использование или распространение на коммерческих веб-страницах и в программном обеспечении. Использование или распространение подключаемого модуля MathPlayer для отображения HTML-содержимого через элемент управления WebBrowser в коммерческом программном обеспечении также может быть запрещено этой лицензией.
KHTML -А Konqueror в настоящее время не обеспечивает поддержку MathML.
Качество рендеринга MathML в браузере зависит от установленных шрифтов. Проект STIX Fonts выпустил исчерпывающий набор математических шрифтов под открытой лицензией. Cambria Math шрифт поставляется с Microsoft Windows была несколько более ограниченную поддержку.
По словам члена команды MathJax, ни один из основных производителей браузеров не платил своим разработчикам за любую работу по рендерингу MathML; любая существующая поддержка в подавляющем большинстве случаев является результатом неоплачиваемого времени / работы волонтеров.
В 2015 году была основана ассоциация MathML для поддержки принятия стандарта MathML.
Браузер | MathML |
---|---|
Amaya | да |
AOL Explorer | Нет |
Avant | Нет |
Арора | да |
Василиск | да |
Камино | да |
Хром, Хром | Нет |
Дилло | Нет |
Dooble | да |
ELinks | Нет |
Фалькон | Нет |
Стадо | да |
Галеон | да |
iCab | Нет |
Internet Explorer | Нет |
Internet Explorer для Mac | Нет |
К-Мелеон | да |
Konqueror | Нет |
Ссылки | Нет |
Лунаскейп | да |
Рысь | Нет |
Maxthon | Нет |
Microsoft Edge | да |
Мидори | Нет |
Мозаика | Нет |
Mozilla | да |
Mozilla Firefox | да |
Netscape | да |
Браузер Netscape | Зависит от |
Netscape Navigator | Нет |
Netscape Navigator 9 | да |
NetSurf | Нет |
OmniWeb | Нет |
Опера | да |
Браузер Otter | да |
Бледная луна | да |
Полярность | Нет |
Qutebrowser | Нет |
Сафари | Нет |
SeaMonkey | да |
Шиира | Нет |
Слейпнир | Нет |
серфить | Нет |
Браузер Torch | Нет |
Интернет | да |
Всемирная сеть | Нет |
w3m | Нет |
Другой стандарт, называемый OpenMath, который был разработан (в основном теми же людьми, которые разработали Content MathML) более конкретно для семантического хранения формул, также может использоваться в качестве дополнения к MathML. Данные OpenMath можно встроить в MathML с помощью lt;annotation-xml encoding="OpenMath"gt;
элемента. Словари содержимого OpenMath можно использовать для определения значения lt;csymbolgt;
элементов. Следующее определило бы P 1 ( x) как первый многочлен Лежандра
lt;applygt; lt;csymbol encoding="OpenMath" definitionURL="http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP"gt; lt;msubgt;lt;migt;Plt;/migt;lt;mngt;1lt;/mngt;lt;/msubgt; lt;/csymbolgt; lt;cigt;xlt;/cigt; lt;/applygt;
Формат OMDoc был создан для разметки более крупных математических структур, чем формулы, от утверждений, таких как определения, теоремы, доказательства или примеры, до теорий и учебников. Формулы в документах OMDoc могут быть написаны либо в Content MathML, либо в OpenMath; для презентации они конвертируются в Presentation MathML.
ISO / IEC стандарт Office Open XML (OOXML) определяет другой XML - математический синтаксис, полученный из Microsoft Office продуктов. Однако он частично совместим благодаря относительно простым преобразованиям XSL.