МатематикаML
Язык математической разметки | |
Аббревиатура | МатематикаML |
---|---|
Родное имя |
|
Статус | Рекомендация W3C [2] |
Впервые опубликовано | апрель 1998 г. |
Последняя версия | 3.0 [2] 10 апреля 2014 г [2] |
Организация | W3C , ИСО , МЭК [1] |
комитет |
|
Редакторы | |
Авторы | Основные авторы |
Базовые стандарты | XML |
Сопутствующие стандарты | OpenMath , Office Open XML , OMDoc |
Веб-сайт |
Язык математической разметки ( MathML ) — это язык математической разметки , приложение XML для описания математических обозначений и фиксации как его структуры, так и содержания, а также один из множества языков математической разметки . Его цель — естественным образом интегрировать математические формулы в страницы Всемирной паутины и другие документы. Он является частью HTML5 и стандартизирован ISO /IEC с 2015 года. [1]
История [ править ]
После некоторых экспериментов в браузере Arena, основанных на предложениях по математической разметке в HTML, [4] MathML 1 был выпущен в качестве рекомендации W3C в апреле 1998 года как первый язык XML , рекомендованный W3C . Версия 1.01 формата была выпущена в июле 1999 года, а версия 2.0 появилась в феврале 2001 года. Реализации спецификации появились в Amaya 1.1 , Mozilla 1.0 и Opera 9.5 . [5] [6] В октябре 2003 года второе издание MathML версии 2.0 было опубликовано как окончательный выпуск рабочей группы W3C Math .
Первоначально MathML был разработан до завершения разработки пространств имен XML . Однако ему было присвоено пространство имен сразу после завершения работы над Рекомендацией по пространству имен, и для использования XML элементы должны находиться в пространстве имен с URL-адресом пространства имен http://www.w3.org/1998/Math/MathML . Когда MathML используется в HTML (в отличие от XML), это пространство имен автоматически определяется анализатором HTML и не требует указания в документе. [7]
MathML версии 3 [ править ]
Версия 3 спецификации MathML была выпущена как рекомендация W3C 20 октября 2010 года. Рекомендация MathML для профиля CSS была позже выпущена 7 июня 2011 года; [8] это подмножество MathML, подходящее для форматирования CSS. Другое подмножество, Strict Content MathML , предоставляет подмножество содержимого MathML с единообразной структурой и предназначено для совместимости с OpenMath . Другие элементы контента определяются посредством преобразования в строгое подмножество. Новые элементы контента включают в себя <bind>
который связывает связанные переменные ( <bvar>
) к выражениям, например индексу суммирования. Новый <share>
элемент позволяет совместное использование структуры. [9]
Разработка MathML 3.0 прошла несколько этапов. В июне 2006 года W3C возобновил работу рабочей группы MathML для разработки рекомендаций MathML 3 до февраля 2008 года, а в ноябре 2008 года продлил срок действия устава до апреля 2010 года. Шестой рабочий проект версии MathML 3 был опубликован в июне 2009 года. 10 августа Версия 3 2010 года стала «Предлагаемой рекомендацией», а не черновиком. [9] появилась реализация MathML 2 . в WebKit Примерно в это же время [10] с внедрением Chromium , последовавшим пару лет спустя, [11] хотя эта реализация была удалена из Chromium менее чем через год. [12]
Второе издание MathML 3.0 было опубликовано как рекомендация W3C 10 апреля 2014 года. [2] Спецификация была утверждена в качестве международного стандарта ISO/IEC 40314:2015 23 июня 2015 года. [13] Также в 2015 году была основана Ассоциация MathML для поддержки принятия стандарта MathML. [14] В то время, по словам члена команды MathJax , ни один из крупных производителей браузеров не платил никому из своих разработчиков за работу по рендерингу MathML; Какая бы поддержка ни существовала, она в подавляющем большинстве была результатом неоплачиваемого времени/работы волонтеров. [15]
MathML Core [ править ]
В августе 2021 года была опубликована новая спецификация под названием MathML Core, описанная как «основное подмножество языка математической разметки или MathML, подходящее для реализации в браузере». [16] MathML Core отличается от MathML 3.0 включением подробных правил рендеринга и интеграции с CSS , ресурсами автоматического тестирования поддержки браузера и сосредоточением внимания на фундаментальном подмножестве MathML. Реализация была добавлена в Chromium в начале 2023 года. [17]
Презентация и семантика [ править ]
Расширение имени файла | |
---|---|
Тип интернет-СМИ |
приложение/математика+xml [18] |
Введите код | MML |
Единый идентификатор типа (UTI) | public.mathml |
конформация ИМВП | public.xml |
Разработано | Консорциум Всемирной паутины |
Тип формата | Математический язык разметки |
Расширено с | XML |
Распространено на | |
Стандартный | |
Открытый формат ? | Да |
MathML занимается не только представлением , но и значением компонентов формулы (последняя часть MathML известна как «Content MathML»). Поскольку значение уравнения сохраняется отдельно от представления, способ передачи содержимого может быть оставлен на усмотрение пользователя. Например, веб-страницы со встроенным в них MathML можно просматривать как обычные веб-страницы во многих браузерах, но пользователи с ослабленным зрением также могут читать тот же MathML с помощью программ чтения с экрана (например, с помощью VoiceOver в Safari ). JAWS, начиная с версии 16, поддерживает озвучку MathML, а также вывод Брайля. [20]
Качество рендеринга MathML в браузере зависит от установленных шрифтов. Проект STIX Fonts выпустил полный набор математических шрифтов под открытой лицензией. Шрифт Cambria Math , поставляемый с Microsoft Windows, имел немного более ограниченную поддержку. [21]
Действительный документ MathML обычно состоит из объявления XML, объявления DOCTYPE и элемента документа. Тело документа затем содержит выражения MathML, которые появляются в <math>
необходимые элементы в документе. Часто MathML встроен в более общие документы, такие как HTML , DocBook или другие форматы на основе XML .
Презентация MathML [ править ]
Тип интернет-СМИ |
приложение/mathml-презентация+xml [18] |
---|---|
Введите код | MMLp |
Единый идентификатор типа (UTI) | public.mathml.presentation |
конформация ИМВП | public.mathml |
Расширено с | Общий MathML |
Презентация MathML ориентирована на отображение уравнений и содержит около 30 элементов. Имена всех элементов начинаются с m
. Выражение Presentation MathML состоит из токенов , которые объединяются с помощью элементов более высокого уровня, которые управляют их расположением. На более мелкие детали представления влияют около 50 атрибутов.
Элементы токена обычно содержат только символы (а не другие элементы). Они включают в себя:
<mi>x</mi>
– идентификаторы;<mo>+</mo>
– операторы;<mn>2</mn>
– цифры;<mtext>such that</mtext>
– текст.
Однако обратите внимание, что эти элементы токена могут использоваться в качестве точек расширения, позволяя выполнять разметку на основных языках.
MathML в HTML5 допускает большую часть встроенной HTML-разметки в многотекстовом формате и <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. [22] тесно скоординирован с соответствующими спецификациями для использования с HTML и XML в целом. [23]
Таким образом, выражение требуется два элемента макета: один для создания общей горизонтальной строки и один для надстрочной экспоненты. Однако отдельные токены также должны быть идентифицированы как идентификаторы ( <mi>
), операторы ( <mo>
) или числа ( <mn>
). Если добавить разметку токена, полная форма будет выглядеть так:
<mrow>
<mi>a</mi> <mo>⁢</mo> <msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mo>⁢</mo><mi>x</mi>
<mo>+</mo><mi>c</mi>
</mrow>
Полный документ, состоящий только из приведенного выше примера 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>⁢</mo> <msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mo>⁢</mo><mi>x</mi>
<mo>+</mo><mi>c</mi>
</mrow>
</math>
Содержание MathML [ править ]
Тип интернет-СМИ |
приложение/mathml-content+xml |
---|---|
Введите код | MMLc |
Единый идентификатор типа (UTI) | public.mathml.content |
конформация ИМВП | public.mathml |
Расширено с | Общий MathML |
Content MathML фокусируется на семантике или значении выражения, а не на его расположении. Центральное место в Content MathML занимает <apply>
элемент, представляющий применение функции. Применяемая функция является первым дочерним элементом в <apply>
, а его операнды или параметры являются оставшимися дочерними элементами. Content MathML использует лишь несколько атрибутов.
Токены, такие как идентификаторы и числа, размечаются индивидуально, как и в Presentation MathML, но с такими элементами, как <ci>
и <cn>
. Вместо того, чтобы быть просто еще одним типом токена, операторы представлены конкретными элементами, математическая семантика которых известна MathML: <times>
, <power>
и т. д. Имеется более сотни различных элементов для разных функций и операторов. [24]
Например, <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>
<apply>
<times/>
<ci>b</ci>
<ci>x</ci>
</apply>
<ci>c</ci>
</apply>
</math>
Содержание MathML почти изоморфен выражениям такого функционального языка, как Scheme и других диалектов Lisp . <apply>...</apply>
составляет схему (...)
, а многие элементы операторов и функций представляют собой функции Scheme. Благодаря этому тривиальному буквальному преобразованию, а также снятию тегов с отдельных токенов, приведенный выше пример будет выглядеть следующим образом:
(plus
(times a (power x 2))
(times b x)
c)
Это отражает давно известную тесную связь между структурами элементов XML и LISP или Scheme S-выражениями . [25] [26]
Аннотация Викиданных в Content MathML [ править ]
По данным Общества ОМ, [27] Словари контента OpenMath можно использовать как коллекции символов и идентификаторов с объявлениями их семантики – имен, описаний и правил. Доклад 2018 года, представленный на SIGIR конференции [28] предложил использовать семантическую базу знаний Викиданных в качестве словаря контента OpenMath для связи семантических элементов математической формулы с уникальными и независимыми от языка элементами Викиданных.
Пример [ править ]
Известную квадратичную формулу можно представить в 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">−</mo>
<mi>b</mi>
<mo>±</mo>
<msqrt>
<msup><mi>b</mi><mn>2</mn></msup>
<mo>−</mo>
<mn>4</mn><mo>⁢</mo><mi>a</mi><mo>⁢</mo><mi>c</mi>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>⁢</mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
<annotation encoding="application/x-tex"><!-- TeX -->
x = \frac{-b\pm\sqrt{b^2-4ac}}{2a}
</annotation>
<annotation encoding="StarMath 5.0">
x = {-b plusminus sqrt {b^2 - 4 ac}} over {2 a}
</annotation>
<!-- More annotations can be written: application/x-troff-eqn for eqn, application/x-asciimath for AsciiMath... -->
<!-- Semantic MathML go under <annotation-xml encoding="MathML-Content">. -->
</semantics>
</math>
В этом примере используется <annotation>
элемент, который можно использовать для внедрения семантической аннотации в формате, отличном от XML, например, для хранения формулы в формате, используемом редактором уравнений, например StarMath , или разметке с использованием синтаксиса LaTeX . encoding
поле обычно имеет тип MIME , хотя большинство кодировок уравнений не имеют такой регистрации; В таких случаях можно использовать текст произвольной формы.
Несмотря на то, что XML-структурирование MathML менее компактно, чем другие форматы, оно делает его содержимое широко используемым и доступным, позволяет почти мгновенно отображать его в таких приложениях, как веб-браузеры , и облегчает интерпретацию его значения в математических программных продуктах. MathML не предназначен для написания или редактирования непосредственно людьми. [29]
Встраивание MathML в файлы HTML/XHTML [ править ]
MathML, будучи XML, может быть встроен в другие файлы XML, такие как файлы XHTML , с использованием пространств имен XML.
<?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>⁢<!-- ⁢ --></mo>
<msup>
<mi>r</mi>
<mn>2</mn>
</msup>
</math>.
</p>
</body>
</html>

Inline MathML также поддерживается в HTML5 файлах . Нет необходимости указывать пространства имен, как это было в XHTML .
<!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>⁢</mo>
<msup>
<mi>r</mi>
<mn>2</mn>
</msup>
</math>.
</p>
</body>
</html>
Другие стандарты [ править ]
Другой стандарт под названием 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, заимствованный из Office Microsoft . Однако частично совместимо [30] посредством XSL-преобразований .
См. также [ править ]
- CSS
- Список языков разметки документов
- Сравнение языков разметки документов
- Редакторы формул
- LaTeX2HTML
- ЛаТеXML
- KaTeX — библиотека JavaScript, преобразующая LaTeX в MathML.
- MathJax — библиотека JavaScript, преобразующая LaTeX в MathML.
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с д и «ISO – ISO/IEC 40314:2016 – Информационные технологии. Язык математической разметки (MathML), версия 3.0, 2-е издание» . ИСО . 2016 . Проверено 6 апреля 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б с д и ж г час Карлайл, Дэвид; Ион, Патрик; Майнер, Роберт, ред. (10 апреля 2014 г.). «Язык математической разметки (MathML) версии 3.0, 2-е издание» . W3C . Проверено 6 апреля 2021 г.
- ^ Карлайл, Дэвид; Ван, Фредерик, ред. (4 мая 2022 г.). «Ядро MathML» . W3C . Проверено 3 марта 2023 г.
- ^ «12 – Математические уравнения» . 8 ноября 1993 г.
- ^ «Выпущена Mozilla 1.0!» . 5 июня 2002 года . Проверено 3 марта 2023 г.
- ^ МакКэтиНевил, Чарльз (27 сентября 2007 г.), Могут ли пустельги заниматься математикой? Поддержка MathML в Opera Kestrel , Opera
- ^ «HTML-уровень жизни» . Проверено 3 марта 2023 г.
- ^ «MathML для профиля CSS» . W3C. 7 июня 2011 года . Проверено 25 июля 2013 г.
- ↑ Перейти обратно: Перейти обратно: а б с «Рекомендации W3C по языку математической разметки версии 3.0» . W3.org . Проверено 9 мая 2012 г.
- ^ Дакин, Бет (17 августа 2010 г.). «Анонсируем… MathML!» . Проверено 3 марта 2023 г.
- ^ «Руководство веб-разработчика по последней бета-версии Chrome» . 8 ноября 2012 года . Проверено 3 марта 2023 г.
- ^ «Комментарий 32 к проблеме 152430: Включение поддержки MathML» . 5 февраля 2013 года . Проверено 3 марта 2023 г.
- ^ «W3C MathML 3.0 утвержден как международный стандарт ISO/IEC» . W3.org . 23 июня 2015 года . Проверено 12 июня 2015 г.
- ^ Деян Гинев; Майкл Кольхазе; Мориц Шубоц; Раньере Силва; Фредерик Ван, Mondial Association for Tools Handling MathML , получено 20 июня 2016 г.
- ^ Крауцбергер, Питер (1 ноября 2013 г.). «MathML развивается» . oreilly.com . Проверено 22 ноября 2014 г.
- ^ «Ядро MathML» . 4 мая 2022 г. Проверено 3 марта 2023 г.
- ^ «Игалия возвращает MathML в Chromium» . Новости Игалии. 10 января 2023 г. Проверено 10 января 2023 г.
- ↑ Перейти обратно: Перейти обратно: а б с Либбрехт, Пол (1 сентября 2023 г.). «Объявления медиа-типа MathML» . W3C . Проверено 2 сентября 2023 г.
- ^ «Интерфейс MathML» . W3C. 21 октября 2003 года . Проверено 2 сентября 2023 г.
Рабочая группа W3C по математике рекомендует стандартное расширение файла.
.mml
используется для реестра браузера. - ^ «JAWS Версия 16» . Проверено 7 сентября 2023 г.
- ^ Висмор, Тимоти, «Просмотр математики в Интернете» , получено 13 апреля 2011 г.
- ^ «Символы, объекты и шрифты» . W3.org .
- ^ «Определения объектов XML для символов (2-е издание)» . W3.org .
- ^ «Разметка контента» . W3.org .
- ^ Стивен ДеРоуз. Книга часто задаваемых вопросов по SGML: понимание взаимосвязи SGML и XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8 .
- ^ Канонические S-выражения#cite note-0
- ^ «Главная страница OpenMath · OpenMath» . www.openmath.org .
- ^ Шубоц, Мориц; Шарпф, Филипп; Гипп, Бела (2018). «Представление математических формул в контенте MathML с использованием Викиданных» (PDF) . Бирндл@сигир .
- ^ Басвелл, Стивен; Девитт, Стэн; Диас, Анхель; и др. (7 июля 1999 г.). «Спецификация языка математической разметки (MathML) 1.01 (аннотация)» . Проверено 26 сентября 2006 г.
Хотя MathML удобен для чтения человеком, ожидается, что во всех случаях, кроме самых простых, авторы будут использовать редакторы уравнений, программы преобразования и другие специализированные программные инструменты для создания MathML.
- ^ Карлайл, Дэвид (10 апреля 2007 г.). «XHTML и MathML из Office 2007» . Блогспот . Проверено 20 сентября 2007 г.
Дальнейшее чтение [ править ]
Технические характеристики [ править ]
- Рекомендация W3C: Спецификация языка математической разметки (MathML) 1.01
- Рекомендация W3C: язык математической разметки (MathML), версия 2.0 (второе издание)
- Рекомендация W3C: язык математической разметки (MathML), версия 3.0 (третье издание)
Внешние ссылки [ править ]
- Домашняя страница W3C Math — содержит спецификации, часто задаваемые вопросы и список поддерживающего программного обеспечения.
- Пави, Сандху (12 декабря 2002 г.). «Справочник по MathML» . Чарльз Ривер Медиа . Проверено 2 октября 2015 г.
- web-xslt — набор программ XSLT для обработки MathML (например, преобразование Content MathML в Presentation MathML, преобразование Presentation MathML в TeX ).