Lyx.

Lyx - текстовый процессор для открытого мира.

[Алексей Федорчук]

Предисловие

Всем нам время от времени приходится сочинять проекты, отчеты, докладные (закладные - упаси Господь) записки и тому подобные достижения научно-административной мысли. Каковые должны быть оформлены должным образом. Поскольку форма такого рода сочинений - объективная реальность, данная нам в ощущениях начальства. И первейшим инструментом в этом благородном деле является текстовый процессор.

Представлены ли такие инструменты для Linux и родственных платформ? Безусловно. Это и облегченные текстовые процессоры типа Ted или Abiword, и активно развивающийся проект KOffice, и могучий интегрированный пакет StarOffice (ныне приобретающий статус открытого). Однако речь сегодня не о них: все они имитируют, более или менее удачно, парадигму работы с документами, принятую в Windows. Тогда как Unix-подобные системы располагают собственным, специфическим инструментом для работы с документами. Имя ему - Lyx.

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

Как правило, текстовые процессоры отличают от текстовых редакторов тем, что они обладают более широкими возможностями оформления документов, допуская использование различных параметров для символов (гарнитур, начертаний и размеров), абзацев (разностороннее выравнивание, выключка), заголовков и прочего. Поскольку все это не может быть отражено в стандартном ASCII-формате (в котором записываются файлы текстовых редакторов), процессоры обладают собственными форматами данных, практически всегда несовместимыми друг с другом (хотя, как я подозреваю, в основе их всех лежит ни что иное, как SGML, просто потому, что больше нечему).

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

Из всего сказанного следует и основное назначение текстовых процессоров: это, в первую очередь, инструмент для оформления, а не составления, документов. Могут возразить, что большинство пользователей применяют их в обеих целях. Согласен, бывает и так. Но это, как сказал бы Веня Ерофеев, позорно и преступно: попытки оформления одновременно с придумыванием приводят, как правило, к тому, что и то, и другое получается скверно.

Возможно два метода оформления документов - визуальное и структурное (или стилевое). Что такое первое - легко вспомнят пользователи старых версий Lexicon, где выделение элементов осуществлялось исключительно вручную (изменением кегля или начертания шрифта). Оформление структурное - это придание элементам документа определенных стилей, внешнее представление которых может изменяться как угодно и, в общем случае, независимо от их содержания.

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

Более того, это - сознательная установка разработчиков. Так, в одном из руководств по MS Word мне попалась фраза вроде того, что стилевые средства предназначены для профессиональных пользователей; то есть простому народу они не нужны.

Результат такой политики - то, что многие пользователи текстовых процессоров типа MS Word, достигнув изрядной изощренности в визуальном оформлении, просто не имеют понятия о стилях, структурировании документа и тому подобных материях.

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

Именно поэтому Lyx представляется оптимальным средством для оформления документов на платформе Linux (и любых других открытых Unix-подобных систем). Однако этим значение его не исчерпывается. Потому как Lyx - это не более, чем графическая надстройка над издательской системой TeX. И потому может выступать в роли полноценного средства для верстки оригинал-макетов, особенно структурированных документов нарративного характера.

Если мне удалось убедить читателя, что Lyx - вещь полезная и нужная (а для пущей убедительности эта заметка была создана именно силами Lyx), предлагаю перейти к его более детальному рассмотрению. Однако перед этим считаю своим приятным долгом заметить (с одновременным выражением признательности), что к изучению и использованию Lyx меня подвигла, во-первых, статья Lyx по-русски (в развитие которой и создается эта серия заметок), во-вторых, усилия IPLabs Linux Team, включивших в дистрибутив Linux Mandrake RE его корректно русифицированную версию.

Lyx как он есть

Lyx входит в состав практически всех дистрибутивов Linux, а также портирован под FreeBSD и OpenBSD. Существует он в двух вариантах - просто Lyx, базирующийся на библиотеке Motif (но его бинарные пакеты обычно скомпилированы статически), и Klyx, расчитанный на работу в интегрированной среде KDE (и требующий, соответственно, наличия ее и библиотеки Qt). Кроме того, для функционирования Lyx необходимо, естественно, наличие в системе и TeX.

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

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

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

Lyx, внешний вид

Рис. 1. Lyx, внешний вид

Можно видеть, что интерфейсные элементы Lyx включают главное меню и панель инструментов. В составе меню пункты:

  • Файл, включающий обычные действия по созданию, открытию, сохранению
  • и закрытию документов, их просмотру (через интерпретатор PostScript) и печати, а также экспорту и импорту;
  • Правка, включающая отмену и возврат отмененного действия, копирование, вырезание и вставку фрагмента, поиск и замену и т.д.;
  • TOC и Refs (не активизированные пункты);
  • Формат - изменение свойств символов, параграфов, страниц, а также документа целиком, и еще некоторые опции;
  • Вставка, возможная для рисунков, таблиц, сносок, примечаний и тому подобного;
  • Математика, где осуществляется вставка математических выражений;
  • Параметры, где настраиваются экранные шрифты, условия проверки орфографии и т.д.;
  • Документы, служащий для переключения между открытыми файлами (аналог пункта Window в Windows-программах);
  • Помощь, весьма полная и обширная.

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

Однако все это великолепии можно видеть (с русскими меню и прочим) только в полноценно русифицированных дистрибутивах, таких, как Linux Mandrake RE и BlackCat. В иных же есть риск наблюдать обычную абракадабру. Хотя Lyx и принадлежит к правильным (почти!) приложениям, берущим сведения о языковом окружении из локали, настройка шрифтов по умолчанию в нем на таковое отнюдь не расчитана. Так что прежде, чем использовать Lyx, придется затратить некоторое время на его конфигурирование.

Конфигурирование и русификация

Главный конфигурационный файл Lyx (lyxrc.defaults) расположен в каталоге /usr/share/lyx. Однако он сопровождается комментарием о том, что редактировать его не желательно - для этого, мол, предназначен файл $HOME/.lyx/lyxrc. Однако я решительно не вижу препятсвий к тому, чтобы править и непосредственно lyxrc.defaults. Создав, разумеется, предварительно его копию (на всякий пожарный случай).

Каталог $HOME/.lyx/ обычно появляется после первого запуска Lyx, если ответить положительно на соответствующий вопрос. Однако файла lyxrc вы там не найдете. Его нужно создать переименованием lyxrc.example или lyxrc.defaults (возможно, предварительно скопировав из /usr/share/lyx), Структура этих файлов различна и, соответственно, различными будут приемы конфигурирования и русификации.

Файл lyxrc.example содержит несколько секций, позволяющих настроить клавиатурные раскладки, экранные шрифты, инструментальную панель и многое другое. Настройки, доступные через lyxrc.defaults, существенно беднее. Однако это искупается простотой его конфигурирования и универсальностью. В частности, именно через него русифицируется Lyx в версии для OpenBSD. А также при системной русификации, основанной на подмене Xmodmap.

Что требуется для русификации текстового процессора? Представление русских букв на экране - раз, ввод их с клавиатуры - два, проверка орфографии и расстановка переносов - три. Начнем по порядку, со шрифтов.

По умолчанию Lyx ориентирован на использование шрифтов стандарта Adobe, которые не воспринимают кодировки KOI8-R. Универсальный рецепт для исправления этого - правка файла /usr/share/lyx/lyxrc.defaults. В котором последнюю строку, имеющую вид

\font_encoding "T1"

следует заменить на что-нибудь вроде

\font_encoding "koi8-r"
\screen_font_encoding koi8-r

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

Если этот метод не проходит (или почему-либо нежелателен), можно прибегнуть к правке файла $HOME/.lyx/lyxrc. В нем отыскиваются все строки вроде \screen_font_* и в качестве значений подставляются шрифты, заведомо содержащие символы кириллицы, например. семейства Cronyx, почти наверняка имеющимися к комплекте XFree86.

Разумеется, можно использовать и иные кириллические шрифты (Type 1 Сергея Шарашкина или Дмитрия Сорокина, например). Можно даже использовать Unicode-шрифты TTF (если они поддерживаются системой X Window), например, малый джентельменский набор от Microsoft, адаптированный для использования в кодировке KOI8-R. В этом случае Lyx примет вид вроде этого (рис. 2).

Внешний вид Lyx при использовании шрифтов TTF

Рис. 2. Внешний вид Lyx при использовании шрифтов TTF

Получив возможность видеть русские тексты на экране, желательно иметь и возможность создавать их. Для чего требуется кириллическая раскладка клавиатуры и ее переключатель.

Системный переключатель Lyx просто игнорирует, поскольку использует собственный, привязанный к клавише Pause/Break, причем расчитанный на триязыкого пользователя. То есть русский текст будет появляться только после второго на нее нажатия. Правда, при условии наличия соответствующей клавиатурной карты (файла *.kmap) в каталоге /usr/share/lyx/kbd или $HOME/lyx/kbd, поскольку и они в Lyx не общесистемные, а собственные, входящие в комплект.

Как и следовало бы ожидать, в каталоге /usr/share/lyx/kbd среди изобилия арабских, бразильских, чешских, венгерских и прочих широко распространенных раскладок кириллическую найти не удастся. Правда, ее можно взять по ссылке в цитировавшийся статье, однако переключение клавиатуры по второму нажатию клавиши CapsLock - не верх удобства.

И потому Иван Паскаль и Алексей Новодворский разработали иной метод русификации клавиатуры, основанный на использовании стандартных средств Xkb. Правда, соответствующая клавиатурная раскладка (koi8-r.kmap) потребуется все равно. Ее можно взять из штатного комплекта Linux Mandrake 7.0/RE с дистрибутивного диска или с ftp-сервера ftp://ftp.logic.ru (кроме того, у себя в Download я также разместил архив, содержащий все потребное для русификации Lyx) и поместить в каталог /$HOME/.lyx/kbd/.

Далее, необходим файл cyrillic.bind, помещается в каталог /$HOME/.lyx/bind. А в конец файла /usr/share/lyx/lyxrc.defaults дописывается строка

\bind_file cyrillic

Если же конфигурируется файл /$HOME/.lyx/lyxrc, то в секции "BIND", отыскивается строка

 #\bind_file cua

и заменяется на

\bind_file cyrillic

Затем в секции "MISC SECTION" отыскивается блок, ответственный за настройки клавиатур, отличных от американской:

 #\kbmap true
 #\kbmap_primary german
 #\kbmap_secondary american

Снявши комментарии с трех последних строк, заменяем german на russian:

 \kbmap true
 \kbmap_primary russian
 \kbmap_secondary american

и заодно проверяем, чтобы в следующем блоке

 #\bind "Pause" "keymap-toggle"

в последней строке комментарий имел бы место быть. После чего запускаем Lyx и начинаем вводить русский текст, переключаясь нашей (то есть Вашего покорного слуги) любимой клавишей CapsLock (или иным другим привычным способом).

Всего этого достаточно для ввода русских букв с клавиатуры. Однако - при правильной установке Xkb. Если же используется иной метод русификации клавиатуры (например, основанный на подмене Xmodmap), возможны всякого рода аномалии. Например, ввод знаков препинания только со второго нажатия на соответствующую клавишу. И тогда придется все же править файл /usr/share/lyx/lyxrc.defaults.

Следующий момент русификации - проверка орфографии. Для этого Lyx использует стандартное системное средство - программу ispell. И потому при наличии ее русской версии проблем с родным правильнописанием быть не может. Единственно, нужно указать на русский словарь. Для чего в файле /usr/share/lyx/lyxrc.defaults в строке

\spell_command "ispell"

Дописывается опция -d russian. Ну а при конфигурировании через /$HOME/.lyx/lyxrc в секции "SPELLCHCKER SECTION" со строк

 #\use_alt_language true
 #\alternate_language dansk

снимаются комментарии и датский язык заменяется на русский. Тут же можно дать Lyx возможность работать с пользовательским словарем ispell, сняв комментарии со строк:

 #\use_personal_dictionary true
 #\personal_dictionary .ispell_dansk

и заменив язык принца Гамлета на Великий и Могучий.

На чем процедуру русификации можно было бы считать законченной. Осталось только разобраться с печатью русских букв. В принципе процедура настройки для нерусифицированных дистрибутивов подробно описана (цитировавшийся мемуар). Однако в своем Mandrake 7.2 я ни с какими проблемами не столкнулся - при должным образом настроенном принтере русские буквы были выведены на печать тут же.

Вместо заключения

А теперь пару слов о том, чего ради все это затевалось. Я не буду подробно останавливаться на приемах работы с Lyx, - они настолько элементарны, что их легко освоит любой, имеющий минимальный опыт работы с любым текстовым процессором. Если, конечно, четко уяснит себе две особенности Lyx, отличающие его от программ типа Word.

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

Второе, что нужно понять - Lyx НЕ ЯВЛЯЕТСЯ WYSIWIG-процессором в том смысле, какой применяется к Word или PageMaker. Конечно, некоторое соответствие между экранным представлением документа и его видом на печати есть, но - не более. Полностью представить себе отпечатанный текст можно только при предварительном просмотре сгенерированного PostScript- или DVI-файла. Но зато уж это будет действительно адекватное представление (с учетом шрифтов, настроек принтера и т.д.). И практически гарантирует от неожиданностей в бумажной версии.

Что можно сделать посредством Lyx? Не скажу, что все, что угодно. Я не решился бы рекомендовать его для подготовки поздравительных открыток или рекламных проспектов. Однако если речь идет о документах нарративного характера объемом от нескольких страниц до нескольких печатных листов, отчетов, препринтов, проектов, иллюстрированных таблицами, графиками диаграммами - лучший инструмент найти трудно. Особенно, если нет желания сделать верстку таких документов делом всей жизни, с одной стороны, и получить откровенно любительский результат - с другой.

Конечно, подготовить средствами Lyx документ, оформленный очень нестандартно, трудно. Но здесь можно вспомнить, что Lyx - это просто надстройка над TeX, в чем легко убедиться, открыв файл *.lyx в любом текстовом редакторе. А уж о возможностях TeX написано достаточно. Впрочем, это совсем другая история.



[Источник Softterra.ru]

[ опубликовано 23/10/2001 ]

Алексей Федорчук - Lyx.   Версия для печати