С.В. Знаменский

Стандартизация русского \TeX: утопия или неизбежность

Работа выполнена при поддержке РФФИ, грант 95-07-19400в

Система \TeX, разработанная Д.Кнутом в 1982 г., активно используется людьми, имеющими дело со сложными математическими формулами, как

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

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

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

Предлагалось фиксировать набор русифицированных форматных файлов, очертив тем самым рамки стандарта. Выделяемые средства предполагалось направить на создание лицензионно чистой системы под различными платформами, поддерживающей фиксированные стандартом форматы, и организацию свободного доступа по сети. В ходе работ над проектом (см. http://www.botik.ru/PSI/RFBR_TeX) неожиданно выяснилось, что такое решение не имело бы должного эффекта по двум причинам: во-первых, мало кто согласится отказаться от тех или иных удобств, предоставляемых привычной ему установкой \TeX. В результате мы будем иметь еще одну трудносовместимую с уже существующими русификацию, что не поможет в решении стоящей проблемы. Во-вторых, существование и интенсивное развитие современных средств подготовки документов с непрерывно расширяющимися возможностями вскоре поставит на таком фиксированном стандарте клеймо архаичности. Самое страшное, что если последнее произойдет до распространения стандарта, то стандарт умрет так и не родившись.

Сколь большие средства потребовалось бы выделить для решения этой проблемы, чтобы можно было привлечь сильнейших разработчиков со всего мира, мобилизовав их усилия на создание такой системы, которая бы в течение длительного срока оставалась бы вне конкуренции? Трудно сказать. Подобный проект под названием \LaTeX3 осуществляется уже в течение трех лет, в работе задействованы сильнейшие специалисты по \TeX у, но до сложившегося стандарта ему еще далеко. Ясно одно: при современных темпах развития компьютерной сферы даже если и возможно создать нечто подобное, то это настолько дорого, что никогда не окупится. Есть ли выход из описанной ситуации?

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

Единственный на мой взгляд способ это осуществить состоит в следующем. Стандарт складывается поэтапно по уровням. Первый уровень включает в себя наиболее популярные исходные форматы: Plain и \LaTeX2.09. Каждый следующий уровень обеспечивает 100% корректную обработку всех файлов, включенных в предыдущий уровень. Постепенно уровень стандарта должен стать настолько высоким, чтобы обеспечить корректную обработку всех лежащих на популярных электронных архивах файлов.

Естественно, вы можете спросить, а причем здесь стандарт? Раз уж в принципе каждый из этих файлов и сегодня может быть корректно обработан, для этого лишь надо взять с архива CTAN соответствующие файлы, расположить их в правильных директориях и иногда подправить конфигурационные файлы. Я еще не сказал, что стандарт не должен заставлять пользователя ни искать среди более чем 50000 файлов CTAN нужные, ни разбираться в тонкостях конфигурирования системы. Подключение правильных файлов и конфигурирование должно быть заботой системы, а не пользователя. Этот принцип переносит трудности, связанные с многоплановостью развития \TeX, с плеч пользователя на плечи разработчика интерфейса запускающей \TeX оболочки. При таком подходе пользователю становится доступным все более широкий круг возможностей и сохраняется вся накопленная ранее информация.

Многие с недоверием относятся к этой идее, поскольку даже для человека, много лет работающего с \TeX овскими файлами, порой чрезвычайно трудно подключить и сконфигурировать все, что нужно для обработки конкретного файла. Как такую трудную интеллектуальную работу может выполнить какая-то оболочка? Наверняка в ее алгоритме окажутся какие-то скрытые ошибки, которые вместо помощи пользователю создадут ему еще большие трудности. Под разными операционными системами используются разные оболочки, что усугубляет недоверие.

Замечу, что на первом уровне (Plain и \LaTeX2.09) нет никакой трудности в правильном определении формата: незакомментированная команда \begin{document} однозначно указывает на \LaTeX. На каждом следующем уровне задача определения форматного файла и используемых версий некоторых стилевых файлов будет усложняться и для ее решения придется разработать соответствующий инструментарий, обеспечивающий легкую и быструю переносимость алгоритма распознавания на другие операционные системы и оболочки. Кроме того, оболочка должна оставлять пользователю возможность для обработки отдельного файла уточнить конфигурацию.

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

Перечисленные задачи решены в рамках проекта РФФИ ``Эффективный способ адекватного представления научной информации в компьютерных системах России'' (http://www.botik.ru/PSI/RFBR_TeX), дистрибутив русифицированного \TeX а, автоматически различающий Plain, AmS\TeX, \LaTeX2.09, AmS\LaTeX1.1, \LaTeX2e и AmS\LaTeX1.2, размещен на anonymous FTP, ftp://ftp.botik.ru/pub/msdos/Russian_TeX_97. Дистрибутив включает в себя утилиты (bm2font, mfpic), конфигурирование которых вручную обычно затруднительно. Он содержит также новые, качественные русифицированные шрифты и на нем в значительной степени будет основан уровень стандарта, включающий русифицированный \TeX.