|
Подготовка математических текстов средствами MathMLС распространением глобальных компьютерных сетей (в частности, Интернет) появилась необходимость размещения в ней в том числе и математических текстов. Язык MathML является подмножеством языка XML (eXtensible Markup Language — расширяемый язык разметки), который часто служит для создания других языков. Такое использование XML сегодня вполне естественно и хорошо зарекомендовало себя и в других случаях, когда применение HTML для передачи данных новых типов наталкивалось на ограничения этого формата. К настоящему времени консорциум W3C опубликовал 2-е издание версии 2.0 спецификации языка MathML, что говорит о жизнеспособности и устойчивости проекта. Языки разметки, основанные на XML:
Среди целей, которые ставились рабочей группой W3C по математике при создании MathML, были:
Общий принцип использования MathML состоит в том, что математические конструкции встраиваются в обычный HTML-документ и (если браузер либо специальная программа поддерживает эту спецификацию) адекватно воспроизводятся при загрузке документа из сети. Первое, с чем приходится столкнуться в MathML и что отличает данный язык разметки от аналогов, — это использование двух способов кодирования выражений. Один из них основан на непосредственной передаче синтаксиса формулы (presentation), другой, напротив, отражает семантику выражения (content). Презентационная разметка описывает математическую символику с выражениями, которые строятся с использованием некоторых схем вывода, с заданием способов размещения подвыражений, таких, как дроби, верхние и нижние индексы. Семантическая разметка описывает математические объекты и функции, где для каждого узла конструируется дерево выражения согласно некоторой конкретной схеме, а ветви этого дерева отвечают подвыражениям. На настоящий момент веб-страницы, созданные с использованием MathML, можно просматривать в следующих браузерах (знак “+” означает, что более новые версии тоже работают): [1]
Все элементы MathML делятся на три группы: элементы представления, элементы содержания и интерфейсные элементы. Элементы представления описывают визуально ориентированную двухмерную структуру математической нотации. Например, элемент mrow обычно применяется для обозначения горизонтального ряда частей выражения, и элемент msup, который отмечает верхний индекс. Как правило, каждый элемент представления соответствует одному типу нотационной схемы, такой, как ряд, верхний индекс, нижний индекс и т.д. Любая формула состоит из частей, которые могут состоять из простейших элементов, таких, как цифры, буквы или другие символы. Наиболее важными элементами представления являются mi, mn и mo, используемые для представления идентификаторов, чисел и операторов соответственно. Обычно эти элементы отображаются разными стилями: числа — прямым шрифтом, идентификаторы — наклонным, вокруг операторов оставляется дополнительное свободное пространство. В терминах разметки, большинство элементов MathML определяются открывающим и закрывающим тегами, которые ограничивают содержание элемента. Некоторые элементы, например знаки операций (<plus/>), определяются одиночным тегом. Рассмотрим более подробно некоторые элементы, необходимые для верстки математических формул, на примере презентационной разметки. Токены (token elements) представляют индивидуальные символы, названия, числа, обозначения и т.д. В основном в качестве содержания токены могут иметь только символы. MathML игнорирует пробельные символы, встречающиеся вне токенов. Непробельные символы здесь запрещены. Пробельные символы, встречающиеся в содержании токенов, удаляются на концах, то есть удаляются все пробельные символы в начале и конце содержания. Пробельные символы, расположенные внутри содержания элементов MathML, свертываются канонически, то есть каждая последовательность из 1 или более таких символов заменяется на 1 (иногда называемый пустым символом). Основные элементы Индексы Некоторые математические операции, которые можно использовать с тегом <mo>.
Рассмотрим несколько примеров формул в MathML. 1) sin2α + cos2α = 1 <msup> <mo class="MathClass-op">sin</mo> <mn>2</mn> </msup> <mrow> <mi>α</mi> </mrow> <mo class="MathClass-bin">+</mo> <msup> <mo class="MathClass-op"> cos</mo> <mn>2</mn> </msup> <mrow><mi>α</mi></mrow> <mo class="MathClass-rel">=</mo> <mn>1</mn> Греческую букву α получаем с помощью кода α (напоминаем, что используется Unicode). Результат Напоминаем также, что для работы с MathML в Internet Explorer необходимо установить MathPlayer. В любом файле, содержащем разметку MathML, перед заголовочной частью документа должны присутствовать строки <?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet type="text/xsl" href="http://www.w3.org/Math/XSL/pmathml.xsl"?> <html xmlns="http://www.w3.org/1999/xhtml"> Кроме того, любой код MathML открывается тегом <math xmlns="http://www.w3.org/1998/Math/MathML"> и закрывается тегом </math>. 2) <mfrac> <mrow> <msup><mi>a</mi><mn>2</mn></msup> <mo>+</mo> <mi>a</mi> <mi>b</mi> <mo>+</mo> <msup><mi>b</mi><mn>2</mn></msup> </mrow> <mrow> <mi>a</mi> <mo>+</mo> <mi>b</mi> </mrow> </mfrac> 3)
<mfrac> <mrow> <mn>1</mn> <mo>+</mo> <msup> <mo class="MathClass-op">sin</mo> <mn>2</mn> </msup> <mfenced separators="" open="(" close=")"> <mi>x</mi><mo>+</mo><mi>y</mi> </mfenced> </mrow> <mrow> <mn>2</mn> <mo>+</mo> <mfenced separators="" open="|" close="|"> <mrow> <mi>x</mi> <mo>-</mo> <mfrac> <mrow><mn>2</mn><mi>x</mi></mrow> <mrow> <mn>1</mn> <mo>+</mo> <msup><mi>x</mi><mn>2</mn></msup> <msup><mi>y</mi><mn>2</mn></msup> </mrow> </mfrac> </mrow> </mfenced> </mrow> </mfrac> <mo>+</mo> <mi>x</mi> Рассмотрим элементы для верстки таблиц и матриц. Пример 1. <mfenced separators="" open="(" close=")"> <mtable> <mtr> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> </mtr> <mtr> <mtd><mn>1</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>1</mn></mtd> </mtr> <mtr> <mtd><mn>1</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>1</mn></mtd> </mtr> <mtr> <mtd><mn>1</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>0</mn></mtd> <mtd><mn>1</mn></mtd> </mtr> <mtr> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> <mtd><mn>1</mn></mtd> </mtr> </mtable> </mfenced> Пример 2. <mfenced separators="" open="{" close=""> <mtable> <mtr> <mtd> <mi>a</mi><mi>x</mi><mo>+</mo><mi>b</mi><mi>y</mi> <mo>=</mo><mi>c</mi> </mtd> </mtr> <mtr> <mtd> <msub><mi>a</mi><mn>1</mn></msub><mi>x</mi><mo>+</mo> <msub><mi>b</mi><mn>1</mn></msub><mi>y</mi><mo>=</mo> <msub><mi>c</mi><mn>1</mn></msub> </mtd> </mtr> </mtable> </mfenced> Различные математические символы при необходимости нужно отыскивать в кодировочной таблице Unicode. Пример. <mi>S</mi> <mo>=</mo> <mn>1</mn> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>+</mo> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <mo>+</mo> <mi>…</mi> <mo>+</mo> <msup> <mrow> <mfenced separators="" open="(" close=")"> <mn>-1</mn> </mfenced> </mrow> <mi>n</mi> </msup> <mfrac> <mn>1</mn> <msup> <mn>2</mn> <mi>n</mi> </msup> </mfrac> <mo>=</mo> <munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow> <mi>n</mi> </munderover> <mfrac> <mn>1</mn> <msup> <mn>2</mn> <mi>i</mi> </msup> </mfrac> Довольно значительное количество примеров с интегралами можно найти на [4], поэтому не будем здесь на них останавливаться, рекомендуем читателю ознакомиться с примерами на указанном ресурсе. Как отмечалось выше, MathML позволяет использовать презентационное и семантическое представления. Здесь мы сосредоточились на презентационном как наиболее удобоваримом и чаще используемом. Тем не менее, чтобы дать хотя бы некоторое представление о другом варианте, рассмотрим небольшой иллюстративный пример и запишем его в двух вариантах представления. Пример. x2 - 6x + 9 = 0 Конечно, набор формул в MathML — занятие довольно длительное и требует определенных усилий. Впрочем, кто работал достаточно долго в LaTeX, особой разницы не заметит. Тем не менее чаще пользователь предпочитает применять различные инструменты. Назовем некоторые [5]. Во-первых, математические пакеты, скажем, Mathematica или Maple, позволяют сохранять набранные в них формулы в формате MathML. Amaya (http://www.w3.org/Amaya/) — это веб-редактор, то есть программа, предназначенная для создания и редактирования документов непосредственно в сети. В этой программе предусмотрены возможности просмотра документов и их локального и удаленного редактирования. Работа над этой программой была начата консорциумом W3C в 1996 году с целью продемонстрировать, что инструменты создания веб-документов, использующие различные веб-технологии, можно организовать в одном окружении веб-клиента. Вначале Amaya был редактором HTML + CSS, но потом была добавлена поддержка XML и различных форматов, основанных на XML, в частности, MathML. Мы не будем описывать возможности данного программного продукта, предлагаем читателю ознакомиться с ними самостоятельно. На странице http://www.w3.org/Amaya/User/BinDist.html можно найти дистрибутив Amaya для операционных систем Windows NT/2000/XP/Vista, для основных дистрибутивов Linux и MacOS. Также доступны исходники программы. Установка программы описана на той же странице. Текстовый редактор Open Office Writer, входящий в пакет Open Office, позволяет вставлять в текст математические формулы, подготовленные с помощью редактора формул, входящего в тот же пакет (см. выше). Еcли навести указатель мыши на формулу и нажать правую кнопку, то появится меню, в котором есть пункт “Сохранить копию как”. При выборе этого пункта открывается диалоговое окно, где надо выбрать тип файла MathML. Будет создан файл с расширением mml, содержащий разметку, адаптированную для IE+MathPlayer. Тем не менее Firefox и Mozilla правильно отображают этот файл без всякого плагина, если этот файл сохранен с расширением xml. GNU TeXmacs (http://www.texmacs.org/tmweb/home/welcome.en.html) — это свободно распространяемая программная среда, специально предназначенная для обработки научных текстов. Она включает в себя WYSIWYG-редактор с поддержкой математических формул и редактор изображений. Texmacs имеет собственный формат файлов, которые экспортируются в различные форматы, включая MathML. Itex2MML — консольная утилита, которая преобразует текст, содержащий формулы в нотации WebTeX — TeX-подобного языка разметки, предназначенного для подготовки текстов для публикации в сети; см. http://stuff.mit.edu/afs/athena/software/webeq/currenthome/docs/webtex/webtex.html в текст, содержащий формулы в MathML нотации. При этом остальной текст не изменяется. Пакет tex4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/), созданный профессором университета Огайо Eitan M. Gurari, является полнофункциональным конвертором из TeX в различные веб-форматы, в том числе в MathML. В настоящее время в Интернете представлен ряд конверторов в формат MathML, которые позволяют произвести конвертацию в режиме on-line. ASCIIMathML (http://www1.chapman.edu/~jipsen/asciimath.html) Этот ресурс использует 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, тогда пользователь получит возможность генерировать произвольное количество вариантов заданий по своему усмотрению. Также можно предусмотреть и генерацию ответов ко всем заданиям, что весьма несложно. Рассчитываем, что на этом знакомство читателя со средствами верстки математических текстов не завершается и далее он сможет самостоятельно выбрать заинтересовавший его инструмент, а может быть, и применить на практике описанные технологии. Литература и ресурсы Интернета 1. http://www.w3.org/Math/XSL/Overview-Russian.html. 2. http://www.w3.org/TR/2003/REC-MathML2-20031021/ — последняя версия MathML. 3. Гуссенс М., Ратц С. Путеводитель по пакету LaTeX и его web-приложениям: Пер. с англ. М.: Мир, 2001, 601 с., илл. 4. http://beshenov.ru/mh/ — Примеры использования MathML. 5. Елизаров А.М., Липачев Е.К., Малахальцев М.А. Основы MathML. Представление математических текстов в Internet: Практическое руководство. Казань: Издательство Казанского математического общества, 2003, 56 с. 6. W3C MathML 2.0 Specification. — http://www.w3.org/Math (частичный русский перевод — на http://www.raleigh.ru/MathML/MathML2/overview.html).
Т.. Н.. Катанова ;
|