Программы поддерживающие mathml. Курсовая работа: MathML (Mathematical Markup Language)

1.1 Математика и ее система обозначений

1.2 Истоки и цели

1.2.1 История MathML

1.2.2 Ограниченность HTML

1.2.3 Требования к математической разметке

1.2.4 Цели проекта MathML

1.3 Роль MathML в Сети

1.3.1 Существующие языки математической разметки

1.3.2 Механизм расширения HTML

1.3.3 Механизм расширения браузера

1.4 Обзор MathML

1.4.1 Таксономия элементов MathML

1.4.2 Разметка представления

1.4.3 Разметка содержания

1.4.4 Объединение представления и содержания

1.5 MathML в документах

1.6 Примеры MathML

1.6.1 Примеры разметки представления

1.6.2 Примеры разметки содержания

1.6.3 Примеры смешанной разметки

1.7 Синтаксис и грамматика MathML

1.7.2 Пример синтаксиса XML

2.1 Mozilla & Firefox

2.2 MicrosoftInternetExplorer

MathML (Mathematical Markup Language) представляет собой язык разметки математических приложений, основанный на XML. Он был разработан Консорциумом WWW (W3C) и принят в качестве Рекомендации. Текущей версией является Mathematical Markup Language (MathML) Version 2.0 (Second Edition), утвержденной 21 октября 2003 года.

MathML реализует две "точки зрения" на математическую разметку. Один из ее видов - это разметка представления (Presentation Markup), которая описывает визуальную форму представления математической формулы. Второй - разметка содержания (Content Markup), выражающая семантическое содержание.

MathML рассматривает не только представление, но и смысл элементов формулы. Также разрабатывается система разметки математической семантики, призванная дополнить MathML. Она называется OpenMath.

1.2.1 История MathML

Задача представления математической информации для компьютерной обработки и электронных средств коммуникации возникла задолго до появления Интернета. Раньше общей практикой для ученых была запись статей в неком виде, основанном на ASCII-символах и дальнейшая пересылка их друг другу по электронной почте. Несколько языков математической разметки, в частности T E X, уже широко использовались в 1992 году, еще до того, как Сеть заняла столь значимое положение.

С самого начала Сеть зарекомендовала себя, как весьма эффективный способ сделать информацию доступной большому количеству людей. Однако, даже при том, что World Wide Web была изначально задумана и реализована учеными для ученых, возможности для включения математических выражений в HTML были крайне ограничены. В настоящее время, большая часть математической информации в Сети представлена в виде текста с графическими изображениями научных выражений (в формате GIF или JPEG) или в виде целых документов в формате PDF.

Консорциум World Wide Web (W3C) понимал, что отсутствие основ для научной коммуникации является серьезной проблемой. Уже в 1994 году Dave Raggett внес предложение о включении HTML Math в прототип HTML 3.0. На конференции в Дармштадте в апреле 1995 года был проведен круглый стол по математической разметке. В ноябре того же года представители Wolfram Research выдвинули предложение команде W3C о реализации поддержки математики в рамках HTML. Важную роль в объединении многих заинтересованных сторон сыграла проведенная в мае 1996 года встреча Digital Library Initiative в Champaign-Urbana. Результатом этой встречи стало формирование редакционного наблюдательного совета по HTML Math. Впоследствии эта рабочая группа разрослась, и в марте 1997 года была формально повторно сформирована как первая W3C Math Working Group. Вторая W3C Math Working Group была сформирована в июле 1998 года.

Проект MathML отражает интересы и мнения различных групп специалистов. Многое в развитии MathML заслуживает специального упоминания. Например, это касается вопроса общедоступности, где были особенно ощутимые затруднения. В этом направлении много работы проделал T. V. Raman. Neil Soiffer и Bruce Smith из Wolfram Research поделились своим опытом в решении проблем представления математического материала, накопленным при работе над проектом Mathematica 3.0. Их идеи оказали важное влияние на структуру элементов представления. Paul Topping из Design Science также внес свой вклад в математическое форматирование и редактирование. Много пользы извлек MathML из партнерства с рядом членов рабочих групп, связанных с другими работами по кодированию математической информации в SGML и в сообществах компьютерной алгебры. В их числе StephenBuswell из StiloTechnologies, NicoPoppelier из ElsevierScienceStéphaneDalmas из INRIA (SophiaAntipolis), StanDevitt из WaterlooMaple, AngelDiaz и RobertS. Sutor из IBM, и StephenM. Watt из UniversityofWesternOntario. Также, на MathML повлиял проект OpenMath, работа рабочей группы ISO 12083 и работа Stilo Technologies над фрагментом DTD для "семантической" математики. Американское математическое общество играло ключевую роль в развитии MathML. Помимо прочего, председателями обеих W3C Math Working Group стали представители этой организации. С мая 1996 по март 1997 года группу вел Ron Whitney. Patrick Ion был сопредседателем группы с марта 1997 по июнь 1998 вместе с Robert Miner из The Geometry Center, а с июля 1998 вместе с Angel Diaz из IBM.

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

В то же время, для многих групп пользователей, например, студентов, важно иметь простой путь для включения математических выражений в web-страницы. Аналогично, для других групп, например, для пользователей системы T E X, лучшим решением была бы система, позволяющая непосредственное включение в web-страницы разметки при помощи языка, подобного T E X. В общем, различным группам пользователей требуются различные формы ввода и вывода информации, наиболее соответствующие их потребностям. Следовательно, в идеале система для размещения математических документов в Сети должна предоставлять как специализированные сервисы для ввода и вывода, так и общие сервисы для обмена информацией и отображения в различных информационных средах.

На практике, обзор того, что должен обеспечивать математический стандарт в сети для специализированных и общих нужд, приводит к идее многоуровневой архитектуры. Первый уровень включает стандартные мощные средства обмена, обработки и отображения математических данных. Второй уровень включает специализированные инструменты, предназначенные для конкретных групп пользователей, с помощью которых можно легко кодировать математическую информацию для ее распространения среди ограниченного круга пользователей.

MathML создан для разметки математической информации на нижнем более общем уровнем двухуровневой архитектуры. Это предполагает разметку сложной нотационной и семантической структуры в строгой, регулярной форме, простой для обработки средствами отображения, поиска и индексации, а также другими математическими приложениями.

Вследствие этого, разметка MathML не предполагает непосредственного использования авторами. MathML понятен для человека, что сильно помогает при отладке, но во всех случаях, за исключением простейших, он слишком сложен для ручного кодирования. Вместо этого авторы должны будут использовать специальные редакторы формул, конвертеры и другие специализированные программные средства для создания документов MathML. В качестве альтернативы, некоторые программы отображения и системы поддержки математических документов могут преобразовывать другие входные форматы в MathML "на лету".

В некотором смысле MathML аналогичен другим низкоуровневым коммуникативным форматам, таким как язык PostScript, разработанный Adobe. Вы можете создавать PostScript-файлы различными способами, в зависимости от ваших потребностей: эксперты создают и правят их вручную, авторы создают их с помощью текстовых процессоров, дизайнеры - программами-иллюстраторами и так далее. Если у вас есть PostScript-файл, вы можете распространить его среди очень большой аудитории, так как устройства отображения PostScript, такие как принтеры и программы для просмотра на экране, широко доступны.

Одной из причин разработки MathML как языка разметки общего коммуникативного уровня является стимулирование разработки математического программного обеспечения Сети верхнего уровня. MathML представляет способ координирования усилий разработчиков модулей программ для создания и отображения математического материала. Упрощая разработку функциональных частей большой системы, MathML может стимулировать разработку программ, которые будут очень полезны потенциальным пользователям.

Авторы могут создавать MathML-документы, используя инструменты, лучше подходящие для их нужд. Студенты могут предпочитать визуальные редакторы формул, с возможностью сохранять блоки разметки MathML в XHTML-файле. Исследователи могут использовать пакеты компьютерной алгебры, автоматически кодирующие математическую информацию так, чтобы коллеги могли ее взять из web-страницы и обработать. Издатели академических журналов могут использовать программу, которая конвертирует разметку T E X в HTML и MathML. Независимо от метода создания web-страницы, содержащей MathML, становятся доступны все преимущества общего коммуникативного слоя. Различные программы, работающие с MathML, могут быть использованы для одного и того же документа, чтобы вывести его в систему воспроизведения речи и на печать, а также для ввода в систему компьютерной алгебры и для управления им как частью большого архива web-документов. Для высококачественной печати математических документов в формате MathML часто проводится обратная конвертация в стандартные системы верстки, включая T E X, который специально создан для этих целей. Наконец, можно ожидать, что в конечном счете MathML будет интегрирован в другие области, где встречаются математические формулы, такие как электронные таблицы, пакеты статистической обработки данных и средства инженерной разработки.

W3C Math Working Group сотрудничает с различными софтверными компаниями для гарантии того, что скоро появятся различные программы для работы с MathML, включая как средства создания документов, так и их отображения. Текущий список программ, работающих с MathML расположен на странице Math World Wide Web Consortium.

Первоначальная концепция HTML Math состояла в том, чтобы просто расширить набор тэгов HTML и таким образом обеспечить непосредственную интерпретацию в браузере. Однако еще до этого лавинообразный рост сети сделал понятным, что требуется глобальный механизм расширений, а математическая информация является только одним из типов структурированных данных, которые могут быть интегрированы в Сеть с помощью такого механизма.

При условии, что MathML должен интегрироваться в Сеть в качестве расширения, очень важно, чтобы MathML и использующие его программы могли хорошо взаимодействовать с существующей web-средой. В частности, MathML должен разрабатываться с учетом трех типов взаимодействия. Во-первых, для создания математического контента важно, чтобы существующие языки математической разметки могли быть преобразованы в MathML, и чтобы в существующие редакторы была добавлена возможность создания документов MathML. Во-вторых, должно обеспечиваться возможность вставлять разметку MathML в разметку HTML, как ее дополнение, в этом случае, в будущем, она будет доступна для браузеров, поисковых систем и всех типов web-приложений, которые сейчас работают с HTML. И, наконец, должна обеспечиваться возможность отображения MathML, встроенного в HTML, современными браузерами, даже если результат будет далек от идеала. С переходом от HTML к XHTML все вышеперечисленные требования станут еще более необходимыми.

World Wide Web полностью интернационален. Математика - язык, использующийся во всем мире. Математическая нотация в науке и технике тесно связана с национальными языками. W3C стремится быть конструктивной силой в распространении коммуникативных возможностей в мире. Поэтому разработчики MathML столкнулись с проблемой интернационализации. Неизвестно о несовместимости этой версии MathML с языками с написанием слева направо. Запись слева направо является стандартной в MathML 2, и понятно, что потребность в записи математических формул в текстах на некоторых национальных языках еще не возникала. Так называемая "двунаправленная технология" только разрабатывается, и лучшая поддержка формул в этом контексте - задача будущих разработок.

1.7.1 Синтаксис и грамматика MathML

MathML основан на (Extensible Markup Language), а значит его синтаксис подчиняется правилам сиснтаксиса XML, и грамматика определяется DTD (Document Type Definition). Другими словами, детали использования тегов, атрибутов, сущностей и всего остального определены в спецификации языка XML, а детали, касающиеся элементов и атрибутов MathML, вложенности элементов и так далее, определены в MathML DTD.

W3C, стараясь увеличить легкость и гибкость использования XML в Сети и поддержать создание модульных XML-приложений, обнаружил, что основная форма DTD не является достаточно гибкой. Поэтому, была создана рабочая группа W3C для разработки XML Schemas, которые являются документами спецификации и должны заменить DTD. MathML 2.0 разработан так, что математики могли использовать все преимущества развивающихся Web-технологий. Таким образом, существует схема для MathML.

Также MathML определяет синтаксические и грамматические правила в дополнение к общим правилам, которые он наследует как приложение XML. Эти правила позволяют MathML представлять значительно больше информации, чем возможно представить с помощью чистого XML, без введения большого числа новых элементов и использовать значительно более сложные DTD или схемы. Конечно, недостатком введения специфических правил MathML является то, что созданные документы не могут обрабатываться процессорами и валидаторами XML.

Существует два основных типа дополнительных грамматических и синтаксических правил MathML. Первый тип включает в себя установку дополнительных критериев на значения атрибутов. Например, в чистом XML невозможно потребовать, чтобы значение атрибута было положительным целым числом. Второй тип правил определяет более детальные ограничения на дочерние элементы (например, на их порядок), чем даны в DTD или даже схемах. Например, в XML нельзя указать, что первый дочерний элемент должен обрабатываться иначе, чем остальные.

1.7.2 Пример синтаксиса XML

Так как MathML основан на XML, спецификация MathML использует терминологию XML. Данные XML состоят из символов Unicodes (которые включают в себя обычные ASCII-символы), ссылки на сущности (неформально называемые сущностями), такие как , чтобы показать, что элемент не имеет содержания или закрывающего тега. Открывающий тег должен содержать именованные параметры, называемые атрибутами, например, fontstyle="normal" в приведенном выше примере.

Так как большие и маленькие буквы различаются в XML, то и имена элементов и атрибутов MathML являются чувствительными к регистру. Для удобочитаемости в спецификации MathML большинство из них определены в нижнем регистре.

В формальном обсуждении разметки XML делается различие между элементом, таким как mrow и задающими его тегами и . То, что находится между тегами и , называется содержанием или телом элемента mrow. "Пустой элемент", например none, не имеет тела и определяется одним тегом вида . В этой спецификации не будет делаться упора на это различие между тегами и элементами. Например, мы иногда будем ссылаться на элементы и , подразумевая элемент, которому принадлежат эти теги. Это делается для того, чтобы ссылки на элементы отличались от ссылок на атрибуты. Тем не менее, термины "элемент" and "тег" будут использоваться в строгом соответствии с терминологией XML.

1.7.3 Дочерние элементы против аргументов

Многие элементы MathML требуют определенного числа дочерних элементов или присваивают дополнительный смысл дочерним элементам, стоящим в определенной позиции. Как было отмечено выше, этот тип ограничений является специфическим для MathML и не может быть задан при помощи синтаксиса и грамматики XML. Когда дочерний элемент данного элемента MathML удовлетворяет этим дополнительным условиям, мы будем говорить о нем как об аргументе , а не о дочернем элементе, чтобы подчеркнуть специфичность его использования. Заметьте, что термин "аргумент" применяется именно в этом техническом смысле, если не указано обратное.

Некоторые элементы имеют другие требования на число или тип аргументов. Эти дополнительные требования описываются для каждого конкретного элемента.

1.7.4 Значения атрибутов MathML

В соответствии со спецификацией языка XML, атрибуты элементов должны быть заданы в одной из следующих форм:

attribute-name = "value"

attribute-name = "value"

где пробелы вокруг знака "=" необязательны.

Имена атрибутов выделены в тексте спецификации моноширинным шрифтом, так же как и примеры.

Значения атрибутов, которые в MathML могут быть строкой произвольных символов, должны быть заключены в двойные (") или одинарные (") кавычки. Значение атрибута может содержать тот тип кавычек, который не используется для заключения всего значения.

MathML использует более сложный синтаксис для значений атрибутов, чем общий синтаксис XML, задаваемый MathML DTD. Эти дополнительные правила предназначены для приложений MathML, и их нарушение является ошибкой MathML, однако они не могут быть отслежены процессорами XML. Синтаксис значений элементов MathML определен в таблице атрибутов и сопровожден описанием каждого элемента, используя описанную ниже нотацию. Когда приложение MathML обрабатывает значения атрибутов, все пробелы, за исключением разделяющих отдельные слова или числа, игнорируются. Символьные данные могут быть включены в значения атрибутов напрямую или с использованием ссылочных сущностей.

В частности, символы ", ", & и < могут быть включены в значения атрибутов MathML (когда это разрешено синтаксисом) с использованием сущностей ",",& и XHTML+MathML Example Пример XHTML+MathML

Квадратный корень из двух: 2

MathML в клиентах email и клиентах обмена мгновенными сообщениями

Современные почтовые клиенты могут посылать и получать электронные сообщения в форматe HTML5, то есть в них можно использовать выражения MathML. Обязательно включите опции "отправить как HTML" и "просмотреть как HTML". В Thunderbird вы можете использовать команду "Вставить HTML", чтобы вставить код HTML + MathML. MathBird - удобное дополнение для Thunderbird для вставки таких выражений MathML с использованием синтаксиса ввода AsciiMath. Кроме того, поле ввода LaTeX-to-MathML также было интегрировано в SeaMonkey с версии 2.28 и в Thunderbird с версии 31. С другой стороны, обработка кода MathML и качество рендеринга MathML зависит от почтового клиента . Даже если ваш браузер поддерживает MathML, ваша электронная почта может помешать вам отправить или получить сообщение с MathML внутри.

Клиенты мгновенного обмена сообщениями на базе Gecko могут интегрировать конвертер на основе Javascript, преобразующий текст в код MathML (см. ниже), и отображать выражения MathML, созданные из обычного текста мгновенных сообщений. Например, есть дополнение Instantbird , которое обрабатывает выражения LaTeX.

Конвертация из простого синтаксиса

Для генерации HTML-страниц существует множество простых синтаксических систем (например, wiki или синтаксисы разметки). То же самое верно для MathML: например, синтаксисы ASCII, используемые в калькуляторах, или более мощный язык LaTeX очень популярны среди научного сообщества. В этом разделе мы представляем некоторые из таких инструментов для преобразования из простого синтаксиса в MathML.

  • плюсы:
    • Для написания математических выражений может потребоваться только стандартный текстовый редактор.
    • Доступны многие инструменты, некоторые из которых совместимы с классическим рабочим процессом LaTeX-to-pdf.
    • Это дает доступ к расширенным возможностям макросов, подобных макросам LaTeX.
  • минусы:
    • Это может быть труднее в использовании: люди должны изучить синтаксис, опечатки в коде могут легко привести к ошибкам парсинга или рендеринга и т.д.
    • Интерфейс не является дружественным для пользователя: есть только редактор кода без немедленного отображения математического выражения.
    • Ни один из синтаксисов не был стандартизирован, что затрудняет кросс-совместимость между конвертерами. Даже популярный язык LaTeX продолжает пополняться новыми пакетами.
Конвертация на стороне клиента

В Web-среде наиболее очевидным методом преобразования простого синтаксиса в дерево DOM является использование Javascript и, конечно же, для выполнения этой задачи было разработано множество библиотек.

  • плюсы:
    • Очень простая настройка: необходимо только загрузить несколько файлов Javascript и CSS и/или добавить ссылки link в заголовок документа.
    • Это чистое Web-решение: все делается браузерами, и никакие другие программы не должны устанавливаться или компилироваться.
  • минусы:
    • Это не будет работать, если у пользователя отключен Javascript.
    • Код MathML не поддерживается Web-сканерами (например, средствами математического поиска или новостными агрегаторами). В частности, ваш контент не будет отображаться правильно на Planet.
    • Конвертация должна выполняться при каждой загрузке страницы, может быть медленной и может конфликтовать с парсингом HTML (например, "