Математика в Internet

РЕДАКТОР МАТЕМАТИЧЕСКИХ ТЕКСТОВ. КОНВЕРТЕР из MathTextView в MathML.
Автор: Анатолий Вовк

        Как справедливо указал Константин Носов в статье [1], "математическая символика, вырабатывавшаяся и шлифовавшаяся тысячелетиями, к нашему времени приобрела значение, далеко выходящее за рамки обычной системы условных обозначений. Хотя идеи и нотация - не одно и то же, современная математическая мысль может быть материализована только с помощью мощного и совершенного аппарата, позволяющего в символьной форме передавать глубокие и зачастую крайне абстрактные понятия".

        С появлением Internet начались интенсивные поиски методов адекватного оформления математических текстов в сети Web. К этому времени уже был разработан ряд редакторов плоскостного отображения математических текстов на экране мониторов и в печати. Здесь в первую очередь необходимо отметить редактор TEX, являющийся детищем прекрасного программиста и математика Дональда Кнута. Не зря в конце второго тысячелетия эта работа была отмечена одной из престижных премий - премией Киото Фонда Инамури. Однако редакторы серии TEX имеют, пожалуй, только один недостаток. Будучи прекрасной издательской системой математических текстов (иногда ее характеризуют как меритократически элитарную издательскую систему), редактор ТЕХ и ему подобніе не сохраняют математическую структуру выражений. А это обстоятельство в недалеком будущем, когда компьютеры будут не только отображать математические тексты а и обрабатывать их, будет камнем преткновения на пути прогресса в этой области.

        В настоящее время для отображения математических текстов в Internet создан язык MathML. Корпорация W3C в 2003 году утвердила спецификацию языка MathML версии 2.0 и рекомендовала его к использованию.

        Язык MathML использует два способа кодирования математических выражений. Один из них непосредственно передает синтаксис формулы (presentation), другой отражает семантику выражения (content), то-есть ее математическое содержание. При этом поскольку язык MathML, являяется подмножеством расширенного языка разметки XML, то и в основу этого языка положена нотация, свойственная XML. Но эта разметка с точки зрения прозрачности восприятия человеком далека от общепринятой системы кодирования математичеих выражений.

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

        Этот язык очень близок к нотации TEX (см. [2]), но является носителем не только синтаксиса формулы, а и ее семантики.

        В настоящей заметке мы хотим сообщить, что разработана программа, позволяющая конвертировать язык MathTextView в язык MathML (Converter_MathTextView_MathML.exe © Copyright 2003,VVV). Цель этой разработки заключается в том, что мы не стремимся к противопоставлению воей нотации нотации языка MathML, а, наоборот, хотим использовать все лучшее в обеих нотациях.

        Поясним это замечание на примере. Рассмотрим выражение

        На языке MathTextView это выражение запишется в виде

  <ff>z=(x+y)/2</ff>       ( 1 )

        На языке Content MathML это выражение запишется в следующем виде

  <math>
    <reln><eq/>
      <ci>z</ci>
        <apple><divide/>      
          <apple><plus/>
            <ci>x</ci><ci>y</ci>     ( 2 ) 
          </apple>
          <cn>2</cn>
      </apple>
   </reln>
  </math>

        Используя возможности MathTextView и MathML, это длинное выражение можно сократить и записать таким образом

  <math>
    <ff>z=(x+y)/2</ff>       ( 3 )     
  </math>

        Такой подход, с одной стороны, не противоречит идеям, положенным в основу XML, а с другой стороны, сокращает размер описания, и, что самое главное, увеличивает читабельность нотации. Для преобразования (3) в (2) и используется Converter_MathTextView_MathML.exe, для инициализации которого и служат теги <ff> </ff>. Использование Converter_MathTextView_MathML.exe возможно как в статическом режиме, когда подготовленный с использованием языков MathML и MathTextView HTML-код конвертируется для дальнейшего использования в HTML+MathML-код. Кроме того, использовать Converter_MathTextView_MathML.exe можно и в динамическом режиме в качестве сервлета, преобразующего HTML+MathML+MathTextView-код в HTML+MathML-код. Заметим при этои, что самым разумным способом применения предлагаемой технологии была бы соответствующая доработка программного обеспечения языка MathML.

        Такой конгломерат двух нотаций естественно назвать стенографическим MathML (ShortHand Mathematic Markup Language или сокращенно SHMathML © Copyright 2003,VVV )

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

  <math>
    <style>font-color:#ff0000>
      <ff>z=(x+y)/2</ff>         ( 4 )     
    </style>
  </math>

        Замечание. В (4) мы не пытались точно воспроизвести все подробности нотации. Главное для нас было проиллюстрировать идею.

        Отметим, что язык MathTextView преследует те же цели, что и язык MathML. Разница только в исходной позиции. Разработка конвертера показала, что на данный момент язык MathTextView шире языка MathML. Но это не принципиальный вопрос. Повторимся - главное в языке MathTextView то, что нотация близка к нотации, используемой математиками в повседневной практике.

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

        Источники.

[1]. Константин Носов. MathML: математика в Web.2003. http://itc.ua

[2]. Анатолий Вовк. Редактор математических текстов MathText (группа VGT). 2002. http://math.accent.kiev.ua