посвященные разного рода текстовым процессорам
Автор: Алексей Крюков, basileia@yandex.ru
Опубликовано: 20.03.2002
Оригинал: http://www.softerra.ru/freeos/16826/
Статьи, посвященные разного рода текстовым процессорам под Linux, традиционно принято начинать с общих рассуждений о назначении и пользе данного класса программ. И для этого есть серьезные основания. Ведь первое и естественное желание, возникающее у Windows-мигранта, впервые обратившегося к Linux, заключается в том, чтобы продолжить работу со своими данными, представленными, скорее всего, в текстовой форме. Начиная поиск подходящего софта, пользователь видит перед собой несколько облегченных редакторов (которым, соответственно, для серьезной научной работы – грош цена), а также монументальный StarOffice, до сих пор не способный нормально работать с русскими текстами. Ныне это положение меняется благодаря активной разработке проекта OpenOffice.org и ожидаемому StarOffice 6.0. И всё же принудительная сила реальности заставляет признать, что Linux традиционно ориентирован на подготовку файлов в простом текстовом формате, а вовсе не на работу с документами в режиме WYSIWYG.
Данное явление может оцениваться по-разному. Можно, конечно, в совершенстве освоить какой-нибудь текстовый редактор и после этого свысока поглядывать на пользователей текстовых процессоров, неспособных избавиться от привычки злоупотреблять оформительскими эффектами. Увы, практика показывает, что некоторые элементы оформления текста необходимо вносить уже на этапе его ввода. Скажем, выделение полужирным и курсивом часто несет смысловую нагрузку. Ну а если речь идет о тексте научном, то в нем наверняка понадобятся подстрочные примечания и таблицы. И еще хуже, если придется ссылаться на иностранную литературу: тогда не обойтись без совмещения в одном документе нескольких кодовых страниц, каковое, естественно, потребует смены шрифтов.
Таким образом, единственным выходом из положения становится подготовка документов на языках текстовой разметки (TeX и HTML), позволяющих задать нужные элементы форматирования в виде тегов. Однако изучение языка разметки требует определенных усилий, и не всякому пользователю дается легко. К тому же не всем приходится составлять многостраничные оригинал-макеты. Сочинять же служебное письмо со справочником по командам LaTeX на коленях – занятие едва ли осмысленное. Вот тут-то и приходит на помощь текстовый процессор LyX, представляющий собой уникальную попытку соединить одно из основных достоинств Linux – интеграцию с системой LaTeX с возможностью подготовки документов в визуальном режиме.
По LyX существуют неплохие руководства на русском языке. Это труды и Алексея Федорчука, послужившие отправной точкой при написании этой статьи. Но, во-первых, развитие LyX не стоит на месте, и некоторые рекомендации этих авторов, скажем так, слегка устарели. А во-вторых, их работы – это, прежде всего, руководства по русификации, построенные по принципу: делай так-то – получишь такой-то результат. Я же хотел бы подробнее описать сам механизм взаимодействия LyX с LaTeX, так, чтобы, во-первых, стал ясен внутренний смысл практических действий по начальной настройке программы, и, во-вторых, чтобы пользователю легче было понять, в каком случае LyX действительно может облегчить его работу, а в каком – проще заняться написанием исходников LaTeX напрямую.
Итак, LyX – это не что иное, как графическая надстройка над системой LaTeX, наличие которой в установленном виде необходимо для его нормального функционирования. И если открыть подготовленный в LyX файл в простом текстовом редакторе, можно увидеть нечто внешне сходное с исходником LaTeX. На это как будто указывает знак backslash, с которого начинаются все команды. Однако же аргументы этих команд не заключаются в фигурные скобки, а просто отделяются пробелом, да и в качестве знака комментария используется символ # (а не %, как в LaTeX). Кроме того, странное впечатление производит структура текста с многочисленными переносами строк: с новой строки начинается каждая команда. И лишь когда мы дадим команду распечатать текст (или просмотреть DVI или postscript), программа в качестве промежуточного этапа сгенерирует настоящий документ LaTeX (файл с расширением .tex), который при желании можно будет разыскать где-то в недрах каталога /tmp.
Для чего же понадобилось создавать специальный язык разметки, нужный только как переходный этап? На этот вопрос легко ответить всякому, кому приходилось видеть html-код, сгенерированный визуальными редакторами. Этот ход оттого и получается неудобочитаемым, что такие редакторы стремятся «на лету» исполнять команды пользователя, не пытаясь воссоздать их внутреннюю логику. А ведь язык LaTeX значительно сложнее, чем html, и последствия могут быть хуже. Приведу такой пример. Для пометки текста на иностранном языке в LaTeX обычно используются команды-декларации \selectlanguage{}. Такая команда будет действовать до появления следующей декларации, отменяющей ее, например:
Русский текст. \selectlanguage{english} Some text in English. \selectlanguage{russian} Снова русский текст.
Однако можно сделать и по-иному, заключив команду переключения языка в фигурные скобки вместе с относящимся к ней текстом, так, чтобы она действовала только на него:
Русский текст. {\selectlanguage{english} Some text in English.} Снова русский текст.
Очевидно, что первый способ предпочтительнее для выделения целых абзацев текста, второй же – для фрагментов в несколько слов. Ясно также, что программе куда легче оценить объем каждого отрывка при компиляции текста для печати, чем пытаться судить о намерениях пользователя в процессе редактирования. Так вот, LyX прекрасно справляется с этой задачей, так что в данном конкретном случае к расставленным им командам LaTeX сложно придраться самому строгому критику. Ну а для того, чтобы обеспечить сохранение данных в процессе работы, как раз и нужен упрощенный язык разметки, по возможности снимающий все разночтения, подобные описанному выше. Преобразование своего внутреннего формата в документ LaTeX, по существу, является основной задачей программы, и потому львиная доля настроек LyX связана именно с регулированием этого процесса.