Научная статья на тему 'Tex: анализ, потомки и конкуренты'

Tex: анализ, потомки и конкуренты Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
140
38
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Лидовский В. В.

Рассмотрены: компоненты и их взаимосвязь, краткая история, сильные и слабые стороны системы ТеХ, ее перспективы для подготовки научных публикаций. Делается вывод, что для своей области применения эта система пока является непревзойденной.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

TEX: analysis, descendants and competitors

The paper is devoted to analysis of the TEX-system for the scientific publication preparation. TEXcomponents and their connections, brief history, strong and weak points, perspectives are considered. The conclusion is made that the TEX-system is the best in its field for the present moment.

Текст научной работы на тему «Tex: анализ, потомки и конкуренты»

Вычислительные технологии

Том 8, № 3, 2003

TEX: АНАЛИЗ, ПОТОМКИ И КОНКУРЕНТЫ...

В. В. Лидовский РГТУ им. К. Э. Циолковского e-mail: litwr@yandex.ru

The paper is devoted to analysis of the TEX-system for the scientific publication preparation. TEXcomponents and their connections, brief history, strong and weak points, perspectives are considered. The conclusion is made that the TEX-system is the best in its field for the present moment.

Прошло уже более 20 лет с тех пор, как профессор Станфордского университета Д. Э. Кнут сделал доступной всем свою систему TEX для подготовки научных публикаций. Но ее популярность продолжает расти и сегодня. Например, число посетителей главного ТцХ-сайта Великобритании www.tex.ac.uk за последние шесть лет увеличилось в 10 раз, достигнув более миллиона в месяц.

Любая TX-система довольно сложна (едва ли найдется хоть один человек, который знает все возможности ее современных вариантов) и состоит из большого числа разнотипных компонентов.

Несмотря на большое количество литературы по TßX, в ней есть один существенный пробел — отсутствует глубокий анализ системы в целом. Автору настоящей статьи не удалось найти ни в одном источнике полного по различным критериям сопоставления TEX с WYSIWYG-системами1. Автор хочет восполнить этот пробел и провести соответствующий, хотя и не претендующий на полноту и всесторонность, сравнительный анализ.

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

Здесь стоит привести официальное мнение пользователей TßX из США2: "Вопрос использования TEX может послужить основанием для религиозных войн, так как те, кто используют его возможности для подготовки математических книг и статей, считают, что никакое сочетание других имеющихся средств не сможет обеспечить производство высококачественных полиграфических изданий при подготовке их самим автором. Мы с радостью предоставим материал для проверки тому, кто захочет доказать, что мы неправы. (Пользователей TX относительно мало, и их проблемы слишком сложны, поэтому Quark, Microsoft или Adobe не проявляют заинтересованности). С другой стороны, если вам нужно средство для создания газеты, книги-романа, эффектного объявления или письма тете

© В. В. Лидовский, 2003.

1WYSIWYG — What Your See Is What Your Get — системы типа Microsoft Word, которые позволяют редактировать документ в виде, приближенном к напечатанному.

2Перевод цитаты из документа "Just What Is TEX?" с главного сайта TUG — TEX Users Group.

Генриете, и, если вы не используете его для чего-нибудь еще (скажем, диссертации), то TeX — это средство не для вас."

Фундаментальные компоненты любой TX-системы — это программы tex (собственно TX), mf (METAFONT), bibtex (BibTeX), mpost (METAPOST), их исходники на языке литературного программирования Web (транслируются в Паскаль и затем, если нужно, в C++ перед компиляцией), доступны свободно в CTAN:/systems/knuth. Используя Web, можно получить одновременно программу и отличную документацию к ней [2, т. B и D].

TX — это компилирующийся универсальный язык программирования. Энтузиасты даже написали на нем транслятор с Бэйсика.

Алгоритм на TX записывается с применением средств, подобных препроцессору C+—+, т. е. макроподстановок, условной трансляции, включения файлов и т. п., к которым добавлены возможности для работы с переменными и файлами, т. е. можно организовывать ветвления и, используя рекурсивные макросы, циклы, но не переходы. Файловые операции включают только последовательные чтение и запись. Синтаксически TgX-текст состоит из собственно текста, макросов и примитивных команд, причем последние внешне не различаются и выглядят, за исключением нескольких особых случаев, как последовательности, начинающиеся со специального escape-символа, за которым следуют либо буквы, либо одиночный символ. В Plain TX и LTEX escape-символом является знак обратной наклонной черты (backslash), \, а в Texinfo — Макросы необязательно вызывать явно — они могут вызываться сами в определенных контекстах подобно конструкторам/деструкторам C+—+ или процедурам-демонам фреймовых систем.

TeX имеет 256 регистров для хранения каждого из множества типов данных для работы со специфически полиграфическими объектами, т. е. наборных коробок для шрифтов, различных видов заполнителей вертикальных и горизонтальных промежутков и т. п. В TEX имеются также 256 целочисленных регистров (для чисел из диапазона от —231 до 231) и столько же регистров для хранения объектов. Оба типа регистров различаются только по назначению и совместимы по присваиванию. С размерами и числами можно использовать четыре обычные арифметические операции. Однако TX дает возможность использовать гораздо более 256 переменных каждого типа. Дело в том, что числом 256 ограничивается только число переменных в одной области программы, а областей может быть много: одна, глобальная, есть всегда и можно сделать нужное число локальных областей, образуемых простым их заключением в фигурные скобки. Кроме того, локальные области могут вкладываться друг в друга. Ситуация очень похожа на использование фигурных скобок в C+—+. Есть в TEX и 256 логических регистров и регистры для хранения разного рода специальной информации. Работа с логическими выражениями реализована по минимуму. Нет, например, операции отрицания.

Недостатком TX является отсутствие средств для вызова других программ. Например, при подготовке указателей к книге список строк нужно отсортировывать. Выполнять сортировку средствами самого TX слишком громоздко и неэффективно. Гораздо лучшим решением было бы вызвать внешнее средство сортировки, например программу sort, но это невозможно сделать изнутри TX-программы. На практике подобные задачи (среди которых стоит выделить работу с библиографией при помощи BibTeX и построение указателей, например, при помощи makeindex) решаются несколькими прогонами Т^а, между которыми к данным применяются внешние средства.

Внесение в простой текст (plain text) дополнительной информации об его оформлении или структуре осуществляется при помощи разметки текста (markup). TX после подключения макроопределений задает разметку текста входных документов. Различают

физическую (или процедурную) и логическую разметку.

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

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

Макропакеты Plain и Eplain TEX задают процедурную разметку, а LTEX, ConTEXt и Texinfo — логическую. Последнее разделение весьма условно: в Plain TEX можно определить формат, соответствующий хорошей логической разметке, а, используя D-TEX, можно применять в любых количествах средства физической разметки.

METAFONT используется для создания высококачественных растровых (bitmap) шрифтов. Шрифты для него описываются на специальном языке со значительной долей декларативности в семантике: рисунки знаков на нем задаются, как правило, системами уравнений, решаемых автоматически. Шрифты на этом языке — масштабируемые, растр знаков создается для конкретных устройств вывода, но не в реальном времени интерпретацией как для шрифтов Adobe PostScript или TrueType, а предварительной компиляцией, т. е. METAFONT — это еще и растеризатор (raster image processor, RIP). Компиляция позволяет описывать сколь угодно сложные формы и проводить высококачественную растеризацию с коррекцией, но плата за это — время. Результат работы METAFONT — это не только двоичные матрицы для символов в файле формата pk (packed), но и файл метрик шрифта формата tfm (TEX font metric), в котором описываются размеры каждого символа шрифта. Кнут "заморозил" развитие METAFONT, и эта программная система, имеющая возможности для развития и модификации, не меньшие, чем сам TEX, практически не имеет вариантов.

BibTeX — система, разработанная к концу 1980-х годов О. Поташником для удобной работы с библиографией в TEX-документах [1]. Она является примером системы, задачи которой не могут быть решены простыми средствами.

METAPOST создан в AT&T Д. Д. Хобби последним в серии необходимых компонентов любой TEX-системы уже в первой половине 1990-х годов. Эта программа используется для подготовки графических иллюстраций. Она практически идентична METAFONT, имеются только в три отличия: 1) создает не растровые картинки, а масштабируемые в формате PostScript; 2) не имеет поэтому возможностей для растеризации; 3) не имеет встроенных возможностей для показа рисунков знаков на экране. Ее можно использовать для преобразования шрифтов METAFONT в шрифты Adobe Type 3. Возможности METAPOST во многом перекрываются созданным к 1998 году графическим макропакетом Xf-pic.

Упрощенно взаимосвязи основных компонентов классической TEX-системы представлены на схеме, из которой видно, что помимо собственной системы шрифтов можно использовать масштабируемые шрифты Adobe Type 1 и 3, а также TrueType. Использование фирменных шрифтов с TEX осложнено тем, что в них часто не определен полный набор нужных знаков. Остроту последней проблемы во многом снимают виртуальные шрифты, позволяющие объединять в себе знаки из разных шрифтовых файлов и задавать нужную кодировку. Программа Dvips обеспечивает подключение к TEX возможностей языка PostScript, которые значительно превосходят возможности языка dvi-файлов Д. Кнута, а

Взаимосвязи компонентов TEX-системы.

программа Ghostscript (gs) позволяет как печатать ps-файлы на не PostScript принтере, так и конвертировать их в другие форматы, например в pdf или растровые картинки. Работа с масштабируемыми mf-шрифтами основана на Dvips и Ghostscript.

Возможности конкретной TßX-системы определяются подключаемым стандартным макропакетом. Кнут в своей книге "The TEXbook" [2, т. A] описал макропакет Plain. В 1990-е годы К. Берри и С. Смит значительно расширили его функциональные возможности своим макропакетом Eplain (Expanded Plain), доведя их до уровня LTEX [1, 3]. Сам же LTEX Л. Лэмпорта появился еще в 1980-е годы, и постоянно развивался и сегодня является самой значительной работой после той, которую проделал Кнут. К нему созданы сотни разнообразных стилей. Известный макропакет AjS-TEX [4, 3], созданный Американским математическим обществом, ныне является частью LTEX. Новичку проще всего начать работать именно с LTEX. В конце 1990-х годов появился интересный макропакет ConT^Xt [5]. Он позволяет, в частности, создавать цветные интерактивные pdf-документы и печатать сложные химические структуры. Пока ConTßXt не поддерживает в полном объеме работу с текстами на русском языке. Особым макропакетом является Texinfo — это стандарт для ведения документации в GNU. Он позволяет из одного исходника получать как печатные издания, так и гипертекстные документы GNU info или html.

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

PlCTEX [6] и гораздо превосходящий его Xf-pic [7], интересный еще и объектно-ориентированным языком описания рисунков, Babel для поддержки работы с многоязычными текстами в LTEX и TreeTEX для рисования бинарных деревьев. У TEX есть специальные макропакеты для нотной записи, описания принципиальных электрических схем, импорта графики и др.

Существуют программы-конверторы SGML, HTML и RTF в LTEX и LTEX в HTML. Идеальной средой для TEX является Unix, его варианты существуют практически для всех операционных систем, включая Microsoft Windows и Mac OS.

Всего в каталоге CTAN3 насчитывается около 1200 документированных компонентов TX. Кроме того, ряд программ доступны помимо CTAN.

В 1992 году, после отказа Кнута развивать свои системы, началась реализация проекта NT' (New Typesetting System) с целью разработки системы, лучшей TX. В рамках этого проекта создается e-TEX. Работа идет очень медленно. Единственным заметным достижением по сравнению с другими подобными проектами стала возможность использования обычной математической нотации при расчетах, в частности, в логических конструкциях.

Сегодня наиболее перспективными являются разрабатываемые ТцХ-системы Omega (П) и PDFTßX. Система П значительно расширяет рамки классической системы, оставаясь максимально совместимой с ней: позволяет использовать 16-разрядное кодирование, в частности Unicode, количество регистров каждого типа увеличено до 65536, что дает возможность работать с фрагментами текстов разной ориентации: европейской — слева направо и сверху вниз, арабской — справа налево и сверху вниз, японской — сверху вниз и справа налево, старомонгольской — сверху вниз и слева направо. Система PDFTßX может производить файлы в формате pdf вместо dvi и позволяет использовать дополнительные возможности этого формата (цвет, все типы шрифтов и шрифтовых манипуляций, интерактивность и пр.). Перспективны также разработки подключения TX как заключительного звена к системам SGML и XML. Однако нельзя не отметить, что разработка новых компонентов TX в последние несколько лет несколько замедлилась.

Автор интенсивно использует TX уже более семи лет, и системы WYSIWYG вызывают у него теперь лишь чувства, похожие на соблазн, который испытывает уставший человек, видящий удобную инвалидную коляску с мотором... Но это мнение не бесспорно для всех пользователей TX, поэтому существуют мощные WYSIWYG-редакторы, лучшие из которых — LyX и TßXMACS, причем последний, по мнению его автора, позволяет сконцентрироваться именно на логической структуре текста, а не на визуальной.

В настоящее время используются еще две системы, во многом схожие с TX, — это Troff и Lout. Первая относится к одной из самых древних средств компьютерной полиграфии, корни которой уходят в разработки AT&T конца 1960-х годов. Это весьма гибкая и мощная система, но крайне громоздкая и уже не развивающаяся. Но она используется до сих пор, так как на ней написана большáя часть документации к Unix — страницы руководства (man pages). Сейчас ее вытесняет Texinfo. Система Lout, созданная в 1990-е годы в университете Сиднея в основном Дж. Х. Кингстоном, является потомком неудачливого конкурента TX, системы Scribe Б. К. Рейда. Она целиком основана на фундаменте языка PostScript, что до появления программ Dvips и особенно PDFTEX давало ей некоторые преимущества...

Есть несколько известных дистрибутивов TX. Практически в каждом дистрибутиве Linux есть пакет teTEX, содержащий все необходимое. Можно заказать диски CD-ROM

3CTAN — Comprehensive TEX Archive Network — полная сеть TEX-архивов, поддерживаемая на более 60 ftp-серверах по всему миру, среди которых, например ftp://ftp.dante.de/tex-archive.

TEX-Live или Dante CTAN. Для MS-DOS и OS/2 есть хорошо себя зарекомендовавший дистрибутив emTEX. Для среды Microsoft Windows неплохим выбором будет либо дистрибутив MikTEX, либо fpTEX — версия teTgX. Есть еще дистрибутив BaKoMa TEX с улучшенной поддержкой русского языка. На Apple Macintosh можно использовать дистрибутив OzTEX. Перечислены только бесплатные или условно бесплатные (shareware) программы.

Файлы компонентов TEX можно найти на поисковых серверах CTAN, например на главной web-странице TUG — www.tug.org или в Internet в целом, например, через www.altavista.com.

Список литературы

[1] Lamport L. LTEX: A Document Preparation System, User's Guide and Reference Manual. Addison-Wesley, 1994.

[2] Knuth D. E. Computers and Typesetting. Addison-Wesley, Reading, Massachusetts, 1986. Vol. A-E. [Д.Е. Кнут. Все про TEX. АО RDTEX. Протвино, 1993].

[3] Львовский С. М. Набор и верстка в пакете LTEX. М.: Космосинформ, 1995.

[4] Spivak M. The Joy of TEX. A gourmet guide to typesetting with the AMS-TEXmacro package. — Am. Math. Society, Providence, RI, 1990. [М.Спивак. Восхитительный TEX: руководство по комфортному изготовлению научных публикаций в пакете AmS-TEX. М.: Мир, 1993].

[5] Otten T., Hagen H. ConTEXt: an excursion. PRAGMA, Ridderstraat 27, 8064GH. Hasselt, The Netherland, 1998.

[6] Wichura M. J. The PICTEX Manual. Chicago: Univ. of Chicago, 1987.

[7] Rose K. H., Moore R. XY-pic Reference Manual. [В электронном виде доступно по адресу CTAN:/macros/generic/diagrams/xypic.tar.gz,1999].

[8] Hobby J. D. A User's Manual for MetaPost. AT&T Bell Laboratories, Murray Hill, NJ 07974, 1998.

Поступила в редакцию 18 октября 2002 г., в переработанном виде — 22 января 2003 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.