Современная технология
 
26.02.2003
Владимир Лидовский


 
стр. 1
стр. 2 >>

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

Значительная часть современных научных трудов по математике, физике, программированию и некоторым другим создается на TEXе. Хотя TEX используется прежде всего в научных кругах — это универсальная система, сложность которой, однако, делает ее практически недоступной для среднестатистического пользователя. Но для последнего есть широкий выбор возможностей: Microsoft Word, Sun Star Writer, AbiWord для Linux… Относительно редкая частота использования TEX для научных публикаций в России свидетельствует о незнании возможностей этой системы, во многом идеальной для своей области применения. Официальный российский TEX-сайт www.cemi.rssi.ru/cyrtug влачит жалкое существование — он давно не обновлялся, и с начала 1998 года по начало нынешнего его посетили только около 27 тысяч раз. А ведь TEX произносится не как «текс», а именно как «тех», то есть «по-русски».
По сравнению с программами, подобными текстовому процессору Microsoft Word, от нелицензионной копии которого автор отказался более пяти лет назад, TEX-система не тешит пользователя иллюзиями, что сложные проблемы можно решить просто, она дает полный контроль над обстановкой, имеет открытые и несложные для машинной обработки форматы данных, позволяет максимально быстро и качественно вводить математические формулы и, будучи созданной и развиваемой учеными в процессе работы над конкретными проектами, обеспечивает базу для здоровой научной прагматики.
Здесь стоит привести официальное мнение пользователей TEX из США (цитата из документа «Just What Is TEX?» главного сайта TUG — TEX Users Group). «Вопрос использования TEX может послужить основанием для религиозных войн, так как те, кто использует его возможности для подготовки математических книг и статей, считают, что никакое сочетание других имеющихся средств не сможет обеспечить производство высококачественных полиграфических изданий при их подготовке самим автором. Мы с радостью предоставим материал для проверки тому, кто захочет доказать обратное. (Пользователей TEX относительно мало, и их проблемы слишком сложны, поэтому Microsoft, Quark или Adobe не проявляют заинтересованности.) С другой стороны, если вам нужно средство для создания газеты, книги-романа, эффектного объявления или письма тете Генриете, то, если вы не используете его для чего-нибудь еще (скажем, диссертации), это средство не для вас».
В силу того, что любая TEX-система очень сложна (едва ли найдется хоть один человек, который знает все возможности ее современных вариантов) и состоит из большого числа разнотипных компонентов, беглое знакомство с которыми требует нескольких лет ее интенсивного использования, начинающим важно получать консультацию опытных TEXнологов и иметь под рукой всю необходимую литературу, большая часть которой доступна только на английском. Но не все так драматично: если использовать правильно сконфигурированный, наиболее популярный пакет LATEX, то новичку понадобится лишь минимальная стартовая поддержка, частью которой может послужить эта статья.
Ее история
Однажды, во второй половине 1970-х, Дональд Кнут получил гранки второго тома своего многотомника «Искусство программирования для ЭВМ», посмотрел их и сказал что-то похожее на «хех!». Это была реакция на первые образцы новой компьютерной полиграфии, качество которой было настолько низким, что он решил отказаться от издания с ее использованием. Подумав немного, он сказал приблизительно следующее: «Я ученый-компьютерщик. Я должен что-то сделать с этим». Это «что-то» превратилось в разработку системы, которая дает все возможности настоящей типографии кроме ощущения, может быть, запаха краски. Кнуту пришлось изучить традиционные типографские методы для качественной печати математических формул и подходы к разработке рисунков знаков, так как нужных шрифтов не существовало. Он предполагал, что на все про все ему понадобится полгода. Однако для завершения работы понадобилось почти десять лет и значительная помощь других специалистов.
Приблизительно через год после начала работы Американское математическое общество пригласило Кнута прочитать лекцию на свободную тему, возможно, лишь косвенно связанную с чистой математикой. Он решил говорить о компьютерных науках на службе математики и представил основы своих новых разработок TEX и METAFONT2 (средство создания шрифтов для TEX). Тогда же был отмечен ряд привлекательных свойств TEX:
- он предназначается для прямого использования авторами, которые точно знают, что им нужно;
- он пришел из академического источника;
- за него не нужно платить деньги (математики традиционно небогаты — карандаш, бумага, мел и доска — вот и все их исследовательские приборы до появления систем компьютерной алгебры);
- его входные и выходные данные одинаковы для компьютеров разных архитектур.
Работая над своими книгами, Кнут имел дело со всеми тонкостями академических публикаций: сносками, вставками и т. п. Ему пришлось создать язык описания документа, пригодный не только для компьютера, но и для обмена информацией между людьми, и использовал алгоритмы для форматирования текста, которые до сих пор никто не смог улучшить.
Изначально в TEX использовалось
7-разрядное кодирование, но с 1990 года используется 8-разрядное, обеспечивающее работу с документами, содержащими фрагменты на нескольких языках, что сделало его, в частности, весьма популярным в восточной Европе.
Кнут обещает вознаграждение всякому, нашедшему ошибку в его программах (TEX и METAFONT) и соответствующих им пяти книгах [2–6]. Текущая цена ошибки — $327,68.
Состав и структура
Фундаментальные компоненты любой TEX-системы — это программы tex (собственно TEX), mf (METAFONT), bibtex (BibTEX), mpost (MetaPost) — их исходники на языке литературного программирования WEB (транслируется в Паскаль и затем, если нужно, в C++ перед компиляцией) свободно доступны в CTAN (/systems/knuth). Используя WEB, можно получить одновременно программу и великолепную документацию к ней [3, 5].
TEX — это компилирующийся универсальный язык программирования. Энтузиасты даже написали на нем транслятор с Бейсика.
Алгоритм на TEX записывается с помощью средств, подобных препроцессору C++, то есть макроподстановок, условной трансляции, включения файлов и т. п., к которым добавлены возможности для работы с переменными и файлами, то есть можно организовывать ветвления и, используя рекурсивные макросы, циклы, но не переходы. Файловые операции включают в себя только последовательные чтение и запись. Синтаксически TEX-текст состоит из собственно текста, макросов и примитивных команд, причем последние внешне не различаются и выглядят, за исключением нескольких особых случаев, как последовательности, начинающиеся со специального escape-символа, за которым следуют либо буквы, либо одиночный символ. В Plain TEX и LATEX escape-символом является знак обратной наклонной черты \ (backslash), а в Texinfo — @. Макросы не обязательно вызывать явно — они могут вызываться сами в определенных контекстах, подобно конструкторам/деструкторам C++ или процедурам-демонам фреймовых систем.
TEX имеет 256 регистров для хранения каждого из множества типов данных для работы со специфически полиграфическими объектами, то есть наборных коробок для шрифтов, различных видов заполнителей вертикальных и горизонтальных промежутков и т. п. В TEX имеется также 256 целочисленных регистров (для чисел из диапазона от –231 до 231) и столько же регистров для хранения размеров до 5,7 метра с точностью до 54 нанометров. Оба типа регистров отличаются только назначением и совместимы по присваиванию. С размерами и числами можно использовать четыре обычные арифметические операции. Однако TEX дает возможность использовать гораздо больше 256 переменных каждого типа. Дело в том, что числом 256 ограничивается только число переменных в одной области программы, а областей может быть много: одна, глобальная, есть всегда, и можно сделать нужное число локальных, образуемых простым их заключением в фигурные скобки. Кроме того, локальные области могут вкладываться друг в друга. Ситуация очень похожа на использование фигурных скобок в C++. Есть в TEX и 256 логических регистров, и регистры для хранения разного рода специальной информации. Работа с логическими выражениями реализована по минимуму. Нет, например, операции отрицания.
Недостатком TEX является отсутствие средств для вызова других программ. Например, при подготовке указателей к книге список строк нужно отсортировывать. Выполнять сортировку средствами самого TEX слишком громоздко и неэффективно. Гораздо лучшим решением было бы вызвать внешнее средство сортировки, например, программу sort, но это невозможно сделать изнутри TEX-программы. На практике подобные задачи решаются двумя прогонами TEX, между которыми используются внешние средства.
Дополнительная информация об оформлении или структуре простого текста (plain text) вносится в него при помощи разметки текста (markup). TEX после подключения макроопределений задает разметку текста входных документов. Различают физическую (или процедурную) и логическую разметки.
При физической разметке точно указывается, что нужно сделать с выбранным фрагментом текста: показать курсивом, приподнять, центрировать, сжать, подчеркнуть и т. п. При логической разметке указывается структурный смысл выбранного фрагмента: примечание, начало раздела, конец подраздела, ссылка на другой фрагмент и т. п.
Логическую разметку всегда можно преобразовать в физическую, используя выбранный стиль. Имея наборы документов в логической разметке, можно придавать им при печати наиболее привлекательный вид, своевременно получая от специалистов-дизайнеров новейшие стили. Преобразование физической разметки в логическую формальными средствами практически невозможно.


 
стр. 1
стр. 2 >>


 Независимость или взаимозависимость? [ "13-я КОМНАТА" ]
 Новости [ "НОВОСТИ" ]
 Микрофишки [ "НОВОСТИ" ]
 Циклы истории [ "НОВОСТИ" ]
 Путь наш во мраке [ "НОВОСТИ" ]
 Особенности национальной безопасности [ "РЕПОРТАЖ" ]
 Добрая работа [ "КАФЕДРА ВАННАХА" ]
 Виртуальная стройка [ "ТЕМА НОМЕРА" ]
 Призракдома на холме [ "ТЕМА НОМЕРА" ]
 Большие братья [ "ТЕМА НОМЕРА" ]
 Хостеть не вредно [ "ТЕМА НОМЕРА" ]
 Системы управления: без денег [ "ТЕМА НОМЕРА" ]
 Движки для двигателя торговли [ "ТЕМА НОМЕРА" ]
 Анализаторы статистики [ "ТЕМА НОМЕРА" ]
 Домашнее задание [ "ТЕМА НОМЕРА" ]
 Суб культура [ "КОМПЬЮFЕРРА LITE" ]
 Над сетевым адаптером APC TravelPower 75 [ "КОМПЬЮFЕРРА LITE" ]
 Параллельные миры [ "SOFTТЕРРА LITE" ]
 Рождение горы [ "SOFTТЕРРА LITE" ]
 События [ "SOFTТЕРРА LITE" ]
 Овечный вопрос: попытка некролога [ "АНАЛИЗЫ" ]
 Коллеги покойной [ "АНАЛИЗЫ" ]
 Современная технология [ "ПРОДУКТЫ" ]
 Компьютерное вторсырье [ "МЫСЛИ" ]
 Славяне в окопах Португалии [ "МЫСЛИ" ]
 Хостинг [ "СОЧИНЕНИЯ" ]
 Тише едешь… [ "UNDOCUMENTED" ]
 Верите ли вы в унификацию интерфейса в вебе? Есть ли преимущества у платных контент-менеджеров перед бесплатными? [ "ВОПРОС НЕДЕЛИ" ]
 «Редакция не отвечает за то, что печатает» [ "ПИСЬМОНОСЕЦ" ]


<<Компьютерное вторсырье
Все материалы номера
Коллеги покойной >>