Настройка VI и EX
Редактор vi предоставляет возможность настройки, осуществляемой установкой параметров командой :set. Далее следует список параметров, установленных на компьтере Wiliki для редакторов vi и ex (для получения списка используется команда :set all в командном режиме).
noautoindent magic noshowmatch autoprint mesg noshowmode noautowrite nomodelines noslowopen nobeautify nonumber tabstop=8 directory=/tmp nonovice taglength=0 nodoubleescape nooptimize tags=tags /usr/lib/tags noedcompatible paragraphs=IPLPPPQPP LIpplpipnpbp term=xterm noerrorbells prompt noterse noexrc noreadonly timeout flash redraw timeoutlen=500 hardtabs=8 remap ttytype=xterm noignorecase report=5 warn keyboardedit scroll=11 window=23 keyboardedit! sections=NHSHH HUuhsh+c wrapscan nolisp shell=/bin/csh wrapmargin=0 nolist shiftwidth=8 nowriteany
Некоторые параметы могут быть просто включены или выключены, а некоторые принимают значение (включенное или выключенное состояние называют булевым значением и наличие "no" перед параметром означает, что он выключен). Значения некоторых параметров рассмотрены ниже. Например : для установки параметра autoindent выполните команду :set autoindent или :set ai. Для отмены установки этого параметра : выполните команду :set noautoindent или :set noai.
autoindent(ai) вновь создаваемые строки выравниваются по отступу предыдущей. Для отмены отступа используйте в начале строки сочетание ^D в режиме вставки текста. Величина отступа также может быть установлена параметром shiftwidth. exrc файл .exrc загружается каждый раз при вызове vi. Это устанавливается переменной "EXINIT" или в файле .exrc в вашем домашнем каталоге. mesg команда :set nomesg отменяет разрешение появления текста на вашем терминале. number (nu) выводит номера строк вдоль левого края экрана. shiftwidth (sw) устанавливает значение отступа (используемого командами << и >>). Например : :set sw=4 устанавливает значение отступа равным 4. showmode (sm) показывает индикатор режима. Если вы находитесь в режиме вставки текста - в нижней строке экрана будет выведено сообщение "INPUT MODE". warn выводит предупреждение, если файл был изменен со времени выполнения последней команды записи. window (wi) устанавливает количество строк выводимых редактором vi на экран. Например : для использования 12 строк (из-за низкой скорости модема) используется команда :set wi=12. wrapscan (ws) когда в ходе поиска достигается конец файла, он продолжается с его начала.
wrapmargin (wm) если значение параметра не равно нулю, редактор автоматически вставляет новую строку. Например : команда :set wm=2 устанавливает параметру wm значение 2.
должен быть загружен шрифт размера
Во-первых, должен быть загружен шрифт размера 8x8. Для этого файл /etc/rc.conf должен содержать строчку (измените в ней имя файла со шрифтом на соответствующий вашей локализации):
font8x8="iso-8x8" # font 8x8 from /usr/share/syscons/fonts/* (or NO).
Команда для переключения режимов называется vidcontrol(1):
% vidcontrol VGA_80x60
Различные программы, ориентированные на работу с экраном, такие, как vi(1), должны уметь определять текущие размеры экрана. Так как это делается через вызовы ioctl к драйверу консоли (такому, как syscons(4)), то размеры будут определяться правильно.
Чтобы это проходило более гладко, можно включить эти команды в скрипты начальной загрузки, чтобы они выполнялись при запуске системы. Чтобы это сделать, добавьте такую строчку в /etc/rc.conf
allscreens_flags="VGA_80x60" # Set this vidcontrol mode for all virtual screens
Справочная информация: rc.conf(5), vidcontrol(1).
Настройка взаимодействия с LaTeX
Наконец, настала очередь наиболее интересной для нас группы настроек, непосредственно определяющих внешний вид документа при выводе на печать. Говорят, некогда существовал специальный «патч для кириллической печати», без которого использование LyX было затруднено. Однако мы знаем, что сам LyX ничего не печатает, и даже не готовит предназначенный для печати PostScript-файл: его задача заключается лишь в том, чтобы передать компилятору LaTeX требуемые данные. При этом главную роль играют параметры документа, сосредоточенные в его преамбуле. Так вот, ныне LyX научился вполне удовлетворительно составлять преамбулу LaTeX для документов на любом языке. О том, как это происходит, и пойдет сейчас речь.
Основное назначение преамбулы LaTeX – загрузка различных пакетов, которые в дальнейшем понадобятся при оформлении текста. Естественно, пакетов этих может быть очень много, и список их надлежит определять для каждого конкретного случая. Однако существует несколько основных элементов, которые ныне являются практически обязательными для правильно оформленного документа LaTeX:
; .
Необязательным, но распространенным элементом преамбулы является также .
В LyX часть перечисленных параметров задается глобально, а часть – для конкретного документа (для этого существует диалог «Формат документа», вызываемый через меню «Layout»). И лишь показатель основного языка текста можно указать дважды: в диалоге «Формат документа» и в диалоге «Preferences...» в качестве глобального умолчания. Разумеется, имеет смысл раз и навсегда установить значение russian, чтобы не делать этого при создании каждого нового файла.
Настройка XKB
Для того, чтобы настроить XKB:
В XFree86 3.x, необходимо добавить следующие строки в секцию Keyboard файла /etc/XF86Config:
XkbKeycodes "xfree86" XkbSymbols "us(pc101)" XkbGeometry "pc" XkbRules "xfree86" XkbModel "pc104" XkbLayout "ru" XkbOptions "grp:ctrl_shift_toggle"
В XFree86 4.x, необходимо добавить следующие строки в секцию InputDevice файла /usr/X11/XF86Config:
Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "ru" Option "XkbOptions" "grp_led:scroll,grp:ctrl_shift_toggle"
Эти настройки можно сделать в удобной графической утилите xf86cfg
в разделе Keyboard.
В данных примерах переключателем режимов является комбинация клавиш Ctrl+Shift. Теперь чтобы увидеть вводимые Вами символы, необходимо эти символы определить, так как X Window ничего не знает о символах кириллицы. Для этого необходимо загрузить соответствующую раскладку с помощью xmodmap. Пример такой раскладки можно найти или .
Загрузка раскладки происходит по-умолчанию из файла ~/.Xmodmap при запуске startx. Если вы используете XDM, добавьте следующую команду в файл ~/.xsession:
[ -x /usr/X11R6/bin/xmodmap ] && /usr/X11R6/bin/xmodmap ~/.Xmodmap
Более подробную информацию по настройке XKB можно получить .
Настройки клавиатурного ввода
Почитав документацию к LyX, можно убедиться, что его разработчики не имели ничего против использования своего детища с клавиатурами, отличными от английской. Тем удивительнее, что при первой попытке ввести какой-либо текст с кириллической раскладки на экране не появляется никаких символов. И всё же LyX не является «неправильным» приложением, поскольку его можно обучить понимать символы иностранных алфавитов. Для этой цели существует файл cyrillic.bind, распространяемый вместе с LyX в составе дистрибутивов фирмы ALTLinux. Если же вы не являетесь счастливым пользователем ее продукции, можете поискать данный файл где-либо в Сети или даже написать его самостоятельно. Синтаксис его очень прост: каждая строка имеет вид
\bind "Cyrillic_a" "self-insert"
Естественно, то же самое придется повторить для каждой буквы русского алфавита (точные их названия можно найти в описании какой-либо кириллической раскладки клавиатуры из каталога /etc/X11/xkb). Потом этот файл помещается в каталог LyX/bind (в usr/share или в домашнем каталоге пользователя) и прописывается (без расширения .bind) всё в том же диалоге «Preferences…» (вкладка «Look & Feel», на ней вкладка «Interface», на ней поле ввода «Bind file». С тем же успехом можно и вручную вставить в упомянутый файл preferences строку вида
\bind_file cyrillic
По крайней мере, именно такая рекомендация содержится во всех руководствах.
Вот только следует иметь в виду, что файлы из каталога bind вообще-то предназначены для задания настроек клавиатуры. И потому обрести возможность работы с русскими буквами, лишившись зато привычных клавиатурных комбинаций (даже таких обычных, как «слово вправо – слово влево») – это, очевидно, не тот эффект, которого мы хотели достичь. Иногда удается обмануть LyX, прописав сразу два bind-файла. Но – не всегда, и в любом случае этого нельзя сделать через пользовательский интерфейс. Да и не нужно, потому что никто не заставляет нас использовать cyrillic.bind в чистом виде: гораздо лучше слить его содержимое с каким-либо из имеющихся в комплекте bind-файлов (по умолчанию используется cua.bind), поместить образовавшийся файл у себя в ~/.lyx/bind и использовать его в свое удовольствие.
Создание пользовательского bind-файла целесообразно и по иной причине. Дело в том, что существует одна категория настроек LyX, которые нельзя выполнить через пользовательский интерфейс, и это как раз настройки клавиатурных комбинаций. Между тем некоторые из них традиционно было принято определять в lyxrc. Собственно, и сейчас никто не мешает употреблять в файле preferences команды вида
\bind "любая_клавиша" "любая_команда"
Только вот надо иметь в виду, что они будут начисто снесены при первой же попытке изменить какие-либо настройки LyX в интерактивном режиме. Очевидно, из этой ситуации может быть три выхода:
один раз задать настройки в диалоге «Preferences...», после чего править одноименный файл только вручную; править не preferences, а lyxrc.defaults, что, как мы отметили, не рекомендуется разработчиками; или же как раз и размещать все настройки клавиатуры там, где для них, собственно говоря, настоящее место, то есть в пользовательском bind-файле.
Помимо системной клавиатуры, LyX может работать и со своим внутренним переключателем раскладок. Придуман этот механизм прежде всего для удобства печати западноевропейских акцентированных символов. Дело в том, что в LaTeX для этой цели существуют специальные команды, с которыми LyX и должен сообразовываться. Пользы от этого, по-моему, в наших условиях мало. Вот если бы LyX умел динамически переключать экранный шрифт в зависимости от языка текста... А так акцентированные символы всё равно превращаются на экране в нечто, зависящее от используемой кодировки, так что, зная синтаксис соответствующих команд TeX, гораздо проще вводить их напрямую. Но как бы то ни было, возможность использования дополнительных раскладок существует. И потому полезно знать, что для их описания используются специальные файлы с расширением .kmap, хранящиеся в подкаталоге kbd программной директории lyx. В комплект поставки входит и описание русской раскладки для кодировки koi8-r (разумеется, она не нужна, если клавиатура уже русифицирована с помощью cyrillic.bind). Можно написать новую раскладку и самостоятельно: синтаксис этих файлов очень прост и к тому же хорошо описан в документации.
Дополнительных раскладок может быть подключено две (primary и secondary). В файле lyxrc.example приводится следующий пример их настройки:
\kbmap true \kbmap_primary german \kbmap_secondary american
Ручное включение данных строк в конфигурационный файл эквивалентно следующей последовательности действий: вызываем диалог «Preferences...», на нем открываем вкладку «Lang Opts» и вкладку следующего уровня «Язык», там активизируем опцию «Keyboard map» и прописываем нужные значения в ставших после этого доступными полях «1st» и «2nd». Хотелось бы только предостеречь насчет задания раскладки american: здесь имеется в виду вполне определенный файл american.kmap, содержащий описание международной раскладки с «мертвыми клавишами». Если это не тот эффект, который вам нужен, то не вписывайте в поле «2nd» ничего или впишите значение «null». Стандартную же американскую клавиатуру в LyX определять вообще не нужно: она получается сама собой (вернее, берется из системы) при третьем состоянии переключателя (обе раскладки отключены). К сожалению, этих состояний будет именно три даже в том случае, если одна из раскладок не задана.
Задав дополнительные раскладки, необходимо назначить клавиши, с помощью которых мы сможем получить к ним доступ. В lyxrc.example предлагается включить для этого в конфигурационный файл строку
\bind "Pause" "keymap-toggle"
Разумеется, «Пауза» здесь только для примера: можно назначить любую другую клавишу. Существуют также команды «keymap-primary», «keymap-secondary» и «keymap-off», обеспечивающие быстрый доступ к трем состояниям переключателя. Выше было отмечено, что помещать эти команды, если уж в них возникла необходимость, лучше всего в предварительно созданном пользовательском bind-файле.
Настройки LyX
Заглянув в программный каталог LyX (скорее всего, /usr/share/lyx), можно обнаружить там файл lyxrc.defaults, содержащий некий набор основных настроек программы. Этот файл автоматически копируется и в поддиректорию .lyx в домашнем каталоге пользователя. Тем не менее, авторы программы настоятельно советуют не вносить в него никаких изменений, а создать вместо этого в том же каталоге файл lyxrc, в котором и упражняться по своему усмотрению, взяв за основу тот же самый lyxrc.defaults, а также специальный файл lyxrc.example, содержащий образцы всех допустимых команд с комментариями к ним. По этой причине и основным содержанием существующих на данный момент руководств по LyX являются рекомендации по обращению с lyxrc.
Однако та версия LyX, которая ныне входит в состав всех современных дистрибутивов Linux и доступна с сайта производителя (1.1.6) слегка обогнала свою собственную документацию, и попытки создания файла lyxrc, скорее всего, не дадут в ней желаемого эффекта. Дело в том, что настройки свои она хранит в файле под названием preferences, который, хотя и не отличается по синтаксису от lyxrc, однако не рекомендован для ручной правки. Это и не нужно: в программе имеется диалог «Preferences…», где и вносятся все необходимые настройки. Диалог этот содержит несколько вкладок, в числе которых первой идет Look & Feel. Смысл содержащихся на ней опций понятен без особых объяснений. В частности, здесь можно:
определить шрифт для различных элементов интерфейса; определить экранные шрифты для вводимого текста (трех категорий: с засечками, без засечек и машинописный), а также их кодировку; отключить заставку, появляющуюся при запуске программы (чем пренебрегать ни в коем случае нельзя, потому что заставка эта маячит на экране гораздо дольше, чем от нее требуется); и многое другое.
Ну, а следующим номером идет вкладка под названием «Lang Opts» с двумя вкладками второго уровня: «Spel checker» и «Язык» (именно так; русификация программы, по-видимому, отстает от изменений в ее интерфейсе, откуда и происходит русско-английский диалект). Эта вкладка наиболее интересна для нас, так как здесь сосредоточено большинство опций, относящихся к русификации LyX. Впрочем, разделить их следует не на две, а на три группы:
; ; настройка взаимодействия с LaTeX (см. в следующей части статьи)
Рассмотрим их по порядку.
Назначение и Формат использования
AWK - утилита предназначенная для простых, механических и вычислительных манипуляций над данными. Довольно несложные операции часто необходимо выполнить над целыми пакетами файлов, а писать для этого программу на одном из стандартных языков программирования является утомительным и, как правило, не очень простым делом. Оптимальное решение проблемы - использование специальной утилиты AWK, включающей в себя не громоздкий и удобный язык программирования, позволяющий решать задачи обработки данных с помощью коротких программ, состоящих из двух-трех строк.
Утилита AWK изначально объединяла свойства утилит UNIX - sed и grep. В дальнейшем ее возможности значительно расширились. Настоящая документация ограничивается описанием возможностей утилиты AWK реализованной для компьютеров CONVEX. Утилита AWK была создана в 1977г, американскими авторами: Alfred V.Aho, Brian W.Kernighan и Peter J.Weinberger. Подробное описание всех возможностей утилиты AWK для UNIX дает их издание: ``The AWK Programming Language'', 1988.
AWK сканирует input (стандартный или указываемый набор файлов), и над строками, удовлетворяющими заданному образцу, выполняет указываемые действия. Строка может содержать максимально до 256 символов.
Формат:
awk [-Fc] [-f file] [files]
awk [-Fc] [prog] [files]
prog - программа, вида: ' образец ${$действие$}$'
file - файл с AWK-программой:
образец { действие}
образец { действие}
...
files - файлы, предназначенные для AWK-обработки.
-Fc - устанавливает разделитель полей в ``с'' (См. 1.2.1 и 2.4)
SED - неинтерактивный текстовый редактор, предназначенный для пакетного редактирования файлов. Полезен для:
Редактирования очень больших файлов; Редактирования файлов любой величины, если последовательность команд редактирования является слишком длинной и сложной и, следовательно, неудобной для выполнения интерактивного редактирования. Выполнения множества раз одной и той же функции редактирования.
SED копирует строку из input (стандартный или указываемый набор файлов) в PATTERN SPACE (некоторая область), и к этой строке применяет все команды, адреса которых попадают в PATTERN SPACE . Затем PATTERN SPACE копируется в output . (Фактически в PATTERN SPACE находится одна строка, за исключением команды N , см.4. Функции SED )
Формат:
SED [-n] [-e script] [-f sfile] [files]
script - набор команд редактирования SED , который может содержать до 200 команд или до 10000 байт.
sfile - файл со скриптом SED .
files - файлы, предназначенные для SED -редактирования.
-n - указывает, что в output выводятся не все строки, но только те, к которым применялась команда p. (См. 4.Функции SED . и 5.Функция контекстной замены.)
Флаг -e может быть опущен, если он присутствует один.
Команда SED :
[address[,address]] function [arguments]
адрес адрес функция аргументы
в Национальной Лаборатории Ферми, распространяется
Этот редактор разработан в Национальной Лаборатории Ферми, распространяется свободно в исходных текстах, имеет стопроцентный графический пользовательский интерфейс под Motif и рассчитан прежде всего на программистов и случайных пользователей. Nedit чрезвычайно прост в установке, изучении и использовании, обладает исчерпывающей Help-системой. И в то же время в нем отсутствует много возможностей, которые являются стандартом для профессиональных текстовых редакторов (макро, прямоугольные блоки, базовые средства форматирования). Nedit имеет реализации практически для любых рабочих станций с UNIX (SGI, Sun, HP, DEC, IBM), а также для VAX/VMS. Перенос на другие платформы с X/Motif не вызывает никаких проблем.
Nedit - на пути к идеалу
Редактор Nedit реализован для всех Unix- и Unix-подобных систем, как коммерческих, так и свободных. Он доступен на http://www.nedit.org/, последняя версия (5.1.1) - в виде исходных текстов, предыдущая (5.0.x) - также и как бинарные пакеты.
Nedit базируется на библиотеке Motif, имеющей статус коммерческой. Однако для Linux он может быть скомпилирован с использованием свободного аналога этой библиотеки - OpenMotiff. Кроме того, распространяемые бинарные пакеты (rpm и deb) компилируются статически, то есть без необходимости установки каких-либо специфических библиотек вообще.
По назначению Nedit сходен с Kwrite, но существенно превосходит его в функциональности и настраиваемости. И в том, и в другом отношении редактор этот приближается к идеалу. Однако осознал я это далеко не сразу. Потому что в моей системе долго не мог добиться поддержки вставки выделенного фрагмента по щелчку средней клавиши мыши. И мне казалось, что это - его особенность, полностью обесценивающая все прочие (весьма многочисленные) достоинства.
Однако по сведениям, полученным от моих корреспондентов, проблем в этом отношении, как будто, быть не должно. Я попробовал разобраться, в чем дело - и безуспешно. Тогда как последнее средство, я решил, установив предварительно OpenMotof, собрать пакет из исходных текстов (раньше я устанавливал его из статически скомпилированных rpm-пакетов) - и вставка средней клавишей мыши волшебным образом появилась. После чего понял, что могу описывать его со спокойной совестью.
В отличие от Kedit и Kwrite, Nedit управляется исключительно через меню: инструментальная панель отсутствует, что кому-то может показаться и недостатком (мне - так нет, это компенсируется достаточным количеством горячих клавиш). Главное меню насчитывает, за исключением непременного Help, семь пунктов:
File - это в основном обычные действия, как то: создание, открытие файла, в том числе - из списка последних, запись, ну и все такое прочее; о чем стоит сказать, как об уникальных особенностях - так это о пунктах Revert to Saved (это отмена изменений в уже записанном файле) и Include File (это вставка некоего существующего файла в текущий документ); Edit - также достаточно тривиально, это всякого рода выделение, копирование, вырезание, вставка; здесь привлекают внимание конвертация регистров (Lower Case и Upper Case), а также подпункт Fill Paragraph, конденсирующий абзацы в соответствие с принятыми правилами переноса слов (о чем - через пару пунктов); Search вполне заслуживает выделения в отдельный пункт главного меню, поскольку возможности поиска, да и замены, чрезвычайно широки; здесь же - создание закладок и переход к ним; Preferences - понятно, что это настройки, о которых я подробнее расскажу ниже; Shell - достаточно необычный пункт меню текстового редактора: здесь можно просто запустить на исполнение любую команду или программу (подпункт Execute Command, вызывающий нечто вроде минитерминала), определить в качестве команды на запуск строку из текущего документа (Execute Command Line); тут же - проверка правописания, подсчет слов и строк, сортировка и прочее, включая сборку программы из набранного исходного текста; Macro - этот пункт предназначен для запуска пользовательских макрокоманд; Nedit поддерживает собственный макроязык, довольно подробно описанный в справочной системе;
Windows позволяет расщепить текущее окно на два и более фрейма; в каждом из них будет своя, независимо прокручивающаяся, копия одного и того же текущего файла; кроме того, здесь же можно переключаться между всеми открытыми в документами; Nedit, в отличие от Kedit и Kwrite, истинно многооконный редактор: хотя каждый из открытых файлов существует в собственном окне со всеми его атрибутами (строкой меню, полосами прокрутки и прочим), все они присутствуют в едином списке окон и имеют одни и те же параметры настройки.
Кроме главного меню, существует и меню контекстное, вызываемое, как положено, щелчком правой клавишей мыши на выделенном фрагменте текста. Правда, оно достаточно простое, содержа лишь пункты Undo и Redo, Cut, Copy и Paste, что в комментариях не нуждается.
Таким образом, функциональность Nedit в первом приближении ясна из рассмотрения меню. Посмотрим, какова же его настраиваемость, для чего вернемся к пункту Preference.
Здесь можно отдельно настроить опции текущей сессии и параметры редактора по умолчанию. Начнем с первых. Это:
переключатели показа/скрытия статусной линии (где отображается, в том числе, полный путь до текущего файла, поддающийся выделению мышью, копированию и вставке в любой другой документ), линии избирательного поиска (Incremental Search Line) и нумерации строк в документе; режим языка (в смысле - программирования, а не человеческого); в списке доступных, не считая чисто текстового (Plain) - C и C++, Java и JavaScript, Ada, Fortran, Pascal, Python, Tcl, awk, язык командных оболочек линии bash, языки разметки HTML и TeX, PostScript, SQL и прочая, и прочая, и прочая; разумеется, есть и режим собственного языка NEdit Macro; включение/выключение автоотступов и переноса слов; в последнем подпункте предусмотрены опции - без переносов, автоматически по границе открытого окна, по заданному числу знаков, а также непрерывное; в этом случае экранная (не истинная) строка разрывается на границе окна без образования нового абзаца, подобно тому, как это происходит в emacs; установка экранных шрифтов; выбрав этот пункт, можно определить гарнитуру исходного шрифта вводом вручную или выбором из списка; в последнем случае необходимо явным образом отметить все три доступные для выбора атрибута - Font, Style и Size, иначе последует сообщение о некорректном определении шрифта; что характерно (вернее, не характерно для редакторов такого типа) хотя по умолчанию в списке присутствуют только моноширинные шрифты, можно включить также показ шрифтов пропорциональных, и использовать их в свое удовольствие; включение/выключение подсветки синтаксиса, в соответствие с определенным выше языковым режимом; включение/выключение режима создания резервных копий; переключатель для подсветки открывающей скобки при фиксации курсора на закрывающей, и наоборот.
Из этого, несколько, возможно, сумбурного, описания, можно понять, что в Nedit поддается настройке практически все (а что не настраивается через меню - на то есть другой способ, о котором чуть позже). Однако все описанные выше установки имеют силу только в текущем сеансе Nedit. Чтобы сделать их перманентными, нужно зайти в пункт меню Preferences - Default Settings, в котором нам будет предложен абсолютно тот же, хотя и слегка перетасованный, список опций и переключателей. Настроив его по собственному разумению, следует вернуться к пункту Save Defaults... для сохранения изменений - далее быть спокойным: при следующем запуске Nedit все будет, как доктор (то бишь my self) прописал...
Правда, через меню удается настроить не все, что может понадобиться впредь. В частности, здесь не удается прикрутить проверку орфографии для русскоязычных текстов. Однако на это есть метод левой резьбы - файл ресурсов .nedit в домашнем каталоге пользователя. Начальная его секция, отвечающая за пункт меню Shell, выглядит примерно так: nedit.shellCommands: \ spell:Alt+B:s:EX:\n\ cat>spellTmp; xterm -e ispell -x spellTmp; cat spellTmp; rm spellTmp\n\ wc::w:ED:\n\ set wc=`wc`; echo $wc[1] "lines," $wc[2] "words," $wc[3] "characters"\n\ sort::o:EX:\n\ sort\n\ number lines::n:AW:\n\ nl -ba\n\ make:Alt+Z:m:W:\n\ make\n\ expand::p:EX:\n\ expand\n\ unexpand::u:EX:\n\ unexpand\n
Достаточно в строке, относящейся к спеллингу, добавить после ispell параметр -d russian (предписывающий обращаться при проверке именно к русскому, а не какому иному, словарю), - и все будет в порядке: обращение к пункту Shell - spell будет отныне и вовек вызывать русский вариант программы ispell в собственном окне терминала (параметры которого, как нетрудно догадаться, описываются в той же строке конфигурационного файла) со всеми последующими действиями (о которых - в заключительном разделе этой саги).
Конечно, значение секции shell в файле ./nedit (как и следующей за ней секции macro) много шире: никто не мешает добавлять в любую из них собственные команды и конструкции (в первую - на языке командной оболочки и на собственном макроязыке Nedit - во вторую), наращивая функциональность соответствующих этим секциям пунктов меню...
А еще через меню (и через файл ./nedit - тоже) не удается настроить цвет фона, текста меню, курсора, геометрию открываемого окна и т.д. Все это, конечно, можно при необходимости указывать в командной строке при запуске. Однако, если такая настройка вам представляется необходимой, а указывать параметры лениво, можно обратиться к файлу .Xdefaults в своем пользовательском каталоге. Секции nedit в нем по умолчанию нет, но создать ее - труда не составит (хотя бы средствами того же Nedit), придав ей вид вроде ! nedit
nedit*Background: SlateGray nedit*Foreground: Wheat nedit*pointerColor: Orchid nedit*cursorColor: Orchid nedit*bitmapIcon: on !nedit*font: -cronyx-courier-medium-r-*-*-20-*-*-*-*-*-koi8-r nedit.geometry: 80x25
или указать какие- либо иные параметры, по собственному желанию.
Из приведенного описания видно, что по своим возможностям и настраиваемости Nedit вплотную приближается к emacs (а учитывая возможность сколь угодно широкого наращивания функциональности пунктов меню Shell и Macro - возможно, и не уступает). В то же время он предоставляет пользователю удобный и привычный интерфейс, лишенный архаических особенностей как emacs, так и vi.
К недостаткам Nedit (или, вернее, особенностям, которые могут не нравится), можно отнести отсутствие инструментальной панели и открытие каждого файла в собственном окне (а не в том же самом, с перемещением через систему закладок, например). Впрочем, и тот, и другой момент - спорны: отстуствие панели, как я уже говорил, компенсируется системой горячих клавиш, а перемещение между отдельными окнами, на мой взгляд, не менее удобно, чем между закладками.
Еще в Nedit нет штатных средств управления проектом. Однако эту функцию в элементарном исполнении, то есть в виде открытия и сохранения группы связанных файлов (глав книги, например, или серии web-страниц), несложно реализовать с помощью встраиваемых в меню сценариев оболочки и, вероятно, также и макрокоманд.
Короче говоря, если Nedit и не отвечает в полной мере идеалу текстового редактора, то вплотную к нему приближается. На мой взгляд, это один из лучших редакторов вообще и, пожалуй, лучший на платформе Linux. Дополнительное достоинство его - отсутствие привязки к конкретной графической среде (типа KDE или GNOME) и представленность во всех Unix-системах.
В общем, этот редактор мне так понравился, что я без тени сомнения добавил его в список любимых программ, о которых, как и о любимых женщинах, буду помнить всегда. Надо сказать, что за десять лет околокомпьютерной жизни список этот (программ, не женщин) отнюдь не велик. Ранее в нем были QuattroPro для DOS (не для Windows) от электронных таблиц, Lotus AmiPro - от текстовых процессоров, Surfer в обоих своих (DOS и Windows) ипостасях, ну и еще пара-тройка. Теперь в этом списке - и Nedit.
Подводя итог всему разделу, замечу: инструментов для создания текстов под Linux - вдоволь, и всегда можно выбрать подходящий. Так и дело обстоит с оформлением созданных текстов? Для этого нужно рассмотреть
Несколько слов о KLyX
Как известно, наряду с оригинальным LyX существует и его модификация, основанная на библиотеке Qt. Которая, возможно, кое-кому покажется более привлекательной, прежде всего потому, что красивые панели инструментов в стиле KDE весьма выигрышно смотрятся на фоне спартанского интерфейса оригинального LyX. С другой стороны, KDE как среда предъявляет определенные требования к ориентированным на нее приложениям, и эти требования не всегда вяжутся с такими, например, особенностями идеологии LyX, как необходимость настраивать поведение клавиатуры. А уж настройка программы реализована и вовсе замысловато. С одной стороны, здесь нельзя обойтись без ручного редактирования файла lyxrc. С другой же – KLyX, как и всякое уважающее себя KDE-приложение, имеет специальный инициализационный файл в каталоге ~/.kde, в который и заносит все настройки, заданные в интерактивном режиме. А поскольку файлы эти, будучи несовместимыми по синтаксису, в ряде случаев служат для регулирования одних и тех же параметров, то просто невозможно представить, чтобы их сосуществование не приводило к конфликтам.
Но заключается ли дело в идеологической несовместимости с KDE, или в чем-то ином, а только очень похоже на то, что KLyX так и остался всего лишь экспериментом, который не стали доводить до ума. Во всяком случае, не обновлялся он очень давно, и застрял на версии 0.12 (сравним-ка с номером текущей версии LyX). И действительно, программа отражает довольно архаический этап развития LyX. Сильнее всего в ней хромает многоязыковая поддержка. Правда, KLyX знает о пакете babel, но и только: переключать язык по ходу документа нельзя. В его каталоге нет базы данных languages, и, соответственно, нет режима «auto» для установки входной кодировки. А, между прочим, он очень бы пригодился, потому что список доступных значений этого параметра ограничивается двумя-тремя латинскими кодовыми страницами. Вот тут, пожалуй, и в самом деле не обойтись без «патча для кириллической печати», смысл которого свелся бы к добавлению пары строчек в ресурсы соответствующего диалога.
Но самая главная проблема заключается в другом. Всё, что мы говорили о способности генерировать удобочитаемый LaTeX-код, к KLyX не относится. Созданные им файлы LaTeX в точности повторяют все особенности исходного языка разметки LyX, вплоть до того, что чуть ли не каждое слово в них начинается с новой строки. И вот с этим мириться уже никак нельзя. Ибо для каждого пользователя наверняка рано или поздно настанет момент, когда возможности оформления документа, предоставляемые LyX, покажутся ему недостаточными. И тогда отправной точкой для дальнейшей работы с LaTeX станут именно файлы *.tex, образовавшиеся в качестве промежуточного этапа при выводе на печать. И если привычка к работе с LyX позволит пользователю миновать этот этап без особых затруднений, то, вероятно, свою задачу сможет счесть выполненной не только автор этой статьи, но и команда разработчиков LyX.
Netscape
Наибольшую проблему при русификации Netscape представляют кнопки и поля ввода. К сожалению по-видимому не существует "нормального" способа решить эту проблему, но кое что все же сделать можно:
Прежде всего конечно следует . Установите порт netscape (navigator или communicator). Добавте в файл ~/.Xdefaults следующие строки:
*fontList: -cronyx-helvetica-medium-r-normal-*-14-*-*-*-*-*-koi8-r *documentFonts.charset*iso8859-1: koi8-r *toolBar*fontList: -cronyx-helvetica-medium-r-normal-*-14-*-*-*-*-*-koi8-r
Остальные настройки производятся обычным способом, из меню Edit/Preferences.
Независимость данных
Основная цель проектирования SGML была в создании гарантий того, что документ, закодированный согласно его положениям, будет переносимым с одной аппаратной и программной среды в другую без потери информации. Два его свойства, описанных выше, отвечают этому требованию на абстрактном уровне; третье свойство -- на уровне строчек байтов (символов), которые составляют документ. SGML предоставляет обобщенный механизм строковой подстановки, то есть, простой машинно-независимый способ указания, что конкретная строка символов в документе в момент обработки документа должна заменяться на некоторую другую строку. Одно очевидное применение этому механизму -- обеспечение единой терминологии; другое, и более значительное, -- противодействие известной неспособности разных компьютерных систем понимать наборы символов друг друга, например, одной системе представлять все графические символы, необходимые приложению, путем описательного отображения непередаваемых символов. Строки, определяемые этим механизмом, называются сущностями (entities).
NLS. Сообщения на родном языке.
Ранее уже упоминалась возможность получения сообщений и работы с программой на родном языке. Такая возможность существует, и даннное средство называется NLS (National (или Native) Language Support).
"Национализация" в действительности включает в себя несколько аспектов :
Перевод сообщений программы на национальный язык.
Присвоение значения категории локализации LC_MESSAGES
и/или переменной LANG.
Перевод описания программы для man.
Чтобы организовать работу с сообщениями программы и дать возможность переводить их на другие языки, было введено такое понятие, как message catalog ( каталог сообщений ). Каталог сообщений хранится отдельно от программы. Естественно, каждая программа может ( и должна ! ) вести свой собственный
каталог сообщений, а система NLS
предоставляет средства для поддержки корректной работы. Большинство программ, а также системные библиотеки (libc и т.д.) используют NLS и их сообщения могу быть переключены на другой язык.
Message catalog - это фактически база данных, выборка из которой происходит по ключам :
выбранный пользователем язык сообщений,
имя исполняемой программы,
конкретное сообщение в программе.
В результате, на выходе, мы получаем строку
конкретного сообщения конкретной программы на нужном нам языке.
Система NLS предоставляет набор стандартных библиотечных вызовов для работы с каталогами сообщений и набор утилит
для создания и поддержания этих каталогов (базы).
В настоящее время существут две основных реализации NLS :
X/Open XPG3/XPG4 (с функцииями ,, и утилитой )
SUN XView (с функциями gettext(), textdomain()
) См. и пример реализации .
В наиболее широко распространенной реализации XPG4 всем сообщениям программы присваивается определенный номер, который служит индексом для поиска текстовой строки в message catalog-е. Кроме того может существовать несколько
наборов (sets) сообщений внутри одного каталога.
Для поиска самих message catalog-ов
от данной программы используется переменная окружения .
Нормализация Образцов Документа
Команда sgml-normalize разворачивает любые пустые тэги и заполняет пропущенные тэги в образце документа. Другими словами, данная команда проверяет, что каждый непустой элемент имеет открывающий и закрывающий тэги, в соответствии с требованиями DTD.
Большое количество программного обеспечения SGML требуют нормализованного SGML, поэтому данная команда - быстрый способ подготовить документ к использованию с подобного рода программами. Эта команда не имеет назначенной комбинации клавиш, потому что не часто используется. Ее вызов можно осуществить либо из командной строки минибуфера (M-x), либо через пункт Normalize меню Modify.
Новые параграфы и подчеркивания.
Новый параграф is signified by a blank line like this...
Forcing a line break like this
can be done using the newline keyword.
Soft Development эмулирует известный редактор
Редактор nu/TPU компании a/ Soft Development эмулирует известный редактор EVE, использующийся в операционной системе VAX/VMS. Программная поддержка в данном редакторе явно недостаточна для современных технологий разработки программ (отсутствует поиск ошибок компиляции, работа с тегами). Есть определенные проблемы с установкой nu/TPU (файлы описания клавиатуры имеют ошибки, инструкции по инсталляции иногда непонятны и даже неправильны), В то же время, руководство по использованию редактора написано в хорошем стиле. В целом, редактор может удовлетворить только бывших программистов VAX/VMS.
О
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] [ръуЮут]
О чем я умолчал
М-м, да тонны всего, но только для того, чтобы изложение было легким и никого не отпугнуло. Вот некоторые важные элементы, используемые в DocBook, но не включенные в изложение:
Таблицы, Графика (с автоматическим выбором "подходящего" формата) и Автоматическое создание индексов.
Не затрагивалось и все, относящееся к изменению DTD или стилевых таблиц.
О чем здесь написано ?
Данный документ можно рассматривать как попытку дать некоторое введение
в средствах локализации (locale) в UNIX-like (POSIX) операционных системах (в частности Linux и FreeBSD). Основные вопросы, которым в нем уделено внимание :
краткое введение
выбор правильного значения локализации
установка средств локализации (если еще не установлены)
включение локализации
проверка правильности функционирования средств локализации.
В данном документе _не_
освещены вопросы :
локализации системы X Window и других графических подсистем (шрифты и т.д.)
вопросы ввода, отображения и печати национальных символов.
Hичего не сказано о проблемах локaльного времени и временных поясах.
Hе уделено никакого внимания таким средствам locale
как , wide class символы
и еще много чему...
О преимуществах
Что дает использование SGML в реальной жизни? Мне оно сразу дало возможность производить документы в любом требуемом виде. Удобно оказалось и написание "вордовых" бумажек в привычной среде XEmacs без использования Windows. Все использованные программы -- бесплатны и распространяются в исходных текстах, что позволило установить их на всех используемых мной системах. Причем оказалось, что начать работать с SGML вовсе не сложно, каждый, кто хоть раз редактировал WWW страничку, не испугается вида конструкций SGML.
Потом уже, по мере постепенного изучения SGML, я осознал, что эта техника дает громадное количество возможностей по сравнению с типичной "настольной типографией":
Продуктивность
Четко разделенные процессы ввода информации и ее форматирования позволяют автору сосредоточиться на изложении мыслей, не отвлекаясь на двигание текста по экрану и подбор стилей.
Единая стилистика
Легко выдерживать различные документы в едином стиле, используя единую терминологию. Если стиль или термины нужно изменить, это делается разом во всех документах, не трогая их содержимое.
Повторное использование
Этот термин, хорошо знакомый программистам, означает наличие возможности использовать детали старых проектов в новых, с минимальными изменениями. Часть документа, оформленная в виде SGML-элемента, может переноситься в другие документы, легко повторяться в разных местах текста.
Долговечность информации
Из-за того, что SGML -- простой и стандартный формат хранения данных, отсутствует необходимость переформатировать их ввиду устаревания аппаратной или программной платформы. Информация просто доступна навсегда. Она несет с собой все необходимое для создания документа.
Лучшее управление данными
С SGML можно определять информационные элементы и манипуляции с ними с произвольной степенью детальности. Размеченные элементы могут иметь атрибуты, определяющие характеристики и свойства элементов. Эта информация не предназначена для печати, но может помочь в управлении элементами данных. Например, атрибут ID (идентификатор) может уникальным образом идентифицировать один абзац, или целый раздел, примечание, иллюстрацию, задание, -- любой элемент, как в этом примере:
<para id=431>Информация</para> |
Так как идентификаторы являются машинно-читаемыми, они могут связывать между собой информацию и использоваться для разнообразного управления ей. Например:
Контролировать безопасность доступа к информации, позволяя только определенным людям просматривать или изменять ее.
Автоматизировать перемещение информации -- например, обновление данных в одном месте может инициировать обновление той же информации в других приложениях.
Разделяемость
Возможность работы со структурированными компонентами документа позволяет строить целый документ из составных частей, разбросанных по организации. Это позволяет пользователям делиться информацией без ее дублирования.
Мобильность
В информационных сетях, объединяющих разнообразные компьютеры, операционные системы и приложения, мобильность становится ключом ко всеобщей доступности информации. Поскольку SGML не зависит от аппаратуры и приложений, можно легко обмениваться документами между различными системами.
Гибкость в приложении
SGML позволяет использовать информацию далеко за рамками "настольной типографии". Например:
страницы WWW;
информационные базы данных;
диагностические / экспертные системы;
электронная почта;
гипертекстовая документация;
публикации на CD-ROM;
интерактивные электронные мануалы.
О программном обеспечении
Чтобы начать работать с документами в SGML пользователю нужны два основных средства: редактор и средства экспорта (форматирования).
Объявления SGML и DTD
PSGML не требует, обязательного включения в документ объявления SGML. Даже если такое SGML-объявление будет включено, PSGML проигнорирует его. PSGML использует Reference Concrete Syntax, но не поддерживает ограничения, накладываемые этим документом, на длину имени типа элемента.
PSGML должен знать, где обнаружить описания элементов DTD. Сообщить PSGML о местоположении описания элементов DTD можно тремя способами:
Через идентификатор SYSTEM в объявлении DOCTYPE. Через идентификатор PUBLIC в объявлении DOCTYPE. Через установку соответствующей переменной PSGML в Emacs.
Первые два метода являются стандартными, и поэтому могут использоваться другими приложениями SGML. По этой причине, новичку лучше воздержаться от использования третьего метода.
Идентификатор SYSTEM - самый простой метод. Он вставляется в DOCTYPE определение, подобное приведенному ниже
<!DOCTYPE chapter SYSTEM "mybook.dtd"> |
ключевое слово SYSTEM сообщает программному обеспечению, что DTD находятся в файле "mybook.dtd". При использовании вышеупомянутого объявления в большинстве операционных систем программное обеспечение ищет данный файл в каталоге файла документа. В некоторых системах можно задать полное имя файла:
<!DOCTYPE chapter system "\dev\sgml\dtds\mybook.dtd"> |
Некоторое программное обеспечение SGML более придирчиво относится к имени пути, ожидая встретить в имени пути прямые слеши "/", характерные для UNIX, вместо обратных "\", даже если используется система DOS или Windows. У PSGML не возникает никаких проблем со стилем DOS.
Идентификатор PUBLIC популярен при использовании известных элементов DTD. Объявление DOCTYPE включает строку после слова PUBLIC, как, например, в случае с DocBook DTD:
<!DOCTYPE chapter PUBLIC "-//Davenport//DTD DocBook V3.0//EN"> |
Тем не менее приложение SGML (в данном случае PSGML) все же должно знать, где лежит копия этого "общественного" DTD. Наиболее общий способ сообщить приложению данную информацию - через файл каталога в формате, определенном SGML Open Technical Resolution 9401:1995. Каждый вход этого файла (обычно называемый каталогом(catalog)), начинающийся с ключевого слова PUBLIC, идентифицирует DTD и фактическое имя файла системной копии DTD, а, в случае необходимости, его местоположение. Ниже приводятся примеры входов для DocBook и DTD HTML:
PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "DOCBOOK.DTD" PUBLIC "-//IETF//DTD HTML//EN" "\WEBSTUFF\HTML.DTD" |
Таким образом, необходимо указать SGML и всем его приложениям местоположение файла catalog, чтобы они имели возможность использовать элементы DTD через объявления PUBLIC. Чтобы сообщить PSGML местоположение этого файла, нужно присвоить переменной SGML_CATALOG_FILES значение, содержащее полное имя файла catalog. Если файл имеет имя catalog и расположен в директории \dev\sgml\dtds\ (в синтаксисе DOS/Windows), то следующая команда сообщит PSGML, где найти файл catalog:
set SGML_CATALOG_FILES=\dev\sgml\dtds\catalog |
Учтите, что элемент DTD может содержать объявления для установок объекта (ENTITY), которые он сам же использует, и что нужно сообщить приложениям, где найти эти установки объекта. Например, элемент DTD включает следующее объявление объекта, чтобы позволить использование в документах набора символов ISO:
<!ENTITY % ISOchars PUBLIC "-//ENTITIES Public ISO Character Entity Declarations//EN" "iso-public"> |
PUBLIC "-//ENTITIES Public ISO Character Entity Declarations//EN" "ISOPUB.ENT" |
Обнаружение ошибок разметки
Как было показано ранее самый быстрый способ активировать PSGML после загрузки документа - это запустить команду sgml-next-trouble-spot (C-c C-o). Для многих пользователей PSGML это привычная процедура.
Следует неоднократно повторять данную процедуру в процессе работы. Например, всякий раз перед сохранением документа, чтобы быть уверенным, что структура сохраняемого документа не содержит ошибок. Переместите курсор в начало документа, или начало той части документа, которую необходимо проверить и нажмите C-c C-o. Если в окне минибуфера появится сообщение "Ok", значит PSGML не обнаружил каких бы то ни было проблем.
Следует помнить, что команда PSGML sgml-next-trouble-spot не выполняет полный синтаксический анализ, а только помогает отследить явные ошибки. Чтобы проверить текст надлежащим образом, нажмите комбинацию клавиш C-c C-v (команда sgml-validate. По этой команде экран будет разбит на два окна, в одном из которых будут выводиться сообщения о процессе выполнения синтаксического анализа документа, в том числе и сообщения об ошибках, если таковые будут обнаружены. окне. По умолчанию в PSGML установлен синтаксический анализатор 0.4 beta 2 nsgml. Это свободно распространяемая версия синтаксического анализатора, разработанного Джеймсом Кларком. Ниже будет показано, как можно установить в PSGML другой синтаксический анализатор.
После нажатия C-c C-v (пункт Validate меню SGML), PSGML в окне минибуфера выведет сообщение о запускаемой на выполнение команде, которое при необходимости можно отредактировать:
Validate command: nsgmls -s whalin.sgm |
(Ключ s сообщает nsgmls, что нужно выводить только сообщения об ошибках и не отображать информацию о ходе синтаксического анализа.) Редактирование необходимо для вставки, если потребуется, имени файла, содержащего объявления SGML (SGML declarations), перед именем файла документа. Вызвано это тем, что nsgmls, являющийся достаточно полным синтаксическим анализатором, гораздо в большей степени заботится о конструкциях SGML, чем PSGML следует Reference Concrete Syntax. А поскольку Reference Concrete Syntax не позволяет названию типа элемента иметь более восьми символов, то nsgml будет выдавать двухстрочные сообщения об ошибках всякий раз, когда встретит где-либо в тексте подобную конструкцию.
Когда команда проверки синтаксиса появится в окне минибуфера, переместите курсор и введите имя файла, содержащего объявления SGML:
Validate command: nsgmls -s ..\catalog\docbook.dcl whalin.sgm |
Предполагается, что путь к программе синтаксического анализа установлен. Если PSGML не может найти nsgml, то появится соответствующее сообщение об ошибке в окне вывода.
Общая структура
Каждый документ Texinfo начинается с команды plain TeX \input, читающей файл texinfo.tex. Это единственное место, где TeX "просачивается" в Texinfo. Часть файла, начиная с включения texinfo.tex и до так называемого корневого узла [Top node] -- об узлах мы поговорим позже -- составляет заголовок документа. Корневой узел или корень документа открывает собой тело документа, простирающееся до заключительной команды @bye.
Все команды Texinfo вводятся символом @ . За at-символом должна быть как минимум одна буква. Немногие команды нуждаются в фигурных скобках для группировки аргументов. С командой @bye, указывающей на конец документа, мы уже встречались. Приведенный ниже пример простейшего файла Texinfo вводит команду @c, обозначающую комментарий. Комментарии Texinfo продолжаются до конца строки, в которой они появились.
\input texinfo
@c === заголовок ===
...
@c === тело ===
@c --- Головной узел [Top Node] ---
...
@c --- Вложенные узлы ---
...
@bye
Общая структура AWK-программы
1. Язык программирования AWK допускает использование:
Полей;
Переменных (Стандартных, Массивов);
Арифметических выражений.
2. Образец:
Регулярное выражение;
Выражение отношения;
Комбинация образцов;
BEGIN и END.
3. Действие:
Последовательность предложений, разделенных ``;'' или ``\n'' (новая строка)
Предложение:
Вывод (Печать);
Присваивание;
Встроенная функция;
Управляющая структура.
Общая структура документа
Вот пример очень короткого, но, тем не менее, полноценного документа LaTeX:
\documentclass{article} % preamble \pagestyle{empty} \begin{document} % body Собственно текст документа. \end{document}
Каждый документ LaTeX состоит из преамбулы [preamle] и тела [body]. Преамбула начинается с определения класса документа, задаваемого \documentclass[опции]{имя класса} и "простирается" до (но не включает в себя) \begin{document}. Тело -- это все, начиная с \begin{document} и до \end{document} включительно.
Преамбула данного выше примера содержит лишь одну команду: \pagestyle{empty}, которая указывает LaTeX'у игнорировать все определения страниц, такие, как "бегущие" [running] заголовки или номера страниц. Знак процента представляет комментарий, который продолжается до конца соответствующей строки.
Обзор команд редактора VI
Команды сгруппированы по действиям, более подробный обзор смотрите здесь. Для удобства использования сохраните файл в обычном текстовом формате, удалите команды, которые вы не планируете использовать и распечатайте.
Вырезание и вставка/удаление текста Вставка текста Перемещение по файлу Перемещение по экрану Замена текста Поиск текста Манипулирование символьно/строковым форматированием Сохранение и выход Разное
Команды редактора EX
Обзор программы: Nedit
Вернёмся назад, в те дни, когда когда прославленный основатель этого специализированного журнала John Fisk писал для этой колонки. Другой автор, Larry Ayers, имел обыкновение делать обзоры программ. Он кратко упомянул о программе Nedit. Но никогда не рассматривал её более подробно.
В таком случае, это сделаю я :-)
Вот уже три года я использую Nedit. Всю работу я делаю в нём -- когда нахожусь в "иксах", как сейчас. Внешний вид Nedit вы можете увидеть на http://gazette.linux.ru.net/lg78/articles/misc/adam/nedit1.png .
Эта программа обладает огромными возможностями. Наиболее популярная из них -- синтаксическая подсветка для языков программирования. Вот их список:
C C++ Java JavaScript Ada Fortran Pascal Lex Yacc Perl Python Tcl Awk Sh Ksh Bash Csh Makefile SGML HTMK LaTeX Postscript SQL Matlab VHDL Verilog Xresources Nedit Macro CSS Regex XML
Если случается так, что вы пишете на языке программирования, который не перечислен выше, то вы можете сами написать для него шаблоны в виде регулярных выражений.
Nedit также предоставляет развитый механизм поиска и замены, использующий всё те же шаблоны (регулярные выражения) как с учётом регистра, так и без него.
В нём имеется возможность формировать сложные запросы.
Каждый из пунктов меню (имеется ввиду меню 1-го уровня), может быть "оторван" и расположен в отдельном окне. Это может быть полезно, если какой-то из пунктов приходится вызывать очень часто.
Программа может быть загружена со множеством ключей, большинство из которых я использую, но мне ещё не удалось найти применение для всех опций, с которыми может быть запущен Nedit. Если вам этого мало, то учтите, что Nedit позволяет писать свои собственные макросы, так что вы можете сами создавать "супернавороченные" функции.
Рекомендую эту программу всем и каждому. В то же время, не желая изобретать новый велосипед в стиле Emacs/Vim, я всё-таки считаю Nedit реальной заменой и альтернативой "X11-Emacs", пожирающему слишком много оперативной памяти!! :-)
Вы можете скачать Nedit отсюда:
Попробуйте и наслаждайтесь им :-)
Обзор распространенных программ просмотра Info
info | нет | нет | да |
pinfo | нет | нет | нет |
emacs | нет | нет | да |
xinfo | нет | да | да |
tkinfo | нет | да | да |
gnome-help-browser | да | да | нет |
kdehelp | да | да | нет |
Оформление и контроль
Редактор vi предоставляет программистам возможность аккуратного оформления кода. Существует переменная определения позиции для каждого уровня вложенности кода. Для ее определния обратите внимание на раздел "Настройка VI и EX". Например для определения отступа равным 4 символам используйте команду ":set sw=4".
Можно также использовать следующие команды (поддерживают аргумент count) :
<< Сдвиг строки влево на одну позицию. >> Сдвиг строки вправо на одну позицию.
Редактор vi предоставляет возможность контроля кода по круглым или фигурным скобкам. Команда "%" контролирует парность круглых или фигурных скобок. Установите курсор на скобку и введите команду "%" для перемещения курсора на парную. При отсутствии парной скобки прозвучит сигнал, предупреждающий об ошибке.
ОКНА, БУФЕРА
^X 0 Уничтожить окно ^X 1 Первое окно на весь экран (ZOOM) ^X o В другое окно M-^V Листать другое окно ^X ^B Список буферов ^X k kill-buffer
Omitting LaTeX
If you get all your equations in place and run txt2html, there is no need to keep generating the gif files if you just want to edit some other part of the text. Since this is also time consuming, there is a command-line option in txt2html which will not produce any latex output. For instance, now that I have produced the
expressions for the above discussion, I need only dotxt2html index.txt nolatex
to regenerate this document.
OpenJade
Замена для Jade -
Расширенная версия Jade написанная DSSSL сообществом (смотрите ниже о DSSSL). Некоторые приложения требуют Jade, но для многие из них изменены(или изменяются) для поддержки этого пакета.
Описание формата словаря Мюллера, Издание 7. Под GNU GPL.
В первой строке словарного файла обозначены авторские права на словарь: (C) V.K.Mueller English-Russian Dictionary, 7 Edition;
"State Publishing House of Foreign and National Dictionaries" Moscow 1961;
Free Electronic Version by S.Starostin 1996 starling.rinet.ru/download/dict.exe;
Electronic Version by E.S.Cymbalyuk 1999 under GNU GPL, ver. 1.2, see latest version on www.chat.ru/~mueller_dic or www.geocities.com/mueller_dic
Исходная электронная версия словаря Мюллера 7-ой редакции свободно доступна на странице (под названием dict.exe). Во время юридического разбирательства между фирмой "ABBYY" и издательством "Русский Язык" выяснилось, что издательство "Русский язык" имеет права только на издания после 1961 г., а до того никаких прав на ограничение его распространения ни у кого нет. Как обладатель авторского права на вышеуказанную (dict.exe) электронную версию словаря Мюллера, Сергей дал мне разрешение на его переработку. Я разрешаю использовать мое электронное представление словаря Мюллера под
в закрытых проектах пользуйтесь версией Сергея :-)
Словарь зарегистрирован в депозитарии электронных изданий НТЦ "ИНФОРМРЕГИСТР" 29 февраля 2000 г. и ему присвоен номер государственного учета 0320000030.
Во второй строке кратко описан формат словаря на английском, а в третей превод на русский (затем идут пояснения к сокращениям). Формат словаря Каждая словарная статья представляет собой строку.
Два пробела отделяют английское слово от его перевода.
Русские буквы кодируются в koi8-r.
A stress in a Russian word is coded by a capital letter.
Транскрипция в формате IPA показывается в квадратных скобках.
Различные значения одного слова индексируются латинскими или арабскими цифрами с предшествующим подчеркиванием. Например, _I-_VII, 1.-6., 1>-34>, а>-о>.
Служебные слова начинаются с символа "_" и завершаются символом "." или ":".
Формат словаря максимально приближен к исходному (книжному) форматированию текста словаря.
Для авторов программных оболочек, в которых нужно отделять переводимое слово в словарной статье от его перевода (пояснения) введен разделитель --- два пробела подряд.
Мной введен один служебный символ --- "_" (он был выбран, так как в обычных текстах словарей он не встречается и в регулярных выражениях Unix не играет специфической роли). С этого символа начинаются все служебные слова, причем слова, обозначающие употребление в разных областях знания, русские, а грамматические служебные слова --- английские. Все служебные слова заканчиваются точкой или двоеточием. Список сокращений добавлен в начало файла словаря, после строки с авторскими правами. С символа "_" начинаются также римские цифры, обозначающие разные значения основного переводимого слова (чтобы отличить от употребления буквы "I" в предложениях и в сносках на другие слова). Словарная статья может разбиваться на подразделы цифрой с точкой и/или русской буквой со скобочкой ">" (я заменил обычную скобку ")" на ">", для более точной работы автоматического форматирования).
В исходном словаре Сергея Старостина особым образом кодировалось ударение в русских словах. Чтобы не потерять эту информацию в данной версии все русские ударные буквы превращены в заглавные. При правильно настроенной русской локали это позволит проводить поиск по русским словам без учета регистра. Доступна версия и с нормальным использованием русских букв.
Транскрипция выделятся скобочками "[" и "]". Символы транскрипции соответствуют стандарту (International Phonetic Alphabet).
Основные английские фонетические символы,
"a" from "man" --- Q, 81
"w" --- W
"a" from "past" --- A, 65
":" from a: in "past" --- 249, 0xF9
"e" from "her" --- 171, 0xAB
"e" first from diphthong in "care" --- E, 69
"o" from "wash" --- 141, 0x8D
"a" from "son" --- 195, 0xC3
"i" короткое "i" from "ink" --- I
"i" длинное "i" from "machine" --- i
"'" ударение голосом --- 200, 0xC8
"," понижение голоса --- 199, 0xC7
"k" --- H
"z" --- Z, 90
"ng" --- N, 78
"sh" --- S, 83
"th" с голосом --- D, 68
"th" без голоса --- T, 84
Большинство маленьких английских букв не изменили своего положения. Главная неприятность в использовании IPA
стандарта --- нельзя сделать один фонт содержащий и русские и английские буквы и фонетические символы (разве только UNICODE). К тому же на месте "-", "(", ")" находятся другие символы и для нормальной работы их приходится удалять (хотя в обычных бумажных словарях они используются вперемешку с символами транскрипции).
Словарь (версия 1.2) вместе с файлом хешей можно скачать в виде tar.gz архива. Тот же словарь с ударениями в русских словах можно найти здесь. Каждый пакет занимает по 2.6 Mb.
--- программа на C для перекодировки словаря в другие русские кодировки (с сохранением транскрипции в Sil-IPA).
Все вопросы, замечания и предложения присылайте Евгению Цымбалюку на mueller_dic@koi.chat.ru
Описательная разметка
Система с описательной разметкой использует коды разметки, которые просто предоставляют названия для категоризации частей документа. Коды разметки, такие как <para> или \end{list}, просто идентифицируют порцию документа и утверждают, что "она является параграфом", или что "это -- конец последним начатого списка" и т.п. С другой стороны, система с процедурной разметкой определяет, какая обработка должна выполняться в конкретной точке документа: "в этом месте вызвать процедуру PARA с параметрами 1, b и x", или "передвинуть левую границу на 2мм левее, правую границу -- на 2мм правее, пропустить одну строку и встать на новую левую границу" и т.п. В SGML инструкции, необходимые для обработки документа с какой-либо конкретной целью (например, для форматирования), четко отделяются от описательной разметки, которая встречается внутри документа. Обычно они собраны вне документа в отдельных процедурах или программах.
С описательной, а не процедурной, разметкой один и тот же документ может быть обработан разнообразными программами, каждая из которых может применять различные инструкции обработки к тем его частям, которые она считает важными. Например, программа анализа содержимого может полностью игнорировать сноски, тогда как программа форматирования может извлекать и собирать их для печать в конце каждой части. Различные виды инструкций обработки могут ассоциироваться с одной и той же частью файла. Например, одна программа может извлекать из документа фамилии людей и географические названия для создания индекса или базы данных, тогда как другая, обрабатывающая тот же самый текст, может печатать фамилии и названия отличающимся шрифтом.
Определение собственных команд и окружений
Одним из главных преимуществ системы предпечатной подготовки LaTeX является то, что пользователь имеет возможность определять собственные команды и окружения. Скажем, вы хотите использовать специальную разметку для всех заменяемых параметров в описании утилиты UN*X, например чтобы:
cd directory
отображалась, скажем, так:
cddirectory
Здесь cd соответствует имени утилиты, а directory -- заменяемый параметр.
Часто имя утилиты выделяется полужирным шрифтом, а заменяемые параметры -- курсивом. Хорошим решением будет такое:
\utilityname{cd} \replaceable{directory}
где команды \utilityname и \replaceable переключают, соответственно, шрифт "жирность" и "курсивность" шрифта. Использование команд \utilityname и \replaceable позволит сделать оформление всего документа последовательным:
\utilityname{pushd} \replaceable{directory} \utilityname{ls} \replaceable{filename}
Для того, чтобы определить новую команду LaTeX, воспользуйтесь
\newcommand{имя-команды}[число-аргументов ]{последовательность команд}
где имя-команды -- имя команды, число-аргументов -- число аргументов, которые принимает новая команда (по умолчанию 0 можно опустить), а последовательность комманд -- последовательнось команд LaTeX, которые должны быть выполнены при вызове имя-команды.
Для нашего примера, определим \utilityname и \replaceable следующим образом:
\newcommand{\utilityname}[1]{\textbf{#1}} \newcommand{\replaceable}[1]{\textit{#1}}
Предопределенные комнады \textbf и \textit переключают стиль шрифта на текстовой полужирный (в противоположность математическому полужирному шрифту) и тектсовой курсивный соответственно. Аргументы обозначаются #цифра, где цифра может принимать значения от 1 до 9.
Для того, чтобы дать представление о полезности наши "свежеопределенных" команд, предположим, что мы хотим сгенерировать указатель для всех утилит, упомянутых в тексте. Команда \index{термин} помещает термин в указатель. Для этого нам достаточно лишь изменить определение \utilityname:
\newcommand{\utilityname}[1]{\textbf{#1}\index{#1}}
Основные термины
Имеется множество различных форматов файлов шрифтов и соответствующих окончаний имен файлов. Здесь обсуждаются лишь следующие из них:
.pfa, .pfb
Файлы шрифтов формата postscript type 1. Файлы .pfa являются текстовым ( Ascii) представлением, а .pfb - двоичным (Binary).
.afm
Параметры (метрики) соответствующих шрифтов типа type 1.
.pfm
Метрики для принтеров соответствующих шрифтов типа type 1.
.ttf
Файл шрифтов формата TrueType
.fot
Неявная ссылка на файл шрифтов TrueType (реальной информации о шрифте здесь не содержится)
.fon, .fnt
Файлы экранных шрифтов с побитным представлением
Файлы .fot используются в Windows в качестве некой символической ссылки на файл со шрифтом в формате TrueType (.ttf). Файлы шрифтов .fon также используются в Windows. Мне неизвестно, как можно использовать этот формат шрифтов во FreeBSD.
Основными растровыми шрифтами
h2>
Мы настоятельно рекомендуем всем пользователям тщательно проверять любые шрифты, не входящие в комплект distro, перед их установкой в системные каталоги, используя пользовательскую установку при помощи xset [+|-]fp или fc-cache, как это было описано выше в этой главе.
Если шрифты уже проверены, то лучший способ их установки — сборка шрифтового пакета на примере пакетов, входящих в Master. Если со сборкой таких пакетов возникают проблемы, то можно обратиться за консультацией в наши списки рассылки.
Особенности SGML
Три характеристики SGML отличают его от прочих языков разметки.
ОТКАТКА
^X u / ^? / ^_ Откатка undo advertised-undo ^G Прервать команду
Part: Сравнительное решение задач с помощью SED и AWK
Система UNIX обладает несколькими программами, которые обрабатывают входной поток данных: grep, egrep, fgrep, lex и sed. Неинтерактивный редактор sed обеспечивает выполнение в пакетном режиме большинства функций редактирования редактора ed. Как показано на примерах ниже, некоторые задачи обработки текстов могут быть решены как с помощью awk, так и с помощью sed и время решения простых задач с помощью sed будет меньше. Однако, решения некоторых примеров (как 4. и 5.) выглядят более наглядно с использованием awk. Кроме того, утилита awk безусловно шире по своим возможностям и позволяет численные манипуляции с данными, логические отношения, использование переменных и т.п., чего не обеспечивает ни одна из вышеперечисленных программ.
Переключатель клавиатуры
Итак, на нашем экране появился красивый login manager (gdm). Вы выбираете язык - Английский, вводите login и пароль. Вуаля! Загрузился GNOME2.
Что дальше?
Я вижу два пути:
1-ый и самый легкий: скачать с сайта http://gswitchit.sf.net/ программу GSwitchIt, которую разрабатывает наш соотечественник, живущий сейчас в Ирландии - Сергей Удальцов. Установить ее и, нажав правой кнопкой мыши на гномовскую панель с менюшками и иконками, выбрать:
Add to Panel -> Utility -> GSwithIt applet
И всего делов. Дальше его можно сконфигурить как угодно, кликнув по апплету правой кнопкой мыши.
2-ой путь: В вашем файле /etc/X11/XF86Config в секции InputDevice должны быть строчки: Option "XkbRules" "xfree86" Option "XkbModel" "pc102" Option "XkbLayout" "ru" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
После этого вам необходимо перезагрузить X-Window - для этого закройте все программы и нажмите Ctrl+Alt+Backspace. Вас "выбросит" в login manager (gdm). Теперь, когда вы наберете логин и пароль, у вас будет работать переключение по правым Ctrl+Shift.
Лично я предпочитаю первый путь, но это дело каждого, как ему поступать.
Перекрестные ссылки
Перекрестные ссылки ссылаются на другие части того же самого документа DocBook или на другие документы, находящиеся в World Wide Web. В первом случае ссылка может указывать на все элементы, несущие атрибут id, во втором случае ссылка задается, как универсальный локатор ресурса (URL).
link
<link linkend = "на что ссылаемся [target]">содержимое</link>
Создает (гипер)ссылку на место в текущем документе, задаваемое через атрибут target.
ulink
<ulink url = "полный URL">содержимое</ulink>
Создает гиперссылку на документ WWW, указанный в полном URL. Полный URL должен задавать протокол, например http://.
xref
<xref linkend = "target"></xref>
Задает (гипер)ссылку на место в текущем документе, иденитифицируемое, как target. Транслятор сам добавляет текст вокруг xref. Например, ссылка xref на раздел может быть "украшена" словами "смотри раздел".
Для любой перекрестной ссылки требуется две части: та, которая "отсылает" (собственно ссылка -- link) и та, на которую указывается (привязка или метка -- anchor). Привязки в LaTeX'е вставляеются командой \label{имя-ссылки}. Каждая метка находится в каком-то разделе и на какой-то конкретной странице. Эти сведения можно получить командами \ref{имя-ссылки} и \pageref{имя-ссылки} соответственно, вызвав их в любом месте документа.
Примеры использования \ref:
\section{Установка}\label{section:setup} ... \section{Заключение}\label{section:summary} Как было сказано в разделе~\ref{section:setup} 'Установка', ...
Пример использования \pageref:
\section{Установка}\label{section:setup} Сталь, используемый в пробной камере, легирована Ti (0,5\%), Cr (0,1\%) и Mn (0,1\%).\label{definition:chamber-alloy} \section{Эксперименты}\label{section:experiments} Для некоторых пробных камер, выполненых из нержавеющей стали (см. точный состав на стр.~\pageref{definition:chamber-alloy}), ...
В формате Texinfo поддерживается несколько типов перекрестных ссылок: с дополнительным текстом и без него, ссылки в пределах одного и того же файла, на определенные места в других файлах Texinfo и, наконец, ссылки, указывающие куда-то "во внешний мир".
Узлы [Nodes] -- самые частые "мишени", на которые "нацеливаются" ссылки. Команда @anchor{имя-метки} создает в документе дополнительную метку [anchor], на которую можно ссылаться из другого места. Сама по себе команда @anchor в оттранслированном документе не видна. Имена меток не должны конфликтовать с именами узлов.
@xref
Вставляет "декорированную" перекрестную ссылку. Команда @xref создает оформление для ссылки в начале предложения.
Пример:
... является основой для нескольких многоточечных
методов. @xref{Multi-point Methods}. Мы
изучаем одноточечные методы ...
@pxref
@pxref ведет себя подобно @xref, но предназначен для использования внутри скобок.
Пример:
Алгоритм терпит неудачу в случае корней
более высокого порядка (@pxref{Higher Order Root}) и
корней первого порядка, заданных неверными условиями.
@ref
Вставляет простую (не "декорированную") перекрестную ссылку. В остальном ведет себя подобно @xref.
До сих пор мы использовали команды создания перекрестных ссылок с одним аргументом. Команды эти, однако, могут принимать до пяти параметров. Ниже представлены примеры того, как, в зависимости от числа аргументов, изменяется внешний вид оттранслированного текста. Я привожу примеры "гибкого" использования команды @xref
Один аргумент
@xref{имя-метки}
дает на выходе
*Note имя-метки::
при трансляции в Info и
Смотри раздел имя-раздела [имя-метки], страница номер-страницы
при трансляции для печати, здесь имя-радела и номер-страницы -- соответственно название раздела и номер страницы, где в версии для печати располагается метка "имя-метки".
Два аргумента
@xref{имя-метки, имя-перекрестной-ссылки}
после трансляции даст:
*Note имя-перекрестной-ссылки: имя-метки
и
Смотри раздел имя-раздела [имя-метки], страница номер-страницы
Три аргумента
@xref{имя-метки, имя-перекрестной-ссылки, заголовок-темы}
дает:
*Note имя-перекрестной-ссылки: имя-метки
и
Смотри раздел имя-раздела [заголовок-темы], страница номер-страницы
Пять аргументов
@xref{имя-метки, имя-перекрестной-ссылки, заголовок-темы, имя-файла-info, заголовок-печатного-руководства}
в результате трансляции получаем:
*Note имя-перекрестной-ссылки: (имя-файла-info)имя-метки
и
Смотри раздел "заголовок-темы" в заголовок-печатного-руководства
Переменная EXINIT и файл .exrc
Существуют два пути управления настройками редактора vi - создание файла .exrc в вашем домашнем каталоге или настройка переменной "EXINIT". Параметры будут установлены в ваш файл сценария. Если вы используете /bin/csh (C-Shell) выполните следующие команды :
setenv EXINIT '...' Если вы используете /bin/sh или /bin/ksh выполните эти команды :
export EXINIT EXINIT='...' Не используйте ... как в примерах. Используйте команды. Например : для (для C shell) :
setenv EXINIT 'set ai nu wm=3'
Для выполения нескольких команд разделите их вертикальной чертой (|). Например : для использования команды :map g G совместно с предыдущей выполните setenv EXINIT 'set ai nu wm=3|map g G'
Используйте выражения в кавычках, после "EXINIT", для применения файла .exrc.
Переменные поля
Ссылки на поля $1, $2, ... могут интерпретироваться в качестве переменных, например:
$1 = "3" + $2 - первое поле принимает значение второго поля, увеличенного на 3.
$(i+1) - интерпретируется как поле, номер которого зависит от значения переменной i.
Перемещение курсора
Большинство версий редактора Emacs поддерживают стандартные клавиши для перемещения курсора: up(стрелка вверх), down(стрелка вниз), left(стрелка влево), right(стрелка вправо);C-left и C-right для перемещения на целое слово влево или вправо; Page UP и PageDоwn для перелистывания на одну страницу вперед или назад. Если возникают проблемы при использовании этих клавиш (например, если вы пользователь UNIX-машины и работаете через телефонную линию связи посредством телекоммуникационной программы, то клавиша Page Down запускает команду загрузки файла: "start downloading a file"), в этом случае можно использовать оригинальные команды редактора Emacs, доставшиеся в наследство от тех времен, когда клавиатуры не имели никаких специальных клавиш для перемещения курсора. Приводимый ниже список включает в себя комбинации клавиш и соответствующие им команды:
C-p | previous-line | перемещение на одну строку вверх |
C-n | next-line | перемещение на одну строку вниз |
C-b | backward-character | перемещение на один символ влево |
C-f | forward-character | перемещение на один символ вправо |
M-b | previous-word | перемещение на одно слово влево |
M-f | next-word | перемещение на одно слово вправо |
M-v | previous-page | перемещение на одну страницу назад |
C-v | next-page | перемещение на одну страницу вперед |
Следующие комбинации клавиш также способствуют ускоренному перемещению курсора по тексту:
C-a | beginning-of-line | перемещение курсора в начало строки |
C-e | end-of-line | перемещение курсора в конец строки |
M-< | beginning-of-buffer | перемещение в начало данного буфера |
M-> | end-of-buffer | перемещение в конец данного буфера |
< Drawing or tabular insertion skipped...>
h,j,k,l - на один символ (одну строку), как показано стрелками
^ или 0 - в начало текущей строки
$ - в конец текущей строки
w - на слово вправо
b - на слово влево
} - на параграф вперед (параграф - это блок текста, отделенный пустой строкой)
{ - на параграф назад
[[ - в начало текста
]] - в конец текста
Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.
Перемещение курсора в режиме SGML
В главе "Перемещение курсора" говорилось о том, каким образом переместить курсор на один символ или слово влево или вправо, на строку вверх или вниз. PSGML усложняет структуру документа, в связи с чем возникают дополнительные требования к возможностям перемещения курсора.
Облегчить запоминание комбинаций клавиш перемещения курсора в режиме SGML, поможет тот факт, что в большинстве случаев клавиши, выполняющие аналогичные действия в Emacs и SGML, отличаются наличием в SGML-комбинациях клавиши Escape.
В Emacs перемещение курсора в начало и конец текущей строки осуществляется комбинациями клавиш C-a и C-e. PSGML-комбинации, осуществляющие перевод курсора в начало и конец текущего элемента выглядят как C-M-a (команда sgml-beginning-of-element) и C-M-e (команда sgml-end-of-element), также можно воспользоваться пунктами Beginning of element и End of element меню Move.
Чтобы "перепрыгнуть" на элемент вперед или назад, воспользуйтесь комбинацией C-M-f (sgml-forward-element) и C-M-b (sgml-backward-element) соответственно, либо воспользуйтесь пунктами Forward element и Backward element меню Move. Данные команды осуществляют перемещение по вложенным элементам. Например, если в элементе para при перемещении вперед был достигнут последний вложенный элемент, то в окне минибуфера появится сообщение:
No more elements in para element |
То же самое сообщение появится при попытке перемещения вперед внутри элемента, не содержащего вложенных элементов.
Sgml-backward-element ведет себя совершенно аналогично при достижении первого вложенного элемента.
Команды sgml-forward-element и sgml-backward-element демонстрируют интеллектуальные возможности PSGML, поскольку PSGML воспринимает документ не как простую совокупность текста и тэгов, а скорее как структурированный текст, в котором одни элементы являются частью других элементов, и все они объединены в определенной структуре. Три другие команды, которые используют преимущества структурированности документа, призваны помочь передвигаться по документу. Речь идет о командах sgml-down-element, sgml-up-element, и sgml-up-backward-element. (В дополнение к комбинациям клавиш, которые будут описаны ниже, имеет смысл упомянуть о пунктах Up element, Down element и Backward up element меню Move.) В данном случае перемещение "вверх" ("Up") и "вниз" ("Down") следует понимать в смысле перемещения вверх и вниз по уровням иерархии документа.
Нажатие C-M-d (команда sgml-down-element) осуществляет перемещение курсора вниз по иерархии документа, курсор перемещается в первую позицию после открывающего тэга.
При продвижении по иерархии элементов, имеется выбор перемещения курсора вперед или назад к пункту в родительском элементе текущего элемента. Команда sgml-up-element осуществляет перемещение по иерархии вверх. Запуск команды осуществляется нажатием комбинации клавиш C-c C-n. При нажатии данной комбинации курсор перемещается вперед по документу и вверх по иерархии. Т.е., если, например курсор был установлен внутри параграфа, то после нажатия C-c C-n, курсор будет установлен в первой позиции после закрывающего тэга данного параграфа. При повторном нажатии курсор перейдет в первую позицию после закрывающего тэга главы и т.д.
Перемещение курсора вверх по документу и вверх по иерархии осуществляется командой sgml-backward-up-element (комбинация клавиш C-M-u). При нажатии комбинации C-M-u курсор перемещается назад по документу и вверх по иерархии. Т.е., если, например курсор был установлен внутри параграфа, то после нажатия C-M-u, курсор будет установлен в первой позиции перед открывающим тэгом данного параграфа. При повторном нажатии курсор перейдет в первую позицию перед открывающим тэгом главы и т.д.
Другая полезная при перемещении курсора команда - это sgml-next-data-field (соответствующая комбинация - C-c C-d). Данная команда перемещает курсор в следующую позицию, где доступен ввод текстовой информации. Например, если курсор был установлен внутри параграфа, то после нажатия C-c С-d, курсор будет установлен после открывающего тэга следующего параграфа. Если внутри следующего параграфа есть вложенные элементы, внутри которых возможен ввод текста, то при повторном нажатии курсор будет установлен после открывающего тэга следующего вложенного элемента. Альтенативный способ запуска команды sgml-next-data-field - пункт Next Data Field меню Move.
Команда sgml-next-data-field бывает особенно полезной в случае вставки нескольких вложенных элементов командой sgml-insert-element (комбинация C-c C-e), когда не требуется немедленный ввод текста в каждый из элементов. Осуществлять навигацию по созданной структуре удобно нажатием C-c C-d.
Перемещение по файлу
^B Переход на один экран назад. Аргумент count определяет количество экранов. ^D Переход на половину экрана вперед. Аргумент count определяет количество строк. ^F Переход на один экран вперед. Аргумент count определяет количество экранов. ^H Переход на один символ влево. Аргумент count определяет количество символов. ^J Переход на одну строку вниз. Аргумент count определяет количество строк. ^M Переход в начало следующей строки ^N Переход на одну строку вниз. Аргумент count определяет количество строк. ^P Переход на одну строку вверх. Аргумент count определяет количество строк. ^U Переход на половину экрана назад. Аргумент count определяет количество строк. $ Переход в конец текущей строки. Аргумент count определяет строку. % Переход к парной круглой или фигурной скобке. ^ Переход к первому символу. ( Переход в начало предложения. ) Переход в начало следующего предложения. { Переход к предыдущему абзацу. } Переход к следующему абзацу. | Переход в столбец, определенный аргументом count. + Переход к первому символу в следующей строке. - Переход к первому символу в предыдущей строке. _ Переход к первому символу в текущей строке. 0 (Zero)Переход в начало текущей строки. B Переход назад на одно слово. E Переход в конец текущего слова. G Переход в конец файла. Аргумент count определяет номер строки для перехода. H Переход к первому символу вверху экрана. L Переход к первому символу внизу экрана. M Переход к первому символу в середине экрана. W Переход в начало следующего слова. b Переход назад на одно слово. Если курсор в середине слова - переход в начало текущего слова. e Переход вперед на одно слово. Если курсор в середине слова - переход в конец текущего слова. h Переход на один символ влево. j Переход вниз на одну строку. k Переход вверх на одну строку.. l Переход на один символ вправо. w Переход вперед на одно слово. Если курсор в середине слова - переход к первому символу следующего слова.
Перемещение по экрану
^E Переход на одну строку вперед. Аргумент count определяет количество строк. ^Y Переход на одну строку назад. Аргумент count определяет количество строк. z Обновить экран. "z<return>" устанавливает текущую строку вверх экрана; "z." устанавливает текущую строку в середину экрана; and "z-" устанавливает текущую строку вниз экрана. Аргумент count определяет строку для замены текущей строки. Например : "16z." устанавливает строку 16 в центр экрана.
ПЕРЕМЕЩЕНИЯ ПО ТЕКСТУ
^b/^f Сдвинуться на шаг backward-char, ^p/^n next-line, previous-line M- f/b n/p На слово/ предложение ^X r В середину окна ^V / M-V На страницу вниз/вверх scroll-up/scroll-down ^A / ^E В начало/ конец строки M-a / M-e В начало/ конец предложения M-< / > Встать в начало / конец файла beginning-of-buffer/ end-of-buffer ^@ / ^SPC Запомнить позицию в тексте ^X ^X Встать в запомненную позицию, запомнив текущую ^U ^@ Встать на предыдущую помеченную позицию
Perl's Plain Old Documentation (POD)
Система "Plain Old Documentation", которая входит в каждый дистрибутив Perl -- самая простая из всех, которые я отобрал для этого цикла статей. Проста в изучении и использовании, но (не хотелось бы говорить "вследствие этого") ее возможности -- самые ограниченные. Так или иначе, но статья, которую вы в данный момент читаете (да, именно так!) была подготовлена в POD'е. А если этот соус годится с гусыней, то и гусаку он не навредит...
У POD есть серьезные преимущества
Поставляется вместе с Perl. Так что в вашей Linux-системе она, скорее всего, уже есть. Попробуйте pod2man --help
чтобы узнать, установлена ли POD.
Содержит небольшой и хорошо продуманный набор инструкций для задания структуры и оформления документов. Из POD можно создавать файлы, по меньшей мере, в четырех различных форматах: HTML, страницы UN*X man, LaTeX (на основе которого в последствии можно создать PostScript) и "плоский" ASCII-текст.