KOI-8 CP 1251 ISO 8859-5 MAC OS


Развернутый научный отчет по инициативному проекту 95-07-19400в за 1996 год

"Эффективный способ адекватного представления научной информации в компьютерных системах России"



Организации, где выполнялся проект:


Цель проекта. Создание и развитие лицензионно чистой тщательно отработанной русифицированной версии TeX, наиболее удобной для пользователя и максимально совместимой с основными международными стандартами (ровно настолько, насколько это не создает существенных неудобств для пользователя).

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

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

Мы использовали CM макросы, фрагменты исходных CM текстов и лишь в незначительной степени фрагменты CMCYR исходных текстов. Однако мы сочли полезным сохранить в большинстве букв порядок контрольных точек.

В результате нам удалось: получить русифицированные аналоги более чем ста различных шрифтов (CMCYR - 50 шрифтов), сделать текст и буквы более привычными русскому глазу, по возможности сохраняя традиционные для CM шрифтов особенности, обеспечить более равномерную затемненность текста. Пока шрифты осуществляют лишь полноценную поддержку русского языка, но проработан план добавления поддержки остальных языков на кириллической основе народов России, при реализации которого будет обеспечена полная совместимость файлов на русском языке, подготовленных с разными версиями шрифтов.

Многие издательские системы допускают применять к используемым шрифтам разные эффекты типа серый, обведенный, с тенью и т.д., что порой позволяет получить значительный выигрыш в дизайне книги или статьи. Известен макрос ``overline'' для METAFONTа, с помощью которого знаток системы может для любого TeX овского шрифта сделать обведенный аналог. Идея этого макроса была использована для получения ряда других эффектов (серый, с тенью, на подложке и их комбинации). Однако традиционный механизм включения их в систему предполагает отдельные файлы со специфическими именами для каждого модифицированного шрифта. Поскольку имя шрифта может содержать лишь восемь букв и многочисленные сочетания уже заняты, не представляется возможным расширить это шрифтовое многообразие на традиционном пути. Проработан новый подход, заключающийся в создании временного (локального) шрифта, имя которого не обязано быть индивидуально и жестко фиксировано, а сам шрифт задается стандартным TeXовским шрифтом, набором используемых эффектов и их параметрами (уровнем серости, толщиной обведения, координатами тени и т.д.).

Алгоритм русских переносов является одной из составных частей пакета TeX, подлежащей жесткой стандартизации. Причина в том, что изменение разбиения слова при переносе может сказаться на изменении числа строк в абзаце, последнее - повлечь изменение разбиения на страницы вплоть до изменения количества страниц, что не допустимо. С другой стороны, использование TeX при автоматической обработке данных из базы в разных форматах требует надежного и безошибочного алгоритма русских переносов, который не может быть разработан легко и быстро. Наиболее распространенные русификации TeX используют два различных варианта алгоритма переноса Д. Вулиса и, к сожалению, ни один из этих вариантов не находит в каждом третьем из русских слов всех правильных с точки зрения русских традиций возможных разбиений слова при переносе (тестирование проводилось на подручном материале, включающем более 50 тысяч различных словоформ).

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

  • readme.eng (567) - краткое описание на английском языке,
  • readme.win (8,070) - краткое описание на русском языке в кодировке windows CP1251,
  • readme.koi (8,070) - то же в кодировке КОИ-8,
  • readme.alt (8,070) - то же в альтернативной кодировке ,
  • bin.zip (1,226,774) - исполняемое ядро системы ,
  • fonttfms.zip (543,533) - метрики шрифтов,
  • fontsour.zip (856,881) - описания шрифтов для автогенерации,
  • texinput.zip (923,426) - PLAIN TeX, LaTeX-2.09, LaTeX-2e, AmSTeX, AmSLaTeX,
  • doc.zip (471,732) - минимальная документация ко всем пакетам ,
  • medemo.zip (622,829) - демо-версия редактора МультиЭдитор, настроенная на ТеХ,
  • unzip.exe (113,152) - /не обязательна, если есть pkunzip 2.*/.
  • В отчетном году произведена существенная доработка авторского алгоритма переноса, в результате которой процент русских слов, в которых неправильно обнаружены или обнаружены не все традиционные разбиения при переносе слова сократился менее чем до 5%. Поскольку наиболее распространенные слова переносятся правильно, то вероятность неправильного переноса на самом деле значительно ниже. Результаты тестирования текущей версии переносов от 08.01.96 доступны ( zip - архив 120 kbyte ). При возможности дальнейшей доработки этого алгоритма процент ошибок можно будет понизить еще в несколько раз, что однако никак не скажется на обработке 99% файлов ввиду редкости ошибок. Поэтому предлагается стандарт алгоритма переноса зафиксировать не в тестовой, а в окончательной версии системы.

    Предшествующие разработке авторов не учитывали специфики работы в разнородной компьютерной сети, включающей в себя клиенты на разных платформах, работающих в разных кириллических кодировках. Хотя перевод конкретного файла из одной кодировки в другую не является трудно разрешимой задачей, взаимодействие между клиентами и сервером, содержащим TeXовское дерево, осложняется или необходимостью присутствия на сервере одних и тех же файлов в разных кодировках, или необходимостью организации многочисленных перекодировок на некоторых этапах обработки (а, возможно, и тем и другим). Разработанный автором вариант решения проблемы на основе перекодировок исходных файлов был в начале марта подвергнут резкой критике А. Слепухиным в связи с проблемами корректной обработки многоязычных текстов.

    Анализ различных подходов с их преимуществами и недостатками производился в ходе инициированной А.И. Роженко длительной заочной дискуссии по выработке стандарта русификации, в которой приняли участие: А. Роженко (Новосибирск), А. Шень (Москва), С. Львовский (Москва), С. Знаменский (Красноярск) и П. Овченков (Москва). Выработанные рекомендации обсуждались в ходе Международного рабочего совещания по электронным публикациям в г. Новосибирске (апрель 1996 года), а также в ходе Международной конференции TUG-96 в Дубне (август 1996 года), в том числе с А. Бердниковым (С-Петербург), В. Лисиным (Протвино), В. Конышевым (Черноголовка) и другими. Обсуждения однозначно отвергли возможность одновариантного решения.

    Стало ясно, что каждый из вариантов решения может иметь неоспоримое преимущество в одной ситуации и быть бесспорно ущербным в другой, и, следовательно, предлагаемая система должна быть гибкой и в то же время обеспечивать однозначную обработку в любой конфигурации. Такая система не сможет разместиться на PC, что резко снизит ее потребительские достоинства. Разумный выход предлагается в реализации двух вариантов системы: в ``серверном'', занимающем большое пространство и содержащем все необходимое для абсолютно корректной обработки любого файла, и в ``облегченном'', занимающем минимальное место и обеспечивающем совместимость на приемлемом уровне. Точные описания соответствующих систем и допускаемых уровней совместимости и многоязычности для ``облегченных'' вариантов в ближайшем будущем и в перспективе приводятся в приложениях. Система предполагает автоматическое распознавание кодировки входного файла и используемых для его обработки пакетов и информирование пользователя о возможной некорректности обработки и методах ее компенсации.

    В нашем дистрибутиве 1995 года автоматически распознавался формат файла, выполненного в одном из стандартных диалектов TeXа (Plain, LaTeX, AMSTeX). Смысл этого в том, что пользователь, получивший по сети файл, может не задумываться как и с какими опциями этот файл должен быть обработан, поскольку анализ осуществляется в автоматическом режиме. К сожалению, ``стандартный'' LaTeX существует в трех вариантах: LaTeX2.09, LaTeX2.09+NFSS, LaTeX2e, причем последний непрерывно модифицируется. Базовый набор команд для этих форматов почти совпадает, но имеющиеся небольшие отличия затрудняют корректную обработку поступающего файла. Распознавание форматного файла на этом уровне является на порядок более сложной задачей с далеко нетривиальным алгоритмом решения, требующим анализа не только заголовка файла, но и команд, встречающихся в теле документа. Столь же сложной задачей является выявление той русификации, на которую ориентировался автор документа.

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

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

    В ходе выполнения проекта выработан формальный язык описания системы параллельных поисков и логики вывода, позволяющий ясно и коротко описывать алгоритмы распознавания. Написана программа на языке Си, реализующая обработку ошибок записи алгоритма, его компиляцию и обработку документа. Последняя осуществляется за один проход, что существенно ускоряет анализ больших документов. Программа скомпилирована на WATCOM C++ 10.0 под DOS и отлажена под DOS и Windows 95.

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

    Система состоит из двух частей: MENU и SETUP. Для каждой из этих частей разработан специализированный язык, его отладчик и интерпретатор, написанный на WATCOM C++ 10.0. Вызывает их загрузчик, написанный на Ассемблере. Программы отлажены под DOS и Windows 95.

    В настоящее время (на момент сдачи отчета) ( система (trdemo.zip - архив 250 kbyte ). позволяет легко и быстро перестроиться на другой принтер, изменить автоматически определенный формат, параметры настройки памяти для этого формата, сменить программу редактирования, проверки правописания и прочие параметры, перечисление которых по объему выходит за рамки отчета. Все действия пользователя сопровождаются контекстной помощью на любом из двух языков, установленные настройки переносятся на другую машину в том объеме, в котором это имеет смысл. Система не только автоматически определяет нужные параметры, но и предугадывает логичные действия пользователя, подсказывая ему следующую операцию. Она же обеспечивает использование чрезвычайно эффективных пакетов поддержки графики BM2FONT и MFPIC, требующих от пользователя других установок кропотливой работы по конфигурированию. Разумеется, недостающие шрифты и форматные файлы создаются в автоматическом режиме.

    В задачи проекта не входит создание удобного для работы редактора. Однако распространяемый пакет не может не содержать одного из них. Есть замечательные редакторы, которые легко сделать более удобными для российского пользователя. Лучшие из них, на наш взгляд, это TeX Shell 2.71, содержащий интерактивный Help по LaTeXу, и MultiEdit 7.0 с его неограниченными возможностями универсального редактора.

    Переведены на русский язык для включения в дистрибутив описание и интерактивный Help к TeXShell. Разработаны макросы для MultiEdit, существенно облегчающие обработку ошибок, включая ``overfull hbox'', обходящий комментарии поиск парной скобки, в том числе \begin{}-\end{} и \команда-\endкоманда.

    Степень новизны полученных результатов. Основные идеи и алгоритмы, заложенные в систему, не имеют аналогов среди издательских систем в мире.

    Система ( trdemo.zip - архив 250 kbyte ) оставляет далеко позади по гибкости, удобству и другим возможностям наиболее известный и признанный наиболее удобным в мире дистрибутив 4TeX (Нидерланды).

    Методы и подходы, используемые в ходе выполнения проекта. Оригинальный алгоритм распознавания кириллической кодировки входного файла, созданный на основе статистического анализа 64 языков на кириллической основе, эффективно распознает кодировку даже по одному русскому слову.

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

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

    Наш оригинальный подход при создании всей системы в целом состоял в последовательном проведении следующих принципов: существует большое количества программ для редактирования, проверки правописания, просмотра и других, подменять и дублировать которые в создаваемой оболочке не имеет смысла, поэтому в оболочку не включены функции, дублирующие операционную систему или TeXовские утилиты, но целью ее функционирования, главной и единственной, ставится обеспечение оптимального взаимодействия между пользователем, операционной системой или оболочками, программами редактирования текстовых файлов, а также специализированными TeXовскими утилитами; открытость системы для модификаций, заключающаяся в том, что все алгоритмы ее функционирования считываются при работе из текстовых файлов, которые могут быть модифицированы квалифицированным пользователем; использование открытости, стандарта TDS (TeX Directory Structure), и других известных средств для обеспечения в ближайшей перспективе многоплатформенной поддержки системы; обеспечение поддержки всех активно используемых форматов и утилит, обеспечение возможности органичного включения новых форматов и утилит квалифицированным пользователем; предельная, на сколько возможно, оптимизация информации, находящейся на экране, в зависимости от текущего и предыдущего состояний системы, на экране не должно быть ничего не нужного в данный момент пользователю, но информация, которая понадобится должна быть ``под рукой'' (контекстная помощь); минимизация усилий пользователя, затрачиваемых на работу с системой (усилия измеряются количеством нажатий клавиш), средством минимизации является автоматическое определение большинства параметров обработки, тончайшие возможности настройки меню и режим автоматического выполнения стандартных последовательностей команд обработки (автозацикливание); любой из параметров обработки файла, в том числе автоматически определенный системой, может быть без труда модифицирован пользователем, настройки пользователя сохраняются и могут быть перенесены на другой компьютер.