Сразвитием математической символики вырабатывались и совершенствовались способы
ее хранения и передачи. Например, математики древнего Вавилона делали свои записи
на глиняных табличках, в период позднего средневековья появляются первые печатные
книги, и наконец, современная эпоха характеризуется все возрастающим потоком электронных
публикаций. Именно поиски адекватных методов оформления математических текстов
в Internet и привели к созданию языка MathML.
Необходимость в таком средстве вызвана тем, что формат HTML, несмотря на множество замечательных свойств, имеет довольно-таки ограниченные возможности передачи математических обозначений. Чаще всего формулы на HTML-страницах представляются в виде графики (растровой или векторной), но этот способ имеет очевидные недостатки. Например, формулу-рисунок практически невозможно отредактировать, а качество ее при печати обычно оставляет желать лучшего. Уже исходя из этого понятно, что для Web математическую символику желательно как-то кодировать, причем максимально "прозрачно" для клиентских программ (броузеров). Развитие этих идей и привело к созданию целого семейства языков математической разметки, к которым относится и рассматриваемый сегодня MathML.
Следует отметить, что проблема представления математической символики в электронном виде не исчерпывается необходимостью разработки отдельной спецификации. Это сложная научная и техническая задача, пока далекая от своего окончательного решения, что подтверждается наличием большого числа предлагаемых подходов, зачастую слабо согласованных между собой. Одним из таких подходов являются специализированные языки разметки, к которым относится и MathML. Безусловно, его разработчики осознавали глубину данной проблематики и поставили цель создать спецификацию, удовлетворяющую следующим ограниченным, но все же достаточно важным требованиям:
- легкость освоения и ручного набора основных математических обозначений;
- максимальная совместимость с другими математическими форматами, которая должна обеспечиваться соответствующими конвертерами;
- возможность вывода формул на различные терминальные устройства;
- поддержка расширяемости, т. е. введения новых символов, схем и т. д.
К данным целям, относящимся к принципам построения спецификации, были добавлены и другие, связанные с особенностями применения MathML в приложениях. Необходимо обеспечить вывод формул на экраны и принтеры с наиболее высоким качеством, организовать средства информационного обмена (например, буферные операции копирования/вставки фрагментов формул). Понятно, что все это будет реализовываться разработчиками прикладного программного обеспечения, однако потенциальные возможности должны быть заложены изначально.
В нескольких словах обрисуем место MathML в родственной ему группе языков математической разметки. В отличие от целого ряда ее представителей, из которых прежде всего надо назвать TeX, MathML обладает семантическими средствами построения математических выражений. Если документ того же TeX, по сути, представляет собой детальное описание некоторого текста с точным указанием положения всех его элементов, то MathML (более привязанный именно к содержанию) в этом отношении значительно гибче, поскольку окончательный вид документа легко может быть изменен в соответствии с требованиями пользователя.
Сведения о MathML
Язык MathML является подмножеством расширенного языка разметки XML, который часто служит для создания других языков. Такое использование XML сегодня вполне естественно и хорошо зарекомендовало себя и в других случаях, когда применение HTML для передачи данных новых типов наталкивалось на ограничения этого формата. К настоящему времени консорциум W3C опубликовал 2-е издание версии 2.0 спецификации языка MathML, что говорит о жизнеспособности и устойчивости проекта.
Общий принцип использования MathML состоит в том, что математические конструкции встраиваются в обычный HTML-документ и (если броузер либо специальная программа поддерживает эту спецификацию) адекватно воспроизводятся при загрузке документа из сети.
Первое, с чем приходится столкнуться в MathML и что отличает данный язык разметки от аналогов, — это использование двух способов кодирования выражений. Один из них основан на непосредственной передаче синтаксиса формулы (presentation), другой, напротив, отражает семантику выражения (content). Проще говоря, первый способ передает запись формулы вне связи с ее смыслом, второй, наоборот, отражает ее математическое содержание.
Кодирование синтаксиса
Рис. 1 |
Если взглянуть на форму представления различных математических выражений, то можно
заметить, что при довольно большом количестве специальных символов существует
относительно немного способов их упорядочения. Так, выражения могут строиться
с помощью верхних и нижних индексов, одна часть формулы может стоять над/под другой,
выражения могут находиться в элементах матрицы и т. д. Этот принцип и положен
в основу кодирования синтаксиса, при котором математические выражения любой сложности
формируются с помощью небольшого набора шаблонов (так называемых layout schemata),
отвечающих основным отношениям, встречающимся в математических формулах.
Для демонстрации этого принципа рассмотрим, как в MathML записывается обыкновенная дробь. Она имеет всего два элемента — числитель и знаменатель, что и отражено в соответствующем шаблоне:
Здесь тег
Числитель представлен тегом
Основными элементами, применяемыми в представлении MathML, являются символы (tokens) и шаблоны (layout schemata, упоминавшиеся выше). Первые — это элементы языка, которые могут содержать только буквы (например, для обозначения переменных) и собственно математические символы, но не другие элементы.
Элемент
Теперь познакомимся с некоторыми шаблонами MathML, передающими основные математические выражения. С двумя из них мы встретились выше: это теги для задания обыкновенной дроби и выражения, выровненного вдоль базовой линии. Другие наиболее важные шаблоны передаются следующими тегами:
выводит знак радикала с вложенным выражением. Аналогичный тег служит для отображения корня n -й степени; задает выражение, заключенное в скобки. С помощью атрибутов можно указать разделитель для вложенных выражений и некоторые другие характеристики; - теги для передачи верхних/нижних индексов. Например, выражение с верхним индексом
(степень) задается какВЫРАЖЕНИЕ ВЕРХНИЙ_ИНДЕКС
Имеются также шаблоны для оформления практически всех наиболее важных математических выражений и матриц (всего около 30 видов).
Кодирование семантики
Перейдем теперь к способу кодирования с использованием семантики выражений. Как отмечено выше, он отражает математическое содержание формулы. Ключевым для передачи семантики является элемент
Рис. 2 |
В нашем примере первым после
деление (дробь). Скажем сразу, что при семантическом кодировании большинство операторов
передаются тегами типа
стоит косая черта (так называемые "пустые" элементы). Затем следуют
аргументы: еще один элемент
и y
, и — Z
. Соответственно, сумма (первый аргумент оператора деления)
отображается как числитель дроби, а переменная Z
— как знаменатель. MathML
содержит около 90 операторов, разделенных на несколько категорий: арифметические,
алгебраические, логические и т. д.
В данном примере каждый встретившийся оператор применялся к паре аргументов. Но, как следует из представленного выше общего вида элемента
В двух последних примерах остался без объяснения один момент — теги для передачи
буквенных идентификаторов и чисел. Это
— полные аналоги элементов
Заметим, что тег
поскольку вся информация об операторе передается специальным тегом оператора,
идущим после
Для задания структуры формулы может применяться не только
|
Здесь
Приведенных нами сведений о MathML, хотя и далеко не полных, вполне достаточно для начала самостоятельного использования этого языка. Тем более что имеются специальные программные инструменты, призванные избавить от рутинной работы.
ПО для работы с MathML
На соответствующей странице консорциума W3C приведены ссылки примерно на
три десятка рекомендуемых продуктов для работы с MathML. Самой важной представляется
ситуация с броузерами, поскольку она в наибольшей мере характеризует степень признания
любой Web-технологии. На сегодняшний день только два продукта готовы корректно
интерпретировать MathML: Amaya (который можно загрузить с узла того же W3C) и
Mozilla. К сожалению, прочие разработчики не спешат включать в свои продукты поддержку
этой перспективной технологии. Наиболее популярные у нас броузеры Microsoft Internet
Explorer и Netscape Navigator в базовой поставке MathML не "понимают",
однако для них имеются специальные
подключаемые модули — от IBM , Design
Science , Theorist
Interactive .
Эти же три компании поставляют и более полные версии своего ПО, предназначенные уже для создания MathML-документов. В частности, именно в IBM techexplorer Hypermedia Browser были подготовлены примеры к данной статье. Подобные же задачи можно решать и с помощью менее специализированных приложений. Например, системы компьютерной математики (Mathematica, Maple, Mathcad) обычно обеспечивают экспорт своих документов в формат HTML с MathML-"вкраплениями".
MathML также поддерживают и некоторые настольные издательские системы для подготовки
научно-технической документации. Из наиболее известных продуктов этого класса
можно назвать WebEQ ,
представляющий собой пакет Java-приложений для обеспечения полного цикла набора
и публикации документов в форматах MathML и WebTeX; Wolfram
Publicon для подготовки математических текстов презентационного качества с
возможностью экспорта в MathML; текстовые процессоры от MacKichan
Software , которые умеют сохранять документы из своего основного формата TeX
в MathML.
Существуют также специальные конвертеры для преобразования в/из MathML. Исходным форматом чаще всего выступает TeX. MathML, в свою очередь, превращается в тот же TeX или популярные графические форматы.
Однако даже не имея в своем распоряжении подобных, не всегда доступных, пакетов, после определенной подготовки можно создавать MathML-документы вручную. Ведь это — обычные текстовые файлы, для работы с которыми (как и с HTML) достаточно простейшего текстового редактора.
В заключение еще раз подчеркнем, что MathML появился относительно недавно (описание версии 1.0 вышло в 1998 г.) и находится в стадии становления. Нельзя исключить того, что через несколько лет MathML уступит место более мощной и совершенной технологии. Однако уже сейчас можно с уверенностью сказать, что глубокие идеи, заложенные в этот язык, послужат прочной основой для создания будущих методов представления сложных научно-технических документов.
.Необходимость разметки MathML вызвана тем, что формат HTML, несмотря на множество замечательных свойств, имеет довольно-таки ограниченные возможности передачи математических обозначений. Чаще всего формулы на HTML-страницах представляются в виде графики (растровой или векторной), но этот способ имеет очевидные недостатки. Например, формулу-рисунок практически невозможно отредактировать, а качество ее при печати обычно оставляет желать лучшего. Развитие идей и привело к созданию целого семейства языков математической разметки, к которым относится и MathML. Разработчики осознавали глубину проблематики и поставили цель создать спецификацию, удовлетворяющую следующим ограниченным, но все же достаточно важным требованиям:
ü легкость освоения и ручного набора основных математических обозначений
ü максимальная совместимость с другими математическими форматами, которая должна обеспечиваться соответствующими конвертами
ü возможность вывода формул на различные терминальные устройства
ü поддержка расширяемости, т. е. введения новых символов, схем.
Общий принцип использования MathML состоит в том, что математические конструкции встраиваются в обычный HTML-документ и воспроизводятся при загрузке документа из сети.
Язык MathML предлагает гибкую и расширяемую систему записи математического материала, позволяющую взаимодействовать с внешними программами и осуществлять высококачественное отображение в различных информационных средах. Общий принцип использования MathML состоит во встраивании математических конструкций в XHTML/HTML-документ. Cоздание веб-страниц с использованием MathML возможно тремя способами: HTML + презентационный MathML, XHTML + презентационный MathML, XML + MathML
Для преобразования математических выражений в MathML существует множество утилит . Основными браузерами , непосредственно поддерживающими MathML, являются последние версии Mozilla и его разновидности. Многие другие браузеры поддерживают этот формат при установке соответствующих плагинов . Кроме того, MathML поддерживается основными офисными программами, такими как Microsoft Word и OpenOffice.org , а также математическими программными продуктами например, Mathematica , Maple . MathML — о чень мощный и универсальный язык разметки формул. Правда, ред актировать формулы (и читать) довольно тяжело . Язык MathML построен по XML-технологии и для задания фрагментов формул используются свои теги.
Пример описания простой формулы
Пример 2
Вставка формул в html-документы с помощью разметки TeX
TeX – это популярный язык разметки, который используют многие люди, особенно в математическом мире, текстовый процессор, система форматирования документов.
Пакет позволяет автоматизировать многие задачи набора текста и подготовки статей, включая набор текста на нескольких языках, нумерацию разделов и формул, перекрёстные ссылки, размещение иллюстраций и таблиц на странице, ведение библиографии и др.
Формулы в LaTeX набираются с помощью специальных команд. Например, формула для нормального распределения в LaTeX будет выглядеть так: \frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(x-\mu) ^2}{2\sigma^2}\ right)
а отображаться будет так:
Исходный код математической формулы записывается внутри тега Пробелы игнорируются (ТеХ их сделает сам). Пустые строки не разрешаются.
Достоинства TEX:
- программные реализации TEX есть практически для всех типов компьютеров
- низкие требования к аппаратным ресурсам (для работы достаточно IBM PC совместимого компьютера с 286/386 процессором)
- переносимость исходных текстов, (результаты форматирования, т.е. конечный вид вашего документа, будет идентичен для все платформ)
- при печати получается текст типографского качества,
- большое количество бесплатных реализаций
- возможность подготовки математических и других формул любой сложности которые будут прекрасно смотреться при печати, затрачивая при этом минимум усилий
- расширяемость (на основе имеющихся базовых команд можно создавать свои, более сложные)
Одной из основных функций, заложенных в TeX при его проектировании, была возможность простого набора математических формул.
Набор сложных формул существенно легче и быстрее «визуальных» редакторов (M$ Equation, MathCAD). В особенности это заметно, где требуется выравнивание формул относительно друг друга, расстановка нумерации, а также при использовании нестандартных математических обозначений.
Формулы поддерживаются только в нотации TeX. Пример:
notation=’TeX’>E=mc^2
что будет выглядеть так:
Вставка формул в html-документы в виде рисунков
Самый простой способ — вставлять формулы как растровые картинки с помощью тэга img . Изображение формулы может быть получено как вручную (из визуального редактора формул), так и автоматически. Формулы представляются в виде вставных объектов, внедренных в документ. Они могут содержать многоэтажные простые дроби, греческие буквы, матрицы.
Преимущества:
отображаются так же, как и в оригинале во всех браузерах, отображающих картинки
сравнительно легко копируется в документы Office
Недостатки:
самый большой размер страницы с формулами из всех рас смативаемых вариантов
невозможно изменить размер формулы - зачастую она либо слишком мелкая, либо слишком крупная относительно текста либо слишком мелкая, либо слишком крупная относительно текста
плохо смотрится при выводе на печать - не совпадают разрешения
невозможно изменить формулу без её исходного кода и специальной программы
довольно тяжело отцентровать формулу, находящуюся в тексте
невозможно перенести формулу по словам - разбить на несколько строк при необходимости
Использованная литература.
1. Галактионов В.В. Расширяемый язык разметки XML (Extensible Mark-up Language): промышленный стандарт, определяющий архитектуру программных средств Интернет следующего поколения. Сообщение ОИЯИ, Р10-2000-44, Дубна, 2000.
2. Д. Кнут. «Все про TeX.»
3. http://math.accent.kiev.ua
4. http://www.raleigh.ru/ MathML /MathML2/chapter2.html ·
5. www.elbib.ru/index.phtml?page=elbib/rus/journal/2005/
6. http://www.ibb.ru/articles/ tex /node3.phtml
Все вышесказанное относится к отдельным формулам вне контекста документа. Давайте подробно рассмотрим пример, соответствующий примеру "Hello, World!", разбираемому при изучении языков программирования. Мы представим полный код документа XHTML 1.0, содержащего рассмотренный выше квадрат суммы двух переменных:
This is a perfect square:
Это стандартная структура документа XHTML. Он начинается открывающим тегом , содержащим декларацию пространства имен XML и объявление языка. Элемент head содержит, как обычно, заголовок. Открывающий тег
beginning also has a namespace declaration of an abbreviative prefix letter m to be used for the standard MathML namespace. Затем идет обычный параграф. И, наконец, идет элемент math, который также имеет декларацию пространства имен. Внутри элемента math находится разметка MathML.Примеры MathML
Примеры разметки представления
Нотация: x 2 + 4x + 4 = 0.
Разметка:
Обратите внимание на использование вложенных элементов mrow для обозначения термов. Например, левая часть уравнения является операндом для "=". Выделение термов значительно улучшает структуру для визуального отображения, воспроизведения с помощью голоса и переноса строк. Символ MathML InvisibleTimes применяется для того, чтобы сообщить программе отображения, что между 4 и x запрещен перенос строки. На самом деле, такое использование данного элемента, введенного еще в MathML 1.0, не рекомендуется. Все обычные текстовые данные задаются кодами Unicode. Тем не менее, хотя символ для замены ⁢ ожидается в Unicode 3.2, и рассматриваются предложения по улучшению Unicode, в текущей версии Unicode 3.0 такого символа не используется. Мы можем использовать ожидаемую цифровую ссылку ࠎ но для понятности будем продолжать использовать в примерах элемент InvisibleTimes.
Разметка:
Элементы mfrac и msqrt используются для создания дроби и квадратного корня соответственно.
Обратите внимание, что знак "плюс-минус" задается специальной сущностью ±, хотя в данном случае существует такой символ Unicode, как B1;. MathML предоставляет обширный список имен элементов, задающих математические символы. В дополнение к математическим символам для вывода документа на экран и на печать, MathML предоставляет символы для воспроизведения документа с помощью речи. Для воспроизведения с помощью речи важно автоматически определять, как должен быть прочитан фрагмент
Как "z умножить на величину x плюс y " or "z умножить на x плюс y ". Символы ⁢ (U+2062) и ⁡ (U+2061) предоставляют авторам способ напрямую кодировать такие различия для программ речевого воспроизведения. Например, в первом случае, символ ⁢ (U+2062) должен быть вставлен после строки, содержащей z . MathML также содержит такие сущности как ⅆ (U+2146), представляющая дифференциал. При печати она отображается с отличными от обычного символа "d" интервалами, а произноситься может как "d" или "with respect to". Пока для исключения двусмысленности используются теги содержания или любой другой механизм, авторы всегда должны использовать описанные выше символы как сущности для того, чтобы сделать документы более доступными.
Разметка:
Элемент mtable указывает на начало таблицы в MathML. Элемент mtr определяет строку таблицы и элемент mtd содержит данные для элемента строки (ячейки). Большая часть элементов имеет атрибуты, определяющие свойства отображения на экране и на печати. Например, у элемента mfenced есть атрибуты, определяющие, какие символы должны использоваться в начале и в конце группируемого выражения. Атрибуты элементов-операторов устанавливаются в определенное справочником значение по умолчанию при помощи элемента
До выхода HTML5 использование формул было сущим наказанием. Судите сами: в 2005-м необходимо было иметь под рукой либо специальный браузер, либо разбивать текст на собственно HTML и вставки из изображений или PDF. Поиск и прочие операции редактирования и/или вывода на экран/бумагу был неоднозначной задачей, коей посвящались целые монографии .
В 2012-м было уже попроще. Появилась возможность подключать необходимые плагины (Firemath для FireFox и Daum Equation Editor для Chrome). Но неоднозначность стандартов (и поддержки) фактически заставляла писать одну и ту же статью для каждого из браузеров (и для их версий). Или встречать пользователей волшебным приветствием «Ваш браузер надо обновить/дополнить расширением».
Неудобно? - Да! Отнимало много времени на поиск универсального решения? - Да! Заставляет думать о том, какой тип записи лучше (презентационный или содержательный), каким конвертером пользоваться (а их только общеизвестных с десятка полтора)? - ДА! ДА! ДА!
В результате работа по публикации превращалась в освоение двух-трех лексиконов разметки и изучения работы минимум одной программы-перекодировщика.
Теперь, с приходом HTML5, все стало намного проще. В нем появился новый контейнер
Атрибуты тэга
В дополнение к следующим атрибутам, тэг .Рассмотрим элементы для верстки таблиц и матриц.
Пример 2.
Различные математические символы при необходимости нужно отыскивать в кодировочной таблице Unicode.
Пример .
Довольно значительное количество примеров с интегралами можно найти на , поэтому не будем здесь на них останавливаться, рекомендуем читателю ознакомиться с примерами на указанном ресурсе.
Как отмечалось выше, MathML позволяет использовать презентационное и семантическое представления. Здесь мы сосредоточились на презентационном как наиболее удобоваримом и чаще используемом. Тем не менее, чтобы дать хотя бы некоторое представление о другом варианте, рассмотрим небольшой иллюстративный пример и запишем его в двух вариантах представления.
Пример . x 2 - 6x + 9 = 0
Конечно, набор формул в MathML - занятие довольно длительное и требует определенных усилий. Впрочем, кто работал достаточно долго в LaTeX, особой разницы не заметит. Тем не менее чаще пользователь предпочитает применять различные инструменты. Назовем некоторые .
Во-первых, математические пакеты, скажем, Mathematica или Maple, позволяют сохранять набранные в них формулы в формате MathML.
Этот ресурс использует Java-скрипт ASCIIMathML.js (ver 2.0; сентябрь 2007; http://www1.chapman.edu/~jipsen/mathml/asciimath.html , автор скрипта - Peter Jipsen), работающий на компьютере пользователя, который загружается при загрузке демонстрационной страницы http://www1.chapman.edu/~jipsen/mathml/asciimathdemo.html . Поэтому, в частности, этот ресурс может использоваться локально: достаточно сохранить упомянутую демонстрационную html-страницу и можно производить конвертацию простых формул без подключения к Интернету.
В заключение отметим, что MathML как средство разметки также неплохо подходит при генерации различных математических заданий (см. примеры выше). При этом для программирования можно использовать, например, JavaScript, тогда пользователь получит возможность генерировать произвольное количество вариантов заданий по своему усмотрению. Также можно предусмотреть и генерацию ответов ко всем заданиям, что весьма несложно.
Рассчитываем, что на этом знакомство читателя со средствами верстки математических текстов не завершается и далее он сможет самостоятельно выбрать заинтересовавший его инструмент, а может быть, и применить на практике описанные технологии.
Литература и ресурсы Интернета