`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Новая офисная... математика

Статья опубликована в №10 (578) от 13 марта

0 
 

"И на Солнце бывают пятна" - мысль столь тривиальная, что критически настроенный читатель тривиально ожидает от критически же настроенного автора статьи именно о пятнах. А Солнце остается интересным разве что некритично настроенным специалистам или бездельникам, которые могут себе позволить его замечать.

Новая офисная... математика
>Рис. 1 Это не подделка, а подлинный снимок экрана рабочей машины Дональда Кнута. Созданная им алгоритмика, овеществленная в знаменитой программе TeX, стала для разработчиков современных систем аналогичного назначения одновременно и образцом для подражания, и отправной точкой

Эпитеты - вещи опасные в первую очередь для того, кто их использует. Поэтому ни в коем случае не стоит трактовать преамбулу к этой статье дословно. Мы, конечно же, не будем говорить о Совершенной Программе. Хотя бы потому, что единственно возможная Совершенная Программа отлично изучена и всем известна - она ничего не делает, но справляется с этой задачей прекрасно, гарантированно без единой ошибки, потому как представлена последовательностью из нуля байтов. Напротив, мы будем говорить о БПКМР - большой программе, которую модно ругать. О Microsoft Word 2007. А именно, о том новом, что сделано в ней для работников весьма специфических офисов, границы которых выходят далеко-далеко за пределы мира счетов-фактур и товарных накладных. То есть о том, что Word 2007 может дать научным работникам, математикам, инженерам, студентам. Только не спешите с отвращением переходить к чтению следующего материала - поверьте, разработчики Word 2007 куда лучше вас и автора этой статьи знают, что такое TeX (рис. 1). И во многом именно благодаря этим знаниям в обширном списке нововведений Word 2007 появились два важных пункта - полноценные конкурентоспособные подсистемы ввода математических формул и ведения библиографии. В этой статье мы сконцентрируемся именно на механизмах ввода формул, являющихся основой необходимого любому серьезному техническому специалисту инструментария.

Служа строкам и таблицам

Новая офисная... математика
Рис.2 Диалог автозамены математическими символами, доступ из механизма настройки общих параметров Word 2007

Что бы мы ни говорили о по-настоящему больших программах, разговор непременно сведется к архитектуре. В архитектурной модели не только Word 2007, но и остальных приложений Microsoft Office, а также ключевых компонентов ОС Windows Vista одним их важных элементов является малоизвестный пользователю компонент, реализующий функциональность, обозначаемую невнятным словом LineServices. А между тем возможностями этого компонента во многом определяются и наблюдаемые невооруженным пользовательским глазом "способности" ключевых для платформы Windows приложений, да и самой платформы, в первую очередь Windows Vista. Возможно, это покажется забавным, но компонент, реализованный на языке C с использованием приемов объектно-ориентированного программирования, по признанию самих специалистов Microsoft, документирован далеко не в полной мере, и разработчики компании предпочитают в качестве документации использовать... самих членов "команды LineServices". Надо сказать, предпочитают не зря, потому что речь идет о команде яркой во всем. Ее основателем был ученик Никласа Вирта, талантливый турецкий специалист в области computer science Элайза Коэн (Eliyezer Kohen) - автор (один из двоих) подсистемы растеризации TrueType-шрифтов ОС семейства Windows и спецификаций OpenType. Впоследствии именно Коэн привлек к работе над LineServices ученых из России. Сначала по рекомендации уже признанного в Microsoft русского специалиста Андрея Бураго был приглашен математик, выпускник Ленинградского университета Сергей Генкин, уже успевший поработать в США над созданием TeX-совместимой системы - с 1998 г. он возглавил "команду LineServices". Впоследствии в нее вошли Игорь Зверев, Виктор Козырев и, наконец, чемпион 1991 г. СССР по информатике среди школьников Антон Суханов, автор хорошо известных в странах бывшего Союза задач для олимпиад по программированию (к слову, их коллекция бережно сохранена и доступна по адресу antosha.com/archive/cont_r.htm). В перечень официально объявленных задач, которые решала команда, создание системы, обеспечивающей ввод математических формул, как бы не входило. Но это работы не убавляло - LineServices отвечала и отвечает и в семействе текстовых процессоров Word, и в библиотеке RichEdit за формирование макета документа. То есть LineServices отвечает за решение таких сложных и специфических задач, как создание объектов макета для редактирования двунаправленного текста, когда в одном документе встречаются, например, русский язык (в котором принято написание слева направо) и персидский или иврит (с противоположным направлением письма - справа налево), или редактирование текста с rubi-аннотированием в логографических языках (автор статьи умышленно оставил без транскрипции или перевода слово "rubi" - произошедшее от названия кегля "рубин", оно с искаженным смыслом вернулось в английский язык из позаимствовавших его японского и китайского, en.wikipedia.org/wiki/Ruby_characters). Название LineServices подсказывает, что речь идет об объектах, выстроенных в линию, т. е. в строку, но от этого решение перечисленных выше задач более простым не становится.

Новая офисная... математика
Рис.3 Подсказка возможности активации расширенного меню диалогового блока "Параметры формул"

Возможно, кроме личных способностей и талантов участников "команды LineServices", на достигнутые результаты повлиял и стиль ее работы - здесь, вопреки всяким "экстремальным" поветриям, принято было детально разрабатывать и продумывать программу и только после этого приступать к кодированию. А результаты оказались впечатляющими - команде под руководством Сергея Генкина удалось создать такие реализации компонентов LineServices и Page/TableServices (с более сложными, но родственными задачами), которые оказались пригодными к разработке на их основе высококлассной системы ввода математических формул. И только после официального выхода Microsoft Office 2003 Элайза Коэн согласовал с Биллом Гейтсом и старшим вице-президентом групп проектирования Windows и Windows Live Стивеном Синофски официальное начало новой разработки, к которой подключился и создатель ранних реализаций математической подсистемы на основе LineServices, талантливый разработчик Мюррей Сарджент. Новая команда Элайза Коэна провела встречу с мэтром математического компьютерного набора Дональдом Кнутом, пополнилась еще одним русским математиком-программистом Александром Васчилло, обосновала выбор в качестве языка представления математических формул Office MathML, а не MathML, реализовала в системе множество развитых TeX-подобных механизмов и высокоуровневых надстроек над ними. К слову, о выборе формата данных. Никаких "происков" в нем нет, а есть только здравый расчет грамотных проектировщиков - если Office MathML хорошо подходит к имеющейся программной инфраструктуре (а он именно хорошо к ней подходит, потому что создавался с учетом этой самой архитектуры), то выбор его очевиден - менее подходящий MathML потребует серьезных модификаций, которые влекут массу малоприятных, в том числе и для пользователей, последствий.

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

Линейно - не значит ограниченно

Есть такое неписаное правило: те, кому от программы нужны формулы, в меню заглядывать лишний раз не любят, обильная "мышиная возня" им не по душе. Ну что же, возрадуйтесь любители постучать по клавиатуре и поблагодарите Unicode, "команду LineServices", создателей шрифта Cambria, и, конечно же, Мюррея Сарджента за то, что вы наверняка давно ожидали от программы класса Word. За линейный формат представления математических формул. Впрочем, обо всем по порядку.

Новая офисная... математика
Рис.4 Диалог автозамены математическими символами, доступ из диалогового окна "Параметры формул"

В современной версии системы кодирования Unicode представлениям математических символов отдано, ни много ни мало, около двух тысяч кодов. Этого более чем достаточно для представления не только практически всех необходимых математику символов, но и их комбинаций, а также специальных, "управляющих" символов. Кроме того, в Unicode учтена и страсть математиков к выдумыванию новых обозначений, и для ее утоления оставлен приличный запас кодов. Возможности этого набора символов значительно шире аналога из мира TeX (который является подмножеством Unicode). В Word с незапамятных времен используется один удобный механизм манипуляции математическими символами - автокоррекция (autocorrect). Фактически он обеспечивает удобный для человека (а не сверхчеловека, способного держать в голове несколько сотен шестнадцатеричных кодов Unicode-символов) ввод специальных символов и их последовательностей с помощью традиционной клавиатуры. Например, букв греческого алфавита. Этих обязательных в мире математика символов на клавиатуре нет. Конечно, для их использования можно прибегнуть к выбору и вставке из соответствующего меню, но автокоррекция все же удобней - с ее помощью вполне понятные последовательности, например alpha или Psi, заменяются на символы α и ψ соответственно. Естественно, по умолчанию автокоррекция работает только в специальных областях математического ввода, или в "математических зонах", инициируемых в Word 2007 комбинацией клавиш "Alt" и "=". Автокорректор предлагает обширный набор готовых комбинаций формата "имя - символ или последовательность символов". Подробно ознакомиться с ним можно в соответствующем окне, к которому ведут несколько путей в новом интерфейсе Word 2007. Например, на первый взгляд не слишком очевидным, но вполне логически обоснованным путем активации диалогового окна "Автозамена математическими символами" через общее меню настроек программы (Кнопка Office - Параметры Word - Правописание - Параметры автозамены - Автозамена математическими символами, рис. 2). Второй путь можно назвать "сугубо математическим", инициируемым нажатием мини-кнопки "Параметры формул" диалогового блока "Сервис" (рис. 3, 4).

Автокоррекция математических символов - функция, безусловно, полезная. Но она была бы почти бессмысленной без реализации в Word 2007 нового языка описания математических выражений - одновременно легкого в понимании, лишенного избыточности, присущей, например, языкам разметки и, что главное, сохраняющего одно неоспоримое достоинство TeX, сделавшее эту систему королевой программ математического набора. А именно, формулу, записанную на этом языке, легко прочесть и понять без обязательной ее трансляции в иное представление. Причем сделать это даже легче, чем в оригинальной TeX. Впрочем, сразу перейдем к делу - создаем зону математического ввода (Alt + =) и вводим следующее выражение (a/b+c/d+e/f)/((v-z)+q) с совершенно прозрачным и очевидным смыслом. По мере ввода Word 2007 интерактивно автоматически преобразует его из линейной формы представления (именно так называется упомянутый выше язык описания формул, и это действительно полноценный язык, с формально определенной грамматикой) в так называемую "профессиональную", у вас на глазах выражение трансформируется, как показано последовательностью снимков экрана на рис. 5. Единственное неочевидное в этом примере - предпоследняя фаза ввода, когда в линейной форме представления, если можно так сказать, "закончились буквы". Дело в том, что после ввода последней закрывающей скобки выражение выглядит еще не совсем "профессионально" (третий фрагмент на рис. 5), и это дает возможность ознакомиться со специальным значением символа "пробел" в языке линейного представления. Так как математическая подсистема берет на себя заботу о формировании правильных и "красивых" расстояний между символами в профессиональном представлении (и делает это на основе существенно обновленной и улучшенной алгоритмики TeX, т. е. хорошо), необходимость в явно указанных пробелах в линейном представлении отпадает, поэтому пробел используется как терминатор, активирующий трансляцию. Что означает: после ввода последней закрывающей скобки смело нажимайте пробел - и получайте окончательный результат.

Новая офисная... математика
Рис.5 Последовательность автоматической трансформации линейной формы представления в профессиональную. Каждую трансформацию можно инициировать явно - нажатием клавиши пробел, или же неявно - продолжением ввода символов. Для завершающего приведения к профессиональной форме нажатие пробела обязательно!

Итак, имея под рукой первую формулу, сразу опровергнем возможные придирки скептиков. Фанатичный борец с интерактивными программами обязательно должен возмутиться примерно так: "Вот он, ваш WYSIWYG в действии - я вводил-вводил формулу в нормальной записи, а она исчезла, и что теперь делать?". К сожалению скептиков, придраться здесь не к чему - активируйте курсором мыши зону математического ввода с формулой и просто переключитесь в режим отображения линейного представления - ничего никуда не исчезло (рис. 6). Больше того, если вам не нравится интерактивная работа, просто отключите в меню "Параметры формул" автоматическое преобразование линейного в профессиональный формат. А теперь настало время сказать пару слов об "ужасах закрытых форматов" скептикам соответствующей специализации. Формула в документе - это, конечно, хорошо. Но что с нею делать за переделами документа, представленного в про...при... короче, в "закрытом" формате? Давайте проведем эксперимент - выделим и скопируем созданную нами формулу и вставим ее в другое приложение. Например, в программистский редактор чистого, plain текста. В результате этих действий мы получим... стандартное MathML-представление формулы (диалог "Параметры формул" позволяет управлять политикой копирования, определяя, что Word 2007 будет помещать в буфер обмена ОС линейное представление или MathML). Никакой премудрости в этом нет: и Office MathML, и MathML - определенные на основе XML языки, и трансляция одного в другой - дело техники (и двух xslt-файлов в составе дистрибутива Office 2007 - OMML2MML.XSL и MML2OMML.XSL).

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

Теперь давайте объединим нам уже известное - простую и достаточно очевидную математическую нотацию линейной формы представления и механизм автокоррекции. Первая дает простой, "человечный" способ ввода Unicode-символов, вторая - возможность описания сложных формул понятными средствами. В перечне операций языка линейного представления можно выделить следующие основные конструкции: уже упомянутой формы выражение1/выражение2 (с математическим старшинством операций), выражение1^выражение2 - создание верхнего индекса (по аналогии с распространенным в языках программирования оператором возведения в степень), выражение1_выражение2 - создание нижнего индекса, rectвыражение - помещение выражения в прямоугольник, underbarвыражение - подчеркивает выражение снизу, а overbarвыражение - сверху и т. д.

Изучать все возможности двух кратко описанных ключевых механизмов ввода математических формул Word 2007 лучше всего с помощью встроенной подсказки и обязательного к тщательному прочтению документа авторства Мюррея Сарджента "Unicode Nearly Plain-Text Encoding of Mathematics", доступного с сайта Unicode.org. Во встроенной документации вы без труда найдете описание всех символов подсистемы математической автокоррекции, а в работе Сарджента - полную грамматику языка линейного представления и список всех ключевых слов языка (приложение B этого документа вообще лучше всего распечатать в виде справочника).

Естественно, к способностям всей подсистемы следует отнести ее расширяемость - вы можете создавать собственные формулы и пополнять ими встроенную библиотеку для того, чтобы одной определенной вами командой стандартного синтаксиса имя повторно использовать свои наработки.

И в заключение о нумерации формул. Word 2007 уже критикуют за отсутствие явных механизмов проставления номеров формул в документе. Но из-за этого не стоит отчаиваться - вы можете использовать или прием, описанный в блоге разработчиков Word 2007, или воспользоваться готовым макросом, созданным Донгом Ю - специалистом исследовательского центра Microsoft.

0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT