"А напоследок я скажу..."
Ну что ж, пора и этому месяцу закончиться -- я не ожидал, что он будет таким длинным!! Мой академический год более-менее приближается к концу и в последних числах мая меня ждут экзамены. После них я буду свободен целое лето, достаточно, чтобы привести в порядок все мои идеи относительно Linux'а, поселившиеся у меня в мозгу ( -- после того, как Ben Okopnik промыл его) :-)До следующего месяца. Удачи и берегите себя.
Англо-русский словарь Мюллера и программы для его использования в UNIX
Я давно ощущал неудобство при работе в Linux из-за отсутствия серьёзного англо-русского словаря. И хотя число доступных в Интернете словарей постоянно растет ( на известные мне словари) мне хотелось иметь словарь с поиском словосочетаний (и не только с начала словарной статьи), с транскрипцией слова и примерами его употребления.При этом с самого начала существовала уверенность, что для Линукса не нужны шифрованные словари (любое шифрование или упаковка замедляла поиск в моих экспериментах) и все шифрованные базы данных (и патентованные интерфейсы) --- просто следствие непродуманности современного законодательства об авторских правах, так-как ухудшает качество конечного продукта и мешает конкуренции в написании обслуживающих программ. Кроме того, мне совершенно непонятно почему нельзя купить электронную версию словаря за цену близкую к цене бумажного словаря (если учесть, что себестоимость бумажного издания намного выше) или в придачу к бумажному. Из-за этого создание оболочек к шифрованным словарям я считаю тупиковым путем.
В CD-сборник "Библиотека в Кармане", начиная с четвертой версии, входит словарь Мюллера в кодах ASCII 24-го издания. К сожалению, без транскрипции. Я взял на себя смелость переделать его в более удобную для Unix .
При более детальном изучении русского интернета оказалось, что существует электронная версия словаря Мюллера (7-ое издание) с транскрипцией, сделанная Сергеем Старостиным, и сейчас свободно распространяемая. С разрешения Сергея Старостина, я сделал из его словаря новую электронную
Для работы со словарями предлагаю написанные мною скрипты для bash
и Tcl/TK под названием
Замечания и предложения по улучшению посылайте Евгению Цымбалюку на e-mail: . Сообщайте, пожалуйста, так же об опечатках и ошибках найденных в самих словарях (особенно в 7-ой редакции). Буду очень признателен за сообщения о ссылках на другие словари под Unix для русского-украинского-белорусского языков. Я с удовольствием выложу на страницу альтернативные пакеты работы с словарями в формате MOVA.
Выражаю свою признательность людям, общение с которыми позволило улучшить словарь и скрипты: Дмитрию Мищенко, Владимиру Ставринову, Виталию Московкину, Стасу Англеру, Сергею Гаврилову, Игорю Готсу, Дмитрию Галкину, Вячеславу Федорову, Валерию Горелову, Денису Серебро, Сергею Винницкому, Евгению Бырганову, Павлу Курносову, Андрею Комечу. Михаилу Тентюкову. Особая благодарность Виктору Вагнеру за ответы на вопросы по использованию Tcl/TK.
29.7.99 Виталий Московкин прислал на shell,
который форматирует результаты поиска так, чтобы их понимал groff
(он умеет подсвечивать русские слова при работе в shell и форматирует вывод в зависимости от номера варианта перевода).
04.12.99 Игорь Готс прислал для разделения словаря на маленькие файлы (по первой букве) и поска в таком словаре. Этот метод может ускорить поиск по первому слову словарной статьи при ограниченных размерах оперативной памяти (32 MB).
16.6.2000 Вячеслав Федоров (V.Fyodorov@VAZ.ru) предлагает
для работы с Мюллеровскими словарями. Скрипты могут отображать транскрипцию и проводят поиск по словарю с разными опциями, смотри.
19.7.2000 Андрей Комеч прислалдля перекодирования словарей в DICT формат. Последнюю версию этого скрипта можно найти на его странице. Там же лежит готовый словарь Мюллера 24 издания в формате dict.
9.11.2000 Михаил Тентюков прислал доработанный c возможностью поиска по выведенной в окно словарной статье и решением некоторых проблем руссификации Tcl/TK 8.3.1.
26.01.2001 Дмитрий Юсупов прислал консольную написанную на С. Она делает специальный хэш для словаря и позволяет работать со словарем Даля и Апресяна. Поиск идет по первому слову словарной статьи. Последнию версию этой програмы вы можете найти на.
Арифметические выражения
Выражение:< Операция> : "+", "-", "*", "/", "%"
+АщчрщКу зчэпщтК ЮутпзБьЮчрпщьО
TтуАЛ эК ЮпААзпвКрпуэ чАщчрК ч Бчэ, зпз рруАБь БузАБ, АтушпБЛ ьвэущущьО ь впъьАпБЛ БузАБ р Дпыш. ¦Ашь МБь АрутущьО щчрК тшО рпА, рК эчжуБу ьвЦГьБЛ МБч ячшуу шусзьэ АъчАчячэ, впъЦАБьр АпэчЦГьБушЛ ъч Emacs. гБчяК АтушпБЛ Бпз, впъЦАБьБу Emacs ь щпяуЮьБу Control-h t(help-with-tutorial).
гБчяК чГьАБьБЛ МзЮпщ ь ъуЮуЮьАчрпБЛ ьвчяЮпжущьу, щпъуГпБпыБу C-l
(recenter).
Aspell
Необязательно -Это приложение для проверки орфографии может работать между SGML тэгами, и проверять только содержимое заключенное между ними. Обычные программы проверки орфографии, такие как ispell будут пытаться проверить тэги, вызывая ошибку на каждом новом встреченном тэге.
AUIS ez
В рамках распространяемого бесплатно в исходных текстах для Х11 многофункционального проекта AUIS (The Andrew User Interface System), разработанного Консорциумом Эндрю (Andrew Consortium), имеется текстовый редактор ez с модулями поддержки языков программирования С, С++, Modula-2, и PL/MI. Этот редактор будет интересен разработчикам программного обеспечения благодаря наличию средств цветового и шрифтового выделения синтаксиса, перехвата ошибок компиляции, встроенного набора стандартных языковых конструкций. Средства обработки текстов минимальные, но достаточные для подготовки простых документов. Исходные тексты имеются для большого числа платформ.Редакторы, перенесенные в ОС UNIX из других операционных систем, в общем случае предназначены для разработчиков, использующих в своей деятельности более одной платформы и желающих всюду иметь один и тот же редактор. Как правило, портированные в ОС UNIX редакторы проигрывают тем редакторам, которые изначально разрабатывались для этой операционной системы с учетом ее специфики. Поэтому рекомендовать текстовые редакторы данного класса для использования в ОС UNIX разумно только пользователям, знакомым с аналогами этих редакторов в других операционных системах.
Auto Indent, Wrap и Tabs
предназначена и для простых смертных, так как определяет правила набора текста. Так, Auto Indent - это просто включение или выключение (Off/On) возможности создания автоматических абзацных оступов. Поясню на примере: если вам нужно набрать серию абзацев с общим отступом 7 пунктов от левого края, вы задаете (например, клавишей табулятора) отступ только первого абзаца - во всех остальных при включении (On) опции Auto Indent будет появляться автоматически, до его уничтожения вручную.В этом же пункте, кроме переключения, есть еще одна опция - Smart, но она не активизирована. Подозреваю, что ее можно включить только при режимах каких-либо языков, предусматривающих некие фиксированные отступы в строках исходного текста.
А вот величина отступа, задаваемого клавишей табуляции, и определяется в пункте Tabs. Здесь нужно просто задать (в знаках) величину отступа при табуляции. Правда с оговоркой - for hardware space, поскольку тут же присутствует и опция - emulate tabs, то есть предполагается, видимо, некая софтверная табуляция; что это такое, к своему стыду, не знаю.
Опция Wrap важна, так как она отражается на ряде других параметров набора текста. Для нее возможны варианты:
Я столь подробно остановился на параметрах переноса слов, потому что они представляются мне одними из наиболее существенных при наборе текста. Особенно если в дальнейшем предполагается экпорт его в текстовый процессор или какую-либо программу верстки. К тому же именно установками пункта Warp определяется реакция на команду меню Edit - Fill Paragraph (Ctrl+J): при установке в позиции Continuous текст в NEdit, независимо от того, в каком режиме переноса слов был набран, будет сконденсирован в единые абзацы, разделами между которыми будут только явные нажатия клавиши Enter.
Не уверен, что выразился вполне внятно, поэтому поясню на примере: некий текст был набран в режиме Auto Newline, после чего выяснилось, что его следует экспортировать в MS Word (или StarOffice для Linux, он в этом отношении ничуть не лучше); чтобы избавить себя в дальнейшем от ручного искоренения символов возврата каретки или головной боли по измышлению автоматизации этого процесса, достаточно просто пройтись по всем абзацам текста, нажимая Ctrl+J - и при включенной опции Continuous мы получим его аккуратно поделенным именно тем образом, что и требуется.
Однако о словах, пожалуй, хватит, пора взяться за их составляющие - буквы, настройка которых осуществляется через
Азбука кириллизации
Рассмотрим схематически процесс вывода на экран некоторого символа "x":Для кириллизации консоли в Linux используются два конкурирующих пакета: и consoletools. Последний применялся в Red Hat версий 6.x-7.x, в более ранних и более поздних используется kbd. Оба пакета имеют сходную функциональность. Все необходимые для работы этих пакетов файлы хранятся в директории /lib/kbd: /lib/kbd/consolefonts (файлы шрифтов), /lib/kbd/consoletrans (ACM), /lib/kbd/unimaps (SFM) и /lib/kbd/keymaps (клавиатурные раскладки).
В дальнейшем по понятным причинам будем предполагать, что используется пакет kbd. Утилита setfont из этого пакета позволяет как загружать шрифты, так и устанавливать таблицы перекодировки ACM (параметр командной строки -m) и SFM (-u). Параметры можно комбинировать. Так, например, команда setfont Cyr_a8x16 -m koi2alt устанавливает шрифт Cyr_a8x16 и ACM-таблицу koi2alt.
Рассмотрим теперь, как организован процесс русификации в Red Hat 8.0. В первую очередь обратимся к файлу /etc/sysconfig/i18n. В нем определяются значения следующих переменных:
Теперь, когда мы представляем себе общую схему русификации консоли, рассмотрим два конкретных способа научить Red Hat говорить по-русски.
/B> УСТАНОВКА ОКНА В УДОБНОЕ ПОЛОЖЕНИЕ
^L Перерисовать экран (redraw-display) M-x goto-line Выставить строку No в середину экранаBash
Чтобы заставить bash работать с русскими буквами, нужно создать файл ~/.inputrc, содержащий следующие строки:set convert-meta off set input-meta on set output-meta on
БчГзп
¦ЦЮАчЮ БуЮэьщпшп рщЦБЮь Emacs ъчзпвКрпуБ ъчвьФьН, р зчБчЮчы яЦтуБ рКъчшщОБЛАО зчэпщтп ЮутпзБьЮчрпщьО. мБч ъчвьФьО ьэущЦуБАО БчГзчы. +щчсьу зчэпщтК Emacs ъуЮуэуИпНБ БчГзЦ ъч БузАБЦ, Бпз ГБч рК ьэууБу рчвэчжщчАБЛ ЮутпзБьЮчрпБЛ р шНячэ эуАБу. ¦К Бпзжу эчжуБу ЦАБпщчрьБЛ БчГзЦ, ИушзщЦр ъуЮрчы зщчъзчы эКХь.¦чстп зЦЮАчЮ ЦзпвКрпуБ щп вщпз, Бч АшутЦуБ тЦэпБЛ, ГБч БчГзп щпЕчтьБАО эужтЦ трЦэО вщпзпэь; чщп ЮпАъчшчжущп ъуЮут
вщпзчэ, щпт зчБчЮКэ ъчОршОуБАО зЦЮАчЮ. +пъЮьэуЮ, уАшь рпХ БузАБ рКсшОтьБ зпз `frob', п зЦЮАчЮ щпЕчтьБАО щпт `b', Бч БчГзп ЮпАъчшчжущп эужтЦ `o' ь `b'. ¦Ашь рК рАБпрьБу р МБчы ъчвьФьь вщпз `!', Бч ъчшЦГьБу `fro!b', А БчГзчы эужтЦ `!' ь `b'. бпзьэ чяЮпвчэ, зЦЮАчЮ чАБпщуБАО щпт `b', зпз ь ЮпщЛХу.
Tщчстп счрчЮОБ "зЦЮАчЮ", ьэуО р рьтЦ БчГзЦ, ьшь счрчЮОБ ч зчэпщтпЕ трьжущьО БчГзь зпз ч зчэпщтпЕ "трьжущьО зЦЮАчЮп".
буЮэьщпшК ьэуНБ БчшЛзч чтьщ зЦЮАчЮ, ь зчстп ъЮчьАЕчтьБ ъЮчФуАА рКрчтп, зЦЮАчЮ тчшжущ щпЕчтьБЛАО Бпэ, сту ьтуБ щпячЮ. мБч щу чвщпГпуБ, ГБч БчГзп ъуЮуэуИпуБАО. мБч вщпГьБ шьХЛ Бч, ГБч Emacs эчжуБ ъчзпвпБЛ рпэ ъчвьФьН БчГзь, БчшЛзч зчстп БуЮэьщпш щу ЮпячБпуБ.
¦Ашь рК ЮутпзБьЮЦуБу р Emacs щуАзчшЛзч Дпышчр, зпжтКы р Арчуэ яЦДуЮу, Бч рАОзьы яЦДуЮ ьэууБ АрчН АчяАБрущщЦН ъчвьФьН БчГзь. ¦ЦДуЮ, зчБчЮКы щу ъчзпвКрпуБАО р тпщщчу рЮуэО, впъчэьщпуБ, сту щпЕчтьБАО БчГзп, щп АшЦГпы, уАшь рК Ащчрп рКрутуБу усч щп МзЮпщ.
¦чстп ДЮуыэ ЮпвяьБ щп щуАзчшЛзч чзчщ, зпжтчу ьв щьЕ ьэууБ АрчН АчяАБрущщЦН ъчвьФьН БчГзь. ¦ЦЮАчЮ жу ъчзпвКрпуБ ъчвьФьН БчГзь р рКяЮпщщчэ чзщу. мБьэ АъчАчячэ рК Бпзжу эчжуБу ЦвщпБЛ, зчБчЮчу ьв чзчщ рКяЮпщч. ¦Ашь чтьщ ь БчБ жу яЦДуЮ ъчОршОуБАО ячшуу Гуэ р чтщчэ чзщу, Бч зпжтчу ьв щьЕ ьэууБ АрчН ъчвьФьН БчГзь.
¦Ашь уАБЛ щуАзчшЛзч ДЮуыэчр, зпжтКы ьв щьЕ эчжуБ чБчяЮпвьБЛ чтьщ зЦЮАчЮ. ¦ЦЮАчЮ р рКяЮпщщчэ ДЮуыэу впъчшщущ ФруБчэ; зЦЮАчЮ р тЮЦсьЕ ДЮуыэпЕ -- МБч ъЦАБпО зшуБзп, зчБчЮпО ъчОршОуБАО р Бчэ чзщу, зчБчЮчу яКшч яК рКяЮпщщКэ, уАшь яК рК ъуЮутпшь ДчзЦА ррчтп МБчэЦ ДЮуыэЦ.
буЮэьщ `БчГзп' ъЮчьАЕчтьБ чБ щпврпщьО вщпзп `.', зчБчЮКы яКш зчэпщтчы TECO (ОвКз, щп зчБчЮчэ яКш щпъьАпщ ъуЮрчщпГпшЛщКы Emacs) тшО ъчшЦГущьО вщпГущьО рушьГьщК, щпвКрпуэчы БуъуЮЛ `БчГзчы'.
BEGIN и END
Образец BEGIN указывает на начало input или на те действия, которые должны быть выполнены до какого бы то ни было анализа строк. Образец END указывает на конец input или на те действия, которые должны быть выполнены после обработки всех строк.Например:
BEGIN {FS = ":"} - Устанавливает разделитель полей в ":" до начала обработки строк. Эквивалентно опции "-F:" при AWK вызове.
END { print NR } - Печатает номер последней строки input, т.е. количество обработанных входных строк.
БОЛЬШИЕ / МАЛЕНЬКИЕ. РУССКИЕ/ЛАТИНСКИЕ
M-- M-l Сделать предыдущее слово маленьким M-- M-u Сделать предыдущее слово большим M-- M-c Сделать предыдущее слово маленьким с заглавнойБуферы vi
Редактор имеет три типа буферов: буфер стирания (0-9), неименованный буфер и именованные буферы (a-z).В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 - предпоследний и т. д.
Занести в буфер:
yy - занести текущую строку в неименованный буфер
yдвижение курсора - занести указанный движением курсора блок текста в неименованный буфер.
"ayy - занести текущую строку в именованный буфер a
"Ayy - добавить текущую строку к содержимому именованного буфера a
"by10j - занести последующие 10 строк в именованный буфер b
Вставить из буфера:
p - вставить в текущую позицию содержимое неименованного буфера
"ap - вставить в текущую позицию содержимое именованного буфера a
"1p - вставить в текущую позицию содержимое буфера стирания 1
By
Texinfo -- основная система докумнтации в проектах GNU.Главная цель формата Texinfo -- создание из единого набора исходных файлов (.texi) документы и безупречно выглядящие при печати, и удобные для просмотра и навигации на экране компьютера. Основа высококачественной типографики достигается в Texinfo с помощью "военной хитрости": за основу взят plain TeX (основной язык TeX, как он описан Д. Кнутом. По сути -- это язык описания страниц и графического вывода вообще, как и более поздний язык PostScript. Надеюсь, я тут ни в чем особенно не наврал:) -- прим. перев.), который приспосабливается к специфике Texinfo после чтения файла texinfo.tex (В вашей системе может быть несколько копий этого файла. Проверьте, что используется свежая версия (на момент написания статьи -- 2002-01-04.07)). texinfo.tex выполняет всю работу по настройке TeX-форматирования. Он расширяет TeX, давая возможность распознавания гиперссылок и остальных "прибамбасов", нужных для экранной он-лайновой документации. Будучи скомпилированным для просмотра на экране, из исходника Texinfo получается файл Info (.info).
©ЦАБКу АБЮчзь
TтуАЛ ЮпААэпБЮьрпНБАО АъуФьпшЛщКу зчэпщтК ь ъЮьуэК АчвтпщьО ь ЦтпшущьО ъЦАБКЕ АБЮчз.C-o
¦АБпрьБЛ ъчАшу зЦЮАчЮп чтщЦ ьшь щуАзчшЛзч ъЦАБКЕ АБЮчз (open-line). C-x C-o
цщьГБчжьБЛ рАу ъчАшутчрпБушЛщКу ъЦАБКу АБЮчзь, зЮчэу чтщчы (delete-blank-lines).
¦чстп рК ЕчБьБу рАБпрьБЛ щчрЦН АБЮчзЦ БузАБп ъуЮут Цжу АЦИуАБрЦНИуы, рК эчжуБу АтушпБЛ МБч, щпяЮпр щчрЦН АБЮчзЦ БузАБп ь вп щуы RET. +тщпзч, эчжуБ чзпвпБЛАО Цтчящуу рьтуБЛ Бч, ГБч рК щпяьЮпуБу, уАшь ъуЮут МБьэ АъуЮрп АчвтпБЛ ъЦАБЦН АБЮчзЦ, п впБуэ рАБпрьБЛ р щуу щЦжщКы БузАБ. мБч шусзч АтушпБЛ, ьАъчшЛвЦО зшпрьХЦ C-o (open-line), зчБчЮпО рАБпршОуБ щчрЦН АБЮчзЦ ъчАшу БчГзь, щч чАБпршОуБ БчГзЦ ъуЮут МБчы щчрчы АБЮчзчы. ©чАшу а-ч щпяьЮпыБу БузАБ р щчрЦН АБЮчзЦ. а-ч F O O тпуБ БчБ жу ЮувЦшЛБпБ, ГБч ь F O O RET, вп ьАзшНГущьуэ зчщуГщчы ъчвьФьь БчГзь.
¦К эчжуБу АчвтпБЛ щуАзчшЛзч ъЦАБКЕ АБЮчз, щпяЮпр а-ч щуАзчшЛзч Юпв, ьшь вптпр уы ГьАшчрчы пЮсЦэущБ, ГБчяК АзпвпБЛ уы, зпзчу зчшьГуАБрч АБЮчз щучяЕчтьэч АчвтпБЛ. аэчБЮьБу Юпвтуш , ГБчяК ЦвпБЛ, зпз МБч АтушпБЛ. ¦Ашь чъЮутушущ ъЮуДьзА впъчшщущьО, Бч зчэпщтп C-o, зчстп рК ьАъчшЛвЦуБу уу р щпГпшу АБЮчзь, рАБпршОуБ щп щчрчы АБЮчзу МБчБ ъЮуДьзА впъчшщущьО. аэчБЮьБу Юпвтуш .
©ЮчАБчы АъчАчя ьвяпрьБЛАО чБ шьХщьЕ ъЦАБКЕ АБЮчз -- рчАъчшЛвчрпБЛАО зчэпщтчы C-x C-o (delete-blank-lines). TАъчшЛвчрпщьу C-x C-o АЮуть щуАзчшЛзьЕ ъЦАБКЕ АБЮчз ЦтпшОуБ ьЕ рАу, зЮчэу чтщчы. C-x C-o щп чтьщчГщчы ъЦАБчы АБЮчзу ЦтпшОуБ МБЦ АБЮчзЦ. ¦чстп БчГзп щпЕчтьБАО щп щуъЦАБчы АБЮчзу, C-x C-o ЦтпшОуБ рАу ъЦАБКу АБЮчзь ъчАшу МБчы щуъЦАБчы АБЮчзь.
Цели и задачи
Итак, что мне хотелось получить от Red Hat Linux 8.0:Вот вообщем-то и все. Не так уж много, не правда ли?
Character
Каждый "абстрактный" символ имеет изображение -- glyph. Считается, что каждый символ имеет "каноническое" изображение , то есть такое, которое позволяет однозначноидентифицировать данный символ, то есть распознать и отличить его от других. Таким образом, в модели POSIX и UNICODE не уделяется никакого внимания вариантам начертания символа, то есть шрифтам (fonts) во всем их многообразии, . Поэтому все, что изображено на примере ниже, будет одним и тем же "абстрактным" символом :
ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА А (LATIN CAPITAL LETTER A):

В стандарте UNICODE кроме определенного изображения каждому символу присвоено определенное имя :
| A | U+0041 | LATIN CAPITAL LETTER A | ||
| a | U+0061 | LATIN SMALL LETTER A | ||
| Ю | U+042E | CYRILLIC CAPITAL LETTER YU | ||
| 1 | U+0031 | DIGIT ONE | ||
| + | U+002B | PLUS SIGN | ||
![]() |
U+03A9 | GREEK CAPITAL LETTER OMEGA | ||
![]() | U+2569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL | ||
| и так далее. |
В настоящее время в стандарт , входят практчески все употребимые символы (~40.000), и им соответственно присвоены стандартные имена. Последнее значительное изменение -- введение символа валюты EURO в сентябре 1998 г.
Посмотреть набор символов UNICODE
можно здесь : .
Таким образом, для нас символ
(character) - это единица тектовой информации, имеющая определенное изображение и определенное имя.
CHARSET и его имя, или Do you forget about Charset ?
Как оказывается, множество пользователей и программистов никогда не задавались таким простым вопросом : каково имя собственного Charset-а. Почему ? А дело в том, что для большинства языков употребляется только один Charset. Например, для Америки en_US- Сharset будет однозначно ASCII, а для Франции fr_FR - Charset будет однозначно ISO-8859-1. И т.д.
Давайте не будем уподобляться и рассмотрим такой вопрос : Зачем нам нужно знать Charset
и каким образом выбирается имя
для определенного Charset-а ?
Во-первых, зачем нам требуются имена Charset-ов ?
:
Content-Type: text/plain; charset="koi8-r"
Content-Type: text/plain; charset="koi8-r"
Content-Type: text/html; charset="koi8-r"
Subject: Re: =?KOI8-R?Q?=C1?=
$ export LANG=ru_RU.KOI8-R
Таким образом, каждый Charset
должен иметь определенное имя. (Технически, имя - это строка символов.)
К сожалению, в деле стандартизации имен Charset-ов царит некоторый беспорядок. А проблема состоит в том, что в настоящее время не существует строгого стандарта на имена Charset-ов.
Например, даже в стандарте ISO
для Charset-ов семейства ISO-8859 определено все : состав символов, e.t.c., но совершенно не определены правила написания имени. Поэтому, даже для имен из стандарта ISO
возможны варианты записи:
| ISO8859-1 |
| ISO-8859-1 |
| ISO_8859-1 |
| и т.д. |
Обратите внимание на символ между буквами ISO и цифрами.
Однако существует другая организация : , которая кроме всего прочего занимается и регистрацией Charset-ов . Там, на IANA лежит документ : .
В данном документе определено следующее : The character set names may be up to 40 characters taken from the printable characters of US-ASCII. However, no distinction is made between use of upper and lower case letters. (Имя набора символов может достигать 40 символов ASCII. Не существует разницы между строчными и прописными буквами) Это практически все, что можно сказать о правилах образования имен Charset-ов.
Однако самое полезное в этом документе то, что в нем определено понятие Alias у Сharset.
| Name: ISO_8859-1:1987 MIBenum: 4 Source: ECMA registry Alias: iso-ir-100 Alias: ISO_8859-1 Alias: ISO-8859-1 (preferred MIME name) Alias: latin1 Alias: l1 Alias: IBM819 Alias: CP819 Alias: csISOLatin1 |
Также неплохо ознакомиться с :
Довольно обширная подборка документов находится здесь : . См. также коллекцию Charmap-ов от и .
Но к сожалению, данный документ не является
международным стандартом, а всего лишь "подборка рекомендаций"... И названия
Charset, в отличии от названий Country () и Territory
() для имен , HTTP и MIME не стандартизованы в ISO...
Может быть поэтому многие авторы программного обеспечения не поддерживает Charset-ы или механизм Alias:-ов... Например (автор Ulrich Drepper) и XFree86 . Вместо этого например в glibc существует специальный механизм, так называемый name mangling. То есть все символы в имени Charset-а переводятся в lowercase и удаляются все символы "_", "-", "." e.t.c. Например "ISO_8859-1" превращается в "iso88591". А "KOI8-R" --> "koi8r".
Ситуация осложняется тем, что когда-то давно IBM и Microsoft ввели понятие , которое теперь фактически имеет значение Charset. А с названиями этих самых Codepages стоит полная путанница :
| CP866 |
| CP-866 |
| IBM866 |
| IBM_866 |
| и т.д. |
| Windows-1251 |
| Win-1251 |
| CP1251 |
| CP-1251 |
| и т.д. |
Вобщем, засада с этим Charset-ом полная.
Более того, в "чистом" POSIX
вообще невозможно
узнать имя Charset текущей локализации. См. .
Ситуация даже еще хуже, поскольку для полной поддержки Charset-ов необходимо держать несколько копий man-ов, info и message catlog-ов (см. ) в разных кодировках. То есть, установив LANG=ru_RU.ISO_8859-5 пользователь вправе рассчитывать, что обработка символов, сообщения об ошибках и вывод справочной информации man будет происходить на русском языке в наборе символов ISO_8859-5. А установив LANG=ru_RU.KOI8-R пользователь точно так же вправе рассчитывать, что всю информацию он будет получать также на русском языке, но в кодировке KOI8-R.
Точно так же для японского языка. Поскольку для японского имеется по крайней мере 4 кодировки : ISO-2022-JP, JIS, Shift-JIS
(CP-932) и EUC, то установив LANG=ja_JP.EUC
пользователь по-видимому желает работать в кодировке EUC, а установив LANG=ja_JP.Shift-JIS
-- в кодировке Shift-JIS.
P.S Одна из редких программ, которая поддерживает Charset-ы "по настоящему" и даже имеет настройки charset.alias -- это mutt : .
P.P.S. Решением проблемы был бы UNICODE как "самый универсальный сharset". Тогда любой другой Charset можно получить из UNICODE
как "логическое сечение". Кстати в последних Solaris-ах есть такая возможность и можно определять en_US.UNICODE, ja_JP.UNICODE, ru_RU.UNICODE e.t.c.
P.P.P.S. К сожалению, X-ы "внутри" не UNICODE-овые и не имеют такого понятия как UNICODE font (в отличие от тех же ). А как было бы все тогда просто...
Содержание ""
Last change : 18-01-2000
©ЧрБчЮущьу зчэпщтК
¦чэпщтп C-x z (repeat) ъЮутчАБпршОуБ уИу чтьщ АъчАчя ъчрБчЮьБЛ зчэпщтЦ Emacs щуАзчшЛзч Юпв. мБп зчэпщтп ъчрБчЮОуБ ъЮутКтЦИЦН зчэпщтЦ Emacs, зпзпО яК чщп щь яКшп. ©Юь ъчрБчЮущьь зчэпщтп ьАъчшЛвЦуБ Бу жу пЮсЦэущБК, зпзьу Ц щуу яКшь ЮпщЛХу; чщп щу АГьБКрпуБ щчрКу пЮсЦэущБК зпжтКы Юпв.гБчяК ъчрБчЮьБЛ зчэпщтЦ щуАзчшЛзч Юпв, щпъуГпБпыБу уИу вщпзь z: зпжтКы вщпз z ъчрБчЮьБ МБЦ зчэпщтЦ уИу чтьщ Юпв. ©чрБчЮущьу впзпщГьрпуБАО, зчстп рК ррчтьБу вщпз, чБшьГщКы чБ z, ьшь щпжьэпуБу зщчъзЦ эКХь.
©Юутъчшчжьэ щпъЮьэуЮ, ГБч рК щпъуГпБпшь C-u 2 0 C-d, ГБчяК ЦтпшьБЛ 20 вщпзчр. ¦К эчжуБу ъчрБчЮьБЛ МБЦ зчэпщтЦ (рэуАБу А уу пЮсЦэущБчэ) уИу БЮь Юпвп, ГБчяК ЦтпшьБЛ р чяИуы АшчжщчАБь 80 вщпзчр, щпъуГпБпр C-x z z z. ©уЮрКы C-x z ъчрБчЮОуБ МБЦ зчэпщтЦ чтьщ Юпв, п зпжтКы ъчАшутЦНИьы z ъчрБчЮОуБ уИу Юпв.
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []
©ЧшчАзп эущН
¦пжтКы ДЮуыэ Emacs чяКГщч ьэууБ АруЮЕЦ ъчшчАзЦ эущН, зчБчЮЦН рК эчжуБу ьАъчшЛвчрпБЛ тшО ъЮчьврутущьО чъЮутушущщКЕ туыАБрьы. +уБ щучяЕчтьэчАБь ъуЮуГьАшОБЛ ьЕ втуАЛ, ъчБчэЦ ГБч рпэ ъЮчИу ъчАэчБЮуБЛ Апэьэ.¦чстп рК ьАъчшЛвЦуБу чзчщщЦН АьАБуэЦ, рК эчжуБу рКяьЮпБЛ зчэпщтК ьв ъчшчАзь эущН ъЮь ъчэчИь эКХь. +пъЮпршущщпО ръЮпрч АБЮушзп ъчАшу ъЦщзБп эущН ЦзпвКрпуБ, ГБч МБчБ ъЦщзБ рутуБ зч рБчЮьГщчэЦ эущН; `...' р зчщФу чвщпГпуБ, ГБч тч щпГпшп ЮпячБК МБп зчэпщтп АГьБпуБ пЮсЦэущБК А зшпрьпБЦЮК.
гБчяК ъЮчАэчБЮуБЛ ъчшщчу ьэО зчэпщтК ь тчзЦэущБпФьН з ъЦщзБЦ эущН, щпъуГпБпыБу C-h k ь впБуэ рКяуЮьБу щЦжщКы ъЦщзБ А ъчэчИЛН эКХь чяКГщКэ АъчАчячэ. (АэчБЮьБу Юпвтуш ).
+п БузАБчрКЕ БуЮэьщпшпЕ, сту щуБ эКХь, рК эчжуБу ьАъчшЛвчрпБЛ эущН, щпъуГпБпр M-` ьшь F10 (чщь впъЦАзпНБ зчэпщтЦ tmm-menubar). мБп зчэпщтп рЕчтьБ р Юужьэ, сту рК эчжуБу рКяЮпБЛ ъЦщзБ эущН А ъчэчИЛН зшпрьпБЦЮК. ©ЮутрпЮьБушЛщКы рКячЮ ъчзпвКрпуБАО р МЕч-чяшпАБь. ¦К эчжуБу ьАъчшЛвчрпБЛ ъЮпрЦН ь шурЦН зЦЮАчЮщКу АБЮушзь тшО трьжущьО ъч эущН з ЮпвщКэ ъЦщзБпэ. ¦чстп рК щпХшь щЦжщКы рпэ ъЦщзБ, щпъуГпБпыБу RET, ГБчяК рКяЮпБЛ усч.
¦ зпжтчэЦ ъЦщзБЦ эущН Бпзжу ъЮьъьАКрпуБАО яЦзрп ьшь ФьДЮп; чяКГщч МБч ъуЮрпО ъуЮрпО яЦзрп зпзчсч-Бч Ашчрп ьв ьэущь ъЦщзБп. мБп яЦзрп ьшь ФьДЮп чБтушОуБАО чБ ьэущь вщпГзчэ `=>'. ¦шО рКячЮп ъЦщзБп рК эчжуБу щпъуГпБпБЛ усч яЦзрЦ ьшь ФьДЮЦ.
+узчБчЮКу зчэпщтК р эущН ьэуНБ Бпзжу чяКГщКу ъЮьрОвзь з зшНГЦ; р Бпзчэ АшЦГпу ъчАшу Апэчсч ъЦщзБп ъуЮуГьАшОуБАО чтьщ МзрьрпшущБщКы зшНГ р зЮЦсшКЕ АзчязпЕ.
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []
Что нужно писателю, чтобы писать
В свое время юный Карел Чапек спросил своего дядю, известного в те годы писателя: "Как пишутся романы?" - "Сидя, молодой человек!" - ответил тот.И по сию пору романы, а также рассказы, статьи, эссе, монографии, докладные (и закладные) записки и все прочие тексты пишутся по прежнему сидя. Правда, обычно за компьютером, а не листом бумаги. И потому, помимо компьютера, требуют некоторого инструментария - средств для работы с текстами.
Их можно разделить на две группы - средства для составления текстов, текстовые редакторы, и средства для оформления таковых - текстовые процессоры. В чем разница между ними?
Обычно считается, что в редакторах имеются лишь простейшие операции по вводу текста, тогда как процессоры насыщены функциями его обработки. Не могу с этим согласиться - все зависит от конкретной реализации. Существует достаточно много редакторов, имеющих очень сложные возможности для обработки текстовых файлов и их групп, тогда как есть и процессоры, не позволяющие ничего, кроме смены гарнитуры или начертания шрифта и выравнивания текста.
На мой взгляд, различие между редакторами и процессорами - чисто формальное: все, что дает на выходе простой текстовый файл (т.н. plain text) - это редактор, тогда как процессор создает текст в собственном (хотя, возможно, и общепринятом) формате, содержащем кроме ASCII-символов всякого рода управляющие и форматирующие коды. Ну а богатство возможностей - это исключительно на совести разработчика.
Из такого определения следует, что текстовые редакторы ориентированы на создание оригинальных содержательных материалов, тогда как процессоры - на их представление. Предвижу возражение: подавляющее большинство тружеников пера (пардон, клавиатуры) использует текстовый процессор (берусь угадать, какой) для обоих целей. По моему мнению, это неправильно: создание оригинальных текстов (если, конечно, они заслуживают этого названия) - процесс, требующий концентрации внимания именно на содержательной стороне. Изобилие же всякого рода форматирующих и укращательских опций приводит к попыткам одновременно заниматься и оформительством. Казалось бы, экономия времени, однако обычно это приводит к тому, что как то, так и другое получается скверно. Впрочем, это - моя точка зрения, которую я не собираюсь ни доказывать, ни упаси Боже, навязывать.
Работа с текстами подразумевает еще один аспект - языковый. И, соответственно, для нее нужны средства языковой поддержки, то есть ввода символов и их отображения на экране - раз, шрифтового отображения на печати - два. Ну и проверка орфографии вряд ли покажется лишней. Конечно, все мы учились понемногу, но правильнописание хромает не у одного Винни-Пуха...
Начнем рассмотрение с тех инструментов, которые представляются более важными. Это -
Что почитать
Страницы man для perlpod(1), pod2man(1), pod2html(1), pod2latex(1), pod2text(1) и podchecker(1).В следующем месяце: LaTeX в связи с latex2html.
Что такое DocBook?
DocBook [1] - приложение SGML, предназначенное для разметки документов, такое же, как HTML для разметки веб - документов. В отличие от HTML, DocBook не предоставляет информацию о формате документа. Поэтому документы DocBook должны быть преобразованы в другой формат для просмотра. Преобразование в другой формат осуществляют с помощью утилит, применяющих некоторый шаблон к документам DocBook.
Рисунок 1: Преобразование DocBook документа в формат PDF с использованием шаблона.
Немного ниже, в данной заметке, рассмотрим, какие шаблоны и утилиты использовать для преобразования DocBook документов. Но сначала рассмотрим как составляются документы.
Что такое Emacs?
Emacs — один из наиболее мощных и широко распространенных редакторов, используемых в мире Unix. По популярности он соперничает с редактором vi и его клонами.В зависимости от ситуации, Emacs может быть:
текстовым редактором;
программой для чтения почты и новостей Usenet;
интегрированной средой разработки (IDE);
операционной системой;
всем, чем угодно.
Все это разнообразие достигается благодаря архитектуре Emacs, которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части Emacs, включая полнофункциональный интерпретатор языка Lisp. Таким образом, Emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи Emacs работают в наши дни, написана на языке Lisp.
Первая версия редактора Emacs была написана в 70-х годах 20-го столетия Richard Stallman (Ричардом Столманом)
как набор макросов для редактора TECO. В дальнейшем, уже будучи основателем Фонда Свободного программного обеспечения и , Stallman разработал GNU Emacs в развитие оригинального Emacs и до сих пор сопровождает эту программу. Вы можете подробнее ознакомиться с историей редактора, прочитав эту .
Emacs является одним из старейших редакторов. Он использовался тысячами программистов на протяжении последних 20 с лишним лет, означает, что для него создано много дополнительных пакетов расширений. Эти дополнения позволяют делать с помощью Emacs такие вещи, которые Stallman, вероятно, даже не считал возможными в начале своей работы над редактором. Более подробно я расскажу о них в следующих разделах.
Что такое LaTeX ?
Если вы не знаете, что такое LaTeX, то его можно описать как язык форматирования документов, это что-то на подобие хорошо известного HTML. Документы LaTeX содержат текст для печати и некоторые команды описывающие его формат. Чтобы увидеть документ HTML вам нужно дать его HTML браузеру, но чтобы увидеть текст LaTeX вам нужно скомпилить его, чтобы увидеть графическое представление называемое DVI (DeVice Indepedent). Это промежуточный формат который нужно перевести в Postscript(или другой принтерный язык), чтобы напечатать. Существует также DVI viewer который позволяет просматривать результат на экране.История LaTeX начинается с Donald E. Knuth. В 1977, не найдя недорогой печатающей установки или wordprocessor'а для написания его знаменитой серии "The art of computer programming", он решил сделать TeX, который был бы мощным языком программирования для форматированя текстов. C TeX вы можете делать все и с невероятным качеством. Например, разрешение выходного файла 57819ppi (pixels per inch). Но, как вы можете себе представить, такая мощность означает что вам необходимо знать множество детелей о процессе форматирования. TeX ориентирован на издателей, которым нужен детальный контроль над выходными данными.
Позже, в начале 80х, Leslie Lamport написал набор команд и стилей основанных на TeX, дающих ему высокоуровневый интерфейс. Это было названо LaTeX (Lamport TeX). Благодаря LaTeX возможно приготовить документы высокого качества очень просто(по сравнению с простым TeX). С тех пор, LaTeX был принят математиками, благодаря превосходному качеству математических выражений LaTeX.
Первой широко используемой версией была LaTeX 2.09. Настоящая версия называется LaTeX2e, и это версия требуется LyX для форматирования документов. Версия 3 находиться в разработке.
Что такое LyX ?
LyX - это WYSIWYM (What You See Is What You MEAN) редактор который работает как front end to LaTeX. Большинство современных текстовых редакторов развиваются согласно концепции WYSIWYG. В противоположность этой тенденции, LyX не старается дать точное изображение финального результата, а лишь его аппроксимацию. Он может быть определен как нечто среднее между методом "наброска" и страничным методом MsWord.После этого вступления вы могли подумать что LyX - это простая и не очень конкурентноспособная программа. Но это совершенно не так.
Важно понять, что LyX - это text typesetter, а не text composer. С помощью word processor, вы можете помещать или изображение куда вам угодно, или, например, вы можете выбрать точную ширину колонки таблицы. Но этого нельзя сделать в LyX. Фактически, если вы попробуете вставить последовательно два пробела, последний будет проигнорирован; тоже самое происходит если вы попытаетесь произвести два последовательных перехода на новую строку. Итак, какже тогда возможно форматиромание текста? LaTeX делает это автоматически. Чтобы сделать это, необходимо всего лишь ввести некоторую информацию о структуре текста, сообщая такие вещи как нумерация и заголовки секций, где должны быть изображения, и т.д.
Ограничение LyX на "игру" с текстом следует рассматривать не как проблему, а как качество. Просто вспомните как много раз перед началом написания документа вы экспериментировали с фонтами и видом заголовков. Возможно вы приняли это важное решенье когда, написав три или четыре страницы, вы вдруг забыли стиль заголовков второго уровня или даже хуже, вы передумали и вам пришлось возврашаться назад и переформатировать весь текст заново. Если наш текстовый редактор может приримать такие тривиальные решенья самостоятельно, мы можем полностью сконцентрироваться на том, что мы собираемя писать, а не на том как это будет выглядеть.
Можно сказать, что LyX - это помошник редатора, издание и конечную композицию осуществляет LaTeX.
Из собственного опыта я знаю, что множество людей кто пробовал использовать или даже слышал о LaTeX, помнят это как неудачный опыт. Не беспокойтесь, LyX для того чтобы помочь нам. Он справиться с LaTeX и со всей возней связанной с компиляцией текста. Нам не придется написать ни одной команды LaTeX (если мы не захотим).
Это главное окно LyX.

По правде говоря, вид LyX GUI и не привлекательный и не отточенный, поскольку используеся библиотека Xforms для его построения. Одна из целей следующей версии использовать библиотеку GTK+, разработанную для построения GIMP (но сейчас распространяемую как библиотека для построения GUI - прим. перев.) или/и библиотеку Qt, лучшую библиотеку доступную сегодня и используемую для разработки KDE (надо заметить что эта библиотека _не_ распространяется под лицензией GPL, как GTK+ - прим. перев.).
Что такое Ted?
Это в первую очередь Wysiwyg текстовый редактор созданный Mark de Does M.de.Does@inter.nl.net. Интерфейс построен на Motif, несколько пиктограмм и шрифтов, но на что сразу обращаешь внимание - редактор похож на инструмент для повседневного использования.| Изображение 0: Простой TED Gui составленный из компонентов TED с помощью The Gimp. ![]() |
Загрузить TED можно здесь -
Ted открывает файлы только одного формата ( но сохраняет в 3-х ) : RTF ( Rich Text Format ) - независимый от платформы и понятный любому текстовому редактору, его свойства - размер и тип шрифта, расположение определяется самим форматом. Чтобы избежать проблем переноса документов в Linux - сохраняйте их в формате RTF вместо DOC формата Word.
Что такое UNICODE ?
[ISO10646] ISO/IEC 10646-1:1993 International Organization for Standardization. "Information Technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane", Geneva, 1993.[UNICODE] The Unicode Standard, Version 2.0, The Unicode Consortium, Addison-Wesley, July 1996.
UNICODE - частичная реализация стандарта ISO 10646, совместим снизу вверх, т.е. первые 256 символов UNICODE = Latin-1 (ISO 8859-1). FYI: В настоящее время распределено около 29.000 позиций из 65.535 возможных.

Last change: 08/10/99.
Что здесь есть (содержание) :
Что значит "программа правильно написана" ?
Давайте рассмотрим теперь, как писать "правильные" с точки зрения локализации программы. Основное внимание уделим стандартам.(Но и у стандартов есть свои проблемы. Поэтому - немного ).
"Правильно" написанная программа с использованием POSIX locale не должна зависить от способа кодирования ("") символов. Такая программа не должна быть привязана к 7-ми битности ASCII символов, и должна пользоваться стандартными библиотечными (API) функциями locale : , , isxxx() и / не полагаясь, что Upper=Lower+0x20
и т.д. Конструкции, подобные этой также недопустимы :
if (c >= 'A' && c <= 'Z') { ...
Пользуйтесь :
if (isalpha(c) && isupper(c)) { ... или
if (isascii(c) && isupper(c))
Как правило, национальные алфавиты расположены начиная с кода (codepoint) 0x80, поэтому для совместимости со старыми реализациями locale можно объявить все символы как unsigned char, например ключом компилятора (для gcc -funsigned-char) или явно.
Хорошо написанная программа должна быть польностью 8-бит прозрачна. Например отметка удаленного файла в MS-DOS кодом 0x0E5
- не очень хорошее решение. Еще примеры плохих решений : знаменитая русская буква "Н" в редакторе GoldEd или русская буква "р" в Norton Commander...
Во-вторых, программа должна явно начинаться с вызова (такая форма вызова означает, что всем категориям локализации одновременно будет присвоено значение переменной окружения ). До вызова этой функции (или совсем без него) программа не обращает внимания на LANG= и фунции isalpha()...
работают в локализации POSIX (С) и с набором символов ASCII. То есть, не бывает "никакой" локализации.
| ПРИМЕЧАHИЕ: Во FreeBSD можно вылечить некоторые программы, в которых забыт вызов setlocale() путем задания строки окружения : $ export ENABLE_STARTUP_LOCALE="" тогда setlocale(LC_ALL,"") будет вызываться автоматически при старте программ (без их перекомпиляции). В Linux libc такого нет (пока?) и по умолчанию всегда включено LANG="C" или "POSIX". Однако можно пересобрать Linux libc, указав другое значение по умолчанию. Но следует отметить, что такое решение будет противоречить стандарту, по которому программа стартует в POSIX (до первого вызова setlocale()). |
Для получения locale-зависимой информации следует пользоватся данными структуры lconv, которые можно получить вызовом функции . Для получения детальной информации по категориям локализации (описанным в файле ) можно пользовться функцией . (Эта функция не входит в POSIX, но входит в XPG, и большинство систем ее имеют).
Для сравнения строк символов следует пользоваться функциями и вместо .
Для полной поддержки сообщений на родном языке () весь вывод сообщений пользователю должен происходить c использованием функций NLS и должен быть создан каталог сообщений (message catalog) для данной программы (и данного языка).
А в заключение, неплохо бы иметь man
на разных языках. :-)
Codeeqv
Cyrillic Codepages Crosstable 1Сводная таблица символов
в популярных кириллических кодировках
| Символ | DOS | KOI | WIN | MAC | ISO | Unicode | Unicode 2.0 Name | ||||||||
| Русские буквы | |||||||||||||||
| А | 80 | E1 | C0 | 80 | B0 | U+0410 | Capital Letter A | ||||||||
| Б | 81 | E2 | C1 | 81 | B1 | U+0411 | Capital Letter Be | ||||||||
| В | 82 | F7 | C2 | 82 | B2 | U+0412 | Capital Letter Ve | ||||||||
| Г | 83 | E7 | C3 | 83 | B3 | U+0413 | Capital Letter Ghe | ||||||||
| Д | 84 | E4 | C4 | 84 | B4 | U+0414 | Capital Letter De | ||||||||
| Е | 85 | E5 | C5 | 85 | B5 | U+0415 | Capital Letter Ie | ||||||||
| Ж | 86 | F6 | C6 | 86 | B6 | U+0416 | Capital Letter Zhe | ||||||||
| З | 87 | FA | C7 | 87 | B7 | U+0417 | Capital Letter Ze | ||||||||
| И | 88 | E9 | C8 | 88 | B8 | U+0418 | Capital Letter I | ||||||||
| Й | 89 | EA | C9 | 89 | B9 | U+0419 | Capital Letter Short I | ||||||||
| К | 8A | EB | CA | 8A | BA | U+041A | Capital Letter Ka | ||||||||
| Л | 8B | EC | CB | 8B | BB | U+041B | Capital Letter El | ||||||||
| М | 8C | ED | CC | 8C | BC | U+041C | Capital Letter Em | ||||||||
| Н | 8D | EE | CD | 8D | BD | U+041D | Capital Letter En | ||||||||
| О | 8E | EF | CE | 8E | BE | U+041E | Capital Letter O | ||||||||
| П | 8F | F0 | CF | 8F | BF | U+041F | Capital Letter Pe | ||||||||
| Р | 90 | F2 | D0 | 90 | C0 | U+0420 | Capital Letter Er | ||||||||
| С | 91 | F3 | D1 | 91 | C1 | U+0421 | Capital Letter Es | ||||||||
| Т | 92 | F4 | D2 | 92 | C2 | U+0422 | Capital Letter Te | ||||||||
| У | 93 | F5 | D3 | 93 | C3 | U+0423 | Capital Letter U | ||||||||
| Ф | 94 | E6 | D4 | 94 | C4 | U+0424 | Capital Letter Ef | ||||||||
| Х | 95 | E8 | D5 | 95 | C5 | U+0425 | Capital Letter Ha | ||||||||
| Ц | 96 | E3 | D6 | 96 | C6 | U+0426 | Capital Letter Tse | ||||||||
| Ч | 97 | FE | D7 | 97 | C7 | U+0427 | Capital Letter Che | ||||||||
| Ш | 98 | FB | D8 | 98 | C8 | U+0428 | Capital Letter Sha | ||||||||
| Щ | 99 | FD | D9 | 99 | C9 | U+0429 | Capital Letter Shcha | ||||||||
| Ъ | 9A | FF | DA | 9A | CA | U+042A | Capital Letter Hard Sign | ||||||||
| Ы | 9B | F9 | DB | 9B | CB | U+042B | Capital Letter Yeru | ||||||||
| Ь | 9C | F8 | DC | 9C | CC | U+042C | Capital Letter Soft Sign | ||||||||
| Э | 9D | FC | DD | 9D | CD | U+042D | Capital Letter E | ||||||||
| Ю | 9E | E0 | DE | 9E | CE | U+042E | Capital Letter Yu | ||||||||
| Я | 9F | F1 | DF | 9F | CF | U+042F | Capital Letter Ya | ||||||||
| а | A0 | C1 | E0 | E0 | D0 | U+0430 | Small Letter A | ||||||||
| б | A1 | E2 | E1 | E1 | D1 | U+0431 | Small Letter Be | ||||||||
| в | A2 | F7 | E2 | E2 | D2 | U+0432 | Small Letter Ve | ||||||||
| г | A3 | E7 | E3 | E3 | D3 | U+0433 | Small Letter Ghe | ||||||||
| д | A4 | E4 | E4 | E4 | D4 | U+0434 | Small Letter De | ||||||||
| е | A5 | E5 | E5 | E5 | D5 | U+0435 | Small Letter Ie | ||||||||
| ж | A6 | F6 | E6 | E6 | D6 | U+0436 | Small Letter Zhe | ||||||||
| з | A7 | FA | E7 | E7 | D7 | U+0437 | Small Letter Ze | ||||||||
| и | A8 | E9 | E8 | E8 | D8 | U+0438 | Small Letter I | ||||||||
| й | A9 | EA | E9 | E9 | D9 | U+0439 | Small Letter Short I | ||||||||
| к | AA | EB | EA | EA | DA | U+043A | Small Letter Ka | ||||||||
| л | AB | EC | EB | EB | DB | U+043B | Small Letter El | ||||||||
| м | AC | ED | EC | EC | DC | U+043C | Small Letter Em | ||||||||
| н | AD | EE | ED | ED | DD | U+043D | Small Letter En | ||||||||
| о | AE | EF | EE | EE | DE | U+043E | Small Letter O | ||||||||
| п | AF | F0 | EF | EF | DF | U+043F | Small Letter Pe | ||||||||
| р | E0 | F2 | F0 | F0 | E0 | U+0440 | Small Letter Er | ||||||||
| с | E1 | F3 | F1 | F1 | E1 | U+0441 | Small Letter Es | ||||||||
| т | E2 | F4 | F2 | F2 | E2 | U+0442 | Small Letter Te | ||||||||
| у | E3 | F5 | F3 | F3 | E3 | U+0443 | Small Letter U | ||||||||
| ф | E4 | E6 | F4 | F4 | E4 | U+0444 | Small Letter Ef | ||||||||
| х | E5 | E8 | F5 | F5 | E5 | U+0445 | Small Letter Ha | ||||||||
| ц | E6 | E3 | F6 | F6 | E6 | U+0446 | Small Letter Tse | ||||||||
| ч | E7 | FE | F7 | F7 | E7 | U+0447 | Small Letter Che | ||||||||
| ш | E8 | FB | F8 | F8 | E8 | U+0448 | Small Letter Sha | ||||||||
| щ | E9 | FD | F9 | F9 | E9 | U+0449 | Small Letter Shcha | ||||||||
| ъ | EA | FF | FA | FA | EA | U+044A | Small Letter Hard Sign | ||||||||
| ы | EB | F9 | FB | FB | EB | U+044B | Small Letter Yeru | ||||||||
| ь | EC | F8 | FC | FC | EC | U+044C | Small Letter Soft Sign | ||||||||
| э | ED | FC | FD | FD | ED | U+044D | Small Letter E | ||||||||
| ю | EE | E0 | FE | FE | EE | U+044E | Small Letter Yu | ||||||||
| я | EF | F1 | FF | DF | EF | U+044F | Small Letter Ya | ||||||||
| Ё | F0 | B3 | A8 | DD | F1 | U+0401 | Capital Io | ||||||||
| ё | F1 | A3 | B8 | DE | F1 | U+0451 | Small Io | ||||||||
| Кириллица из нерусских славянских языков | |||||||||||||||
| Ђ | — | — | 80 | AB | A2 | U+0402 | Capital Dje | ||||||||
| Ѓ | *83 Г | *E7 Г | 81 | AE | A3 | U+0403 | Capital Gje | ||||||||
| Є | F2 | — | AA | B8 | A4 | U+0404 | Capital Ukrainian Ie | ||||||||
| Ѕ | *53 S | *53 S | BD | C1 | A5 | U+0405 | Capital Dze | ||||||||
| І | *49 I | *49 I | B2 | A7 | A6 | U+0406 | Capital Byelorussian-Ukrainian I | ||||||||
| Ї | F4 | — | AF | BA | A7 | U+0407 | Capital Yi | ||||||||
| Ј | *4A J | *4A J | A3 | B7 | A8 | U+0408 | Serbian Capital Je | ||||||||
| Љ | — | — | 8A | BC | A9 | U+0409 | Serbian Capital Lje | ||||||||
| Њ | — | — | 8C | BE | AA | U+040A | Serbian Capital Nje | ||||||||
| Ћ | — | — | 8E | CB | AB | U+040B | Serbian Capital Tshe | ||||||||
| Ќ | *8A К | *EB К | 8D | CD | AC | U+040C | Capital Kje | ||||||||
| Ў | F6 | — | A1 | D8 | AE | U+040E | Capital Short U | ||||||||
| Џ | — | — | 8F | DA | AF | U+040F | Serbian Capital Dzhe | ||||||||
| ђ | — | — | 90 | AC | F2 | U+0452 | Serbian Small Dje | ||||||||
| ѓ | *A3 г | *C7 г | 83 | AF | F3 | U+0453 | Small Gje | ||||||||
| є | F3 | — | BA | B9 | F4 | U+0454 | Small Ukrainian Ie | ||||||||
| ѕ | *73 s | *73 s | BE | CF | F5 | U+0455 | Small Dze | ||||||||
| і | *69 i | *69 i | B3 | B4 | F6 | U+0456 | Small Byelorussian-Ukrainian I | ||||||||
| ї | F5 | — | BF | BB | F7 | U+0457 | Small Yi | ||||||||
| ј | *6A j | *6A j | BC | C0 | F8 | U+0458 | Serbian Small Je | ||||||||
| љ | — | — | 9A | BD | F9 | U+0459 | Serbian Small Lje | ||||||||
| ? | — | — | 9C | BF | FA | U+045A | Serbian Small Nje | ||||||||
| ћ | — | — | 9E | CC | FB | U+045B | Serbian Small Tshe | ||||||||
| ќ | *AA К | *CB К | 9D | CE | FC | U+045C | Small Kje | ||||||||
| ў | F7 | — | A2 | D9 | FE | U+045E | Small Short U | ||||||||
| џ | — | 9F | DB | FF | U+045F | Serbian Small Dzhe | |||||||||
| Ґ | *83 Г | *E7 Г | A5 | A2 | *B3 Г | U+0490 | Capital Ghe With Upturn | ||||||||
| ґ | *A3 г | *C7 г | B4 | B6 | *D3 г | U+0491 | Small Ghe With Upturn | ||||||||
| Знаки (преимущественно Windows/Mac) | |||||||||||||||
| (No-Break Space) | *FF | 9A | A0 | CA | A0 | U+00A0 | No-Break Space | ||||||||
| *20 Sp | *20 Sp | AD | *20 Sp | AE | U+00AD | Soft Hyphen | |||||||||
| ¤ | FD | — | A4 | FF ? | — | U+00A4 | Currency Sign | ||||||||
| ¦ | *B3 ³ | *83 ³ | A6 | — | — | U+00A6 | Broken Bar | ||||||||
| § | *15 § | *15 § | A7 | A4 | FD | U+00A7 | Section Sign | ||||||||
| © | FC | BF | A9 | A9 | *43 C | U+00A9 | Copyright Sign | ||||||||
| " | *3C < | *3C < | AB | C7 | *3C < | U+00AB | Left-Pointing Double Angle Quotation Mark | ||||||||
| ¬ | *2D - | *2D - | AC | C2 | *2D - | U+00AC | Not Sign | ||||||||
| ® | *52 R | *52 R | AE | A8 | *52 R | U+00AE | Registered Sign | ||||||||
| ° | F8 | 9C | B0 | A1 | — | U+00B0 | Degree Sign | ||||||||
| ± | *2B + | *2B + | B1 | B1 | *2B + | U+00B1 | Plus-Minus Sign | ||||||||
| ý | FD | 9D | — | — | — | U+00B2 | Superscript Two | ||||||||
| µ | *E7 ч | *DE ч | B5 | B5 | *E7 ч | U+00B5 | Micro Sign | ||||||||
| ¶ | — | — | B6 | A6 | — | U+00B6 | Pilcrow Sign | ||||||||
| · | FA | 9E | B7 | *2E . | *2E . | U+00B7 or 2219 | Middle Dot or Bullet Operator | ||||||||
| " | *3E > | *3E > | BB | C8 | *3E > | U+00BB | Right-Pointing Double Angle Quotation Mark | ||||||||
| ö | F6 | 9F | — | D6 | — | U+00F7 | Division Sign | ||||||||
| – | *2D - | *2D - | 96 | D0 | *2D - | U+2013 | En Dash | ||||||||
| — | *2D - | *2D - | 97 | D1 | *2D - | U+2014 | Em Dash | ||||||||
| ‘ | *27 ' | *27 ' | 91 | D4 | *27 ' | U+2018 | Left Single Quotation Mark | ||||||||
| ’ | *27 ' | *27 ' | 92 | D5 | *27 ' | U+2019 | Right Single Quotation Mark | ||||||||
| ‚ | *27 ' | *27 ' | 82 | *27 ' | *27 ' | U+201A | Single Low-9 Quotation Mark | ||||||||
| “ | *22 " | *22 " | 93 | D2 | *22 " | U+201C | Left Double Quotation Mark | ||||||||
| ” | *22 " | *22 " | 94 | D3 | *22 " | U+201D | Right Double Quotation Mark | ||||||||
| „ | *22 " | *22 " | 84 | D7 | *22 " | U+201E | Double Low-9 Quotation Mark | ||||||||
| † | *C5 Å | *8A Å | 86 | A0 | — | U+2020 | Dagger | ||||||||
| ‡ | *D8 Ø | *BC Ø | 87 | — | — | U+2021 | Double Dagger | ||||||||
| • | F9 | 95 | 95 | A5 | — | U+2022 or 2219 | Bullet or Bullet Operator | ||||||||
| … | *3A : | *3A : | 85 | C9 | — | U+2026 | Horizontal Ellipsis | ||||||||
| ‰ | *25 % | *25 % | 89 | *25 % | *25 % | U+2030 | Per Mille Sign | ||||||||
| ‹ | *3C < | *3C < | 8B | *3C < | *3C < | U+2039 | Single Left-Pointing Angle Quotation Mark | ||||||||
| ? | *3E > | *3E > | 9B | *3E > | *3E > | U+203A | Single Right-Pointing Angle Quotation Mark | ||||||||
| № | FC | — | B9 | DC | F0 | U+2116 | Numero Sign | ||||||||
| ™ | *54 T | *54 T | 99 | AA | *54 T | U+2122 | Trade Mark Sign | ||||||||
| Знаки, специфичные для DOS/KOI8-R | |||||||||||||||
| û | FB | 96 | *76 v | C3 | *76 v | U+221A | Square Root | ||||||||
| ÷ | F7 | 97 | — | C5 | — | U+2248 | Almost Equal To | ||||||||
| ó | F3 | 98 | — | B2 | — | U+2264 | Less-Than Or Equal To | ||||||||
| ò | F2 | 99 | — | B3 | — | U+2265 | Greater-Than Or Equal To | ||||||||
| ô | F4 | 93 | — | — | — | U+2320 | Top Half Integral | ||||||||
| õ | F5 | 9B | — | — | — | U+2321 | Bottom Half Integral | ||||||||
| þ | FE | 94 | — | CA ? | — | U+25A0 | Black Square | ||||||||
| Знаки, специфичные для Mac | |||||||||||||||
| £ | *4C L | *4C L | *4C L | A3 | *4C L | U+00A3 | Pound Sign | ||||||||
| ¦ | *66 f | *66 f | *66 f | C4 | *66 f | U+0192 | Latin Small Letter F With Hook | ||||||||
| D | — | — | — | C6 | — | U+2206 | Increment | ||||||||
| ¥ | — | — | — | B0 | — | U+221E | Infinity | ||||||||
| ¹ | *23 # | *23 # | *23 # | AD | *23 # | U+2260 | Not Equal To | ||||||||
| Псевдографика (DOS/KOI8-R/ГОСТ) | |||||||||||||||
| ° | B0 | 90 | *20 Sp or *2D - | *20 Sp or *2D - | 9B | U+2591 | Light Shade | ||||||||
| ± | B1 | 91 | *20 Sp or *2D - | *20 Sp or *2D - | 9C | U+2592 | Medium Shade | ||||||||
| ² | B2 | 92 | *20 Sp or *2D - | *20 Sp or *2D - | 9D | U+2593 | Dark Shade | ||||||||
| ³ | B3 | 81 | *A6 ¦ | *7C | | A5 | U+2502 | Box Drawings Light Vertical | ||||||||
| ´ | B4 | 87 | *A6 ¦ | *7C | | A7 | U+2524 | Box Drawings Light Vertical And Left | ||||||||
| µ | B5 | B2 | *A6 ¦ | *7C | | 83 | U+2561 | Box Drawings Vertical Single And Left Double | ||||||||
| ¶ | B6 | B4 | *A6 ¦ | *7C | | 84 | U+2562 | Box Drawings Vertical Double And Left Single | ||||||||
| · | B7 | A7 | *2B + or *AC ¬ | *2B + or *C2 ¬ | 85 | U+2556 | Box Drawings Down Double And Left Single | ||||||||
| ¸ | B8 | A6 | *2B + or AC ¬ | *2B + or *C2 ¬ | 86 | U+2555 | Box Drawings Down Single And Left Double | ||||||||
| ¹ | B9 | B5 | *A6 ¦ | *7C | | 97 | U+2563 | Box Drawings Double Vertical And Left | ||||||||
| º | BA | A1 | *A6 ¦ | *7C | | 95 | U+2551 | Box Drawings Double Vertical | ||||||||
| " | BB | A8 | *2B + or *AC ¬ | *2B + or *C2 ¬ | 91 | U+2557 | Box Drawings Double Down And Left | ||||||||
| ¼ | BC | AE | *2B + | *2B + | 92 | U+255D | Box Drawings Double Up And Left | ||||||||
| ½ | BD | AD | *2B + | *2B + | 8B | U+255C | Box Drawings Up Double And Left Single | ||||||||
| ¾ | BE | AC | *2B + | *2B + | 8C | U+255B | Box Drawings Up Single And Left Double | ||||||||
| ¿ | BF | 83 | *2B + or *AC ¬ | *2B + or *C2 ¬ | A1 | U+2510 | Box Drawings Light Down And Left | ||||||||
| À | C0 | 84 | *2B + or *4C L | *2B + or *4C L | A3 | U+2514 | Box Drawings Light Up And Right | ||||||||
| Á | C1 | 89 | *2D - | *2D - | A8 | U+2534 | Box Drawings Light Up And Horizontal | ||||||||
| Â | C2 | 88 | *2D - or *54 T | *2D - or *54 T | A6 | U+252C | Box Drawings Light Down And Horizontal | ||||||||
| Ã | C3 | 86 | *2B + | *2B + | A9 | U+251C | Box Drawings Light Vertical And Right | ||||||||
| Ä | C4 | 80 | *2D - | *2D - | A4 | U+2500 | Box Drawings Light Horizontal | ||||||||
| Å | C5 | 8A | *2B + | *2B + | AA | U+253C | Box Drawings Light Vertical And Horizontal | ||||||||
| Æ | C6 | AF | *A6 ¦ | *7C | | 8D | U+255E | Box Drawings Vertical Single And Right Double | ||||||||
| Ç | C7 | B0 | *A6 ¦ | *7C | | 8E | U+255F | Box Drawings Vertical Double And Right Single | ||||||||
| È | C8 | AB | *2B + or *4C L | *2B + or *4C L | 93 | U+255A | Box Drawings Double Up And Right | ||||||||
| É | C9 | A5 | *2B + or *E3 г | *2B + or *E3 г | 90 | U+2554 | Box Drawings Double Down And Right | ||||||||
| Ê | CA | BB | *2D - | *2D - | 98 | U+2569 | Box Drawings Double Up And Horizontal | ||||||||
| Ë | CB | B8 | *2D - or *54 T | *2D - or *54 T | 96 | U+2566 | Box Drawings Double Down And Horizontal | ||||||||
| Ì | CC | B1 | *A6 ¦ | *7C | | 99 | U+2560 | Box Drawings Double Vertical And Right | ||||||||
| Í | CD | A0 | *2D - or *3D = | *2D - or *3D = | 94 | U+2550 | Box Drawings Double Horizontal | ||||||||
| Î | CE | BE | *2B + | *2B + | 9A | U+256C | Box Drawings Double Vertical And Horizontal | ||||||||
| Ï | CF | B9 | *2D - | *2D - | 80 | U+2567 | Box Drawings Up Single And Horizontal Double | ||||||||
| Ð | D0 | BA | *2D - | *2D - | 81 | U+2568 | Box Drawings Up Double And Horizontal Single | ||||||||
| Ñ | D1 | B6 | *2D - or *54 T | *2D - or *54 T | 82 | U+2564 | Box Drawings Down Single And Horizontal Double | ||||||||
| Ò | D2 | B7 | *2D - or *54 T | *2D - or *54 T | 87 | U+2565 | Box Drawings Down Double And Horizontal Single | ||||||||
| Ó | D3 | AA | *2B + or *4C L | *2B + or *4C L | 88 | U+2559 | Box Drawings Up Double And Right Single | ||||||||
| Ô | D4 | A9 | *2B + or *4C L | *2B + or *4C L | 89 | U+2558 | Box Drawings Up Single And Right Double | ||||||||
| Õ | D5 | A2 | *2B + | *2B + | 8A | U+2552 | Box Drawings Down Single And Right Double | ||||||||
| Ö | D6 | A4 | *2B +or *E3 г | *2B + or *E3 г | 8F | U+2553 | Box Drawings Down Double And Right Single | ||||||||
| × | D7 | BD | *2B + | *2B + | 9E | U+256B | Box Drawings Vertical Double And Horizontal Single | ||||||||
| Ø | D8 | BC | *2B + | *2B + | 9F | U+256A | Box Drawings Vertical Single And Horizontal Double | ||||||||
| Ù | D9 | 85 | *2B + | *2B + | A2 | U+2518 | Box Drawings Light Up And Left | ||||||||
| Ú | DA | 82 | *2B + | *2B + | A0 | U+250C | Box Drawings Light Down And Right | ||||||||
| Û | DB | 8D | *5F _ | *5F _ | AB | U+2588 | Full Block | ||||||||
| Ü | DC | 8C | *5F _ | *5F _ | AC | U+2584 | Lower Half Block | ||||||||
| Ý | DD | 8E | *5F _ | *5F _ | AD | U+258C | Left Half Block | ||||||||
| Þ | DE | 8F | *5F _ | *5F _ | AE | U+2590 | Right Half Block | ||||||||
| ß | DF | 8B | *5F _ | *5F _ | AF | U+2580 | Upper Half Block |
Примечания.
1) Все числовые значения кодов шестнадцатеричные.
2) Если в данной кодировке точное соответствие символа отсутствует, а приводится похожий символ, то его код отмечается звездочкой (*) и приводится сам заменяющий символ. Для DOS/Windows кодировок по возможности указываются стандартные для Windows соответствия, определяемые файлом xlat866.bin, однако в 32-битных программах Windows’95 этот файл не используется и соответствия отчасти другие (указываемые через союз or).
Впрочем, от некоторых отступлений, учитывая реальное отсутствие нормативности, я все равно не удержался.
3) Вопросительным знаком отмечены соответствия, сомнительные в отношении их стандартности.
4) Имена символов в Unicode в стандарте написаны полностью большими буквами. В большинстве из них содержится убранное мной определение CYRILLIC, в то же время для специфически сербских букв мной добавлено определение Serbian.
5) Псевдографические символы последней части таблицы содержатся в кодировке ГОСТ (“основной”), но не содержатся в ISO-8859-5, в свою очередь буквы нерусских славянских языков содержатся кодировке ISO-8859-5, но не содержатся в кодировке ГОСТ.
(Исправлены опечатки версии 03-Ноя-97.)
6) Указанные 2 значения UNICODE для двух “буллетов” связаны с фактической эквивалентностью middot и bullet operator (U+00B7
и U+2219), представляющих собой маленькую точку в центре позиции буквы, и с неоднозначностью трактовки и перекодировки “толстой точки” с кодом F9 в CP866. По смыслу это должен быть “буллет” (U+2022), но в определении KOI8-R в RFC-1489 стоит U+2219
(“маленькая точка").
7) Unicode Names не совпадают с Postscript Names, содержащимися в шрифтах TrueType. Postscript Names русских букв имеют вид “afii10xx”.
21-Mar-98 Костя Каз. (kazarn@glas.apc.org)
Customize Menus
Этот подпункт дает возможность настроить три элемента - пункты Shell и Macro главного меню, а также контекстное, или, в терминологии NEdit, фоновое, меню (Window Background Menu), вызываемое правой кнопкой мыши.При настройке пункта Shell вызывается панель со списком имеющихся команд, которые с помощью соответствующих экранных клавиш могут быть удалены (клавиша Delete), скопированы (клавиша Copy) или перемещены вверх или вниз по списку (клавиши Move^ и Move , соответственно).
В расположенном ниже поле командной строки (Shell Command to Execute) содержится собственно код скрипта командной оболочки. Здесь можно непосредственно руками отредактировать соответствующую команду.
Например, в комплекте NEdit предусмотрен скрипт для проверки орфографии (пункт spell). Каковой, вызывая стандартную программу ispell в окне терминала, имеет вид cat>spellTmp; xterm -e ispell -x spellTmp; cat spellTmp; rm spellTmp
и, естественно, понимает только английский язык. Однако обучить его русскому языку (или любому другому, при наличии соответствующего словаря) - трудов не составит. Для этого достаточно указать в командной строке параметр -d russian (предпысывающий обращаться при спеллинге именно к русскому, а не какому другому словарю) - и все в порядке.
Заодно, при желании, можно указать и параметры окна терминала (цвет текста и фона, геометрию и так далее). Или - просто заменить вызов xterm на ту терминальную программу, которая вам больше нравится. В реультате чего скрипт проверки орфографии примет селдующий вид (как у меня) cat>spellTmp; konsole -e ispell -d\ russian -x spellTmp; cat spellTmp; rm spellTmp
Кроме того, в строке Menu Entry можно изменить название скрипта (именно содержимое этой строки и выступает в качестве пункта меню) или организовать иерархическое меню (с помощью знака >), а также привязать скрипт к какому-либо языку (для чего имя его маркируется знаком @ с указанием на последний, например @C++); в последнем случае скрипт будет фигурировать в меню только в том случае, если выбрать соответствующий языковый режим.
Кроме того, в поле Accelerator за скриптом можно закрепить некую комбинацию горячих клавиш. А поле Mnemonic предназначено для ввода литеры, которая будет в меню выделена и послужит для быстрого доступа к команде (с помощью комбинации Alt+литера, что, впрочем, срабатывает далеко не всегда). Можно изменить и ряд условий исполнения команды, о чем будет разговор в соответствующем разделе.
И так можно поступить (при необходимости) с любым из имеющихся в наборе скриптов. Не следует только забывать, завершив редактирование одного, нажимать клавишу Apply перед переходом к следующему - иначе изменения будут утеряны.
Рзумеется, в меню Shell можно включить и скрипты собственного изготовления, для чего в списке имеется пункт New. Однако это будет нашим занятием в одном из следующих разделов.
Сходным образом настраивается и меню Macro. На предназначенной для этого панели также имеется список макрокоманд с кнопками для их удаления, копирования и перемещения вверх и вниз, поле имени (Menu Entry) с возможностью создания многоуровневых иерархических меню (посредством того же знака >), привязкой к языковому режиму и закрепленной клавишной комбинации, а также обширное поле, предназначенное для кода макроса. Доступное для непосредственного редактирования.
Выбрав из списка макросов пункт New, можно нарастить меню собственными командами на языке NEdit Macro. Во-первых, наприсав в поле Macro Command Execute соответствующий код вручную, во-вторых, посредством клавиши Paste Learn/Replay Macro поместив туда запротоколированную (с помощью пунктов меню Macro - Learn Keystrokes или клавишной комбинации Alt+K) последовательность действий. Впрочем, создание макросов будет подробно рассмотрено в следующем разделе.
Абсолютно аналогичным образом можно настроить и конеткстное (или фоновое) меню, вызываемое щелчком правой кнопки мыши на выделенном фрагменте. Как уже говорилось, по умолчанию оно включает привычные для Windows-мигранта пункты Undo, Redo, Cut, Copy и Paste, которые с помощью экранных клавиш Delete, Copy, Move^ и Move можно удалить, скопировать и переместить.
А избрав в списке пункт New, можно пополнить контекстное меню собственными командами, написанными на языке NEdit Macro вручную или посредством протоколирования действий.
Покончив с настройками меню, можно заняться определениями параметров поиска, для чего предназначен пункт
Cygnus DocBook Tools
Необязательно (возможно Red Hat специфичны) - http://www.redhat.com/Red Hat распространяет три пакета, возможно начиная с версии 6.2,которые обеспечивают поддержку DocBook и некоторые утилиты. Они обеспечивают визуализацию только в форматы HTML и PDF,но их просто установить, если вы используете Red Hat,что поможет вам быстро начать писать, не тратя время на борьбу с утилитами. TeTex 0.9,Jade и Jadetex должны быть установлены перед этими пакетами.
| Назад | Содержание | Вперед |
| HOWTO-HOWTO | Основы работы с DocBook |
ЦзпвпБушЛ ъуЮуэущщКЕ
@anchor{Variable Index} ¦КАБЮКы ъуЮуЕчт:-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ЦзпвпБушЛ зчэпщт ь ДЦщзФьы
@anchor{Command Index} ¦КАБЮКы ъуЮуЕчт:-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Daniel Guerrero
Я заканчиваю обучение на степень бакалавра BUAP в городе Пуэбло (Puebla), Мексика. Учавствую в работе проекта TLPD-ES (испанский вариант The Linux Documentation Project прим. перев.) все мои познания об этих технологиях я приобрел здесь. В настоящий момент я изучаю Web-семантику.Dave Bodenstab
imdave@synet.net7 августа 1996, среда
Этот документ содержит описание различных файлов шрифтов, которые могут использоваться с FreeBSD и драйвером системной консоли, системой X11, программами Ghostscript и Groff. Даются реально работающие примеры по переключению экрана системной консоли в режим 80x60 и использованию файлов шрифтов формата Type 1 с перечисленными выше прикладными программами.
Дилемма 0.Применять ли XML вообще?
XML предназначен для тех приложений, в которых текст (документ) должен быть легко доступен как программно, так и в читабельном формате. Это своего рода компромисс между бинарным кодом, отражающим встроенные типы языков программирования, и текстовым форматом, предназначенным для восприятия человеком. Примером представления первого типа служит встроенная база данных Berkeley db. Примером данных второго сорта может быть документ в формате RTF или Microsoft Word.XML полезен также в случаях, когда данные представляются скорее в виде древовидных структур, а не плоских двумерных таблиц отношений, характерных для RDBS ("скорее" — потому что, приложив достаточно усилий, древовидную структуру можно представить в виде набора плоских представлений). Другое ограничение, снимаемое XML,— это фиксированная схема данных. Конечно, RDBS тоже могут манипулировать структурами отношений в процессе работы приложения, но, вообще говоря, это не то, для чего они созданы.
Третье преимущество XML — это гарантированная доставка методами Сети, в частности HTTP. Особенно это касается методов использования, когда вы взаимодействуете со стандартизированными протоколами по SOAP. Все это распространяется также и на веб-сервисы, WSDL и так далее. В таких случаях — поскольку вы должны в конце концов представить данные в виде XML — вы, возможно, сочтете удобным хранить и обрабатывать данные тоже в этом формате. На самом деле подробности реализации не входят в компетенцию веб-сервисов, так что последнее решение зависит от вас.
Частным случаем является доступ к базам данных в сети посредством метода доступа XML, поскольку многие производители RDBS предусматривают такую возможность. Естественно, представление отношений в виде XML унаследует все ограничения отношений, то есть все они будут иметь фиксированную схему.
Дилемма 1.
Атрибуты или элементы?
Это один из тех простых вопросов, на которые нет простого ответа. Предположим, у нас есть запись о служащем, состоящая всего из двух элементов:
То же самое можно записать и другим способом:
С другой стороны, атрибут — это всегда простое значение, которое не может стать сложным ни при каких условиях. Это ограничение можно рассматривать и как положительное — то есть таким образом можно принудительно ограничить фантазию пользователей.
Кроме того, следует иметь в виду два отличия атрибутов и элементов.
Первое из них касается старых типов данных XML 1.0 — таких как ID, IDREF, NMTOKEN и других. В целях совместимости их использование ограничено только атрибутами.
Вторая особенность — это то, как обрабатываются значения по умолчанию. Значение атрибута по умолчанию будет подставлено в том случае, если этот атрибут не указан совсем. Можно задействовать значение элемента по умолчанию — для этого сам элемент должен быть указан, но не должен содержать значения — отсутствие элемента не породит элемент со значением по умолчанию.
Третья особенность — элементы могут адресоваться из других мест того же или другого документа (ссылки). Адресовать подобным образом атрибуты невозможно.
Дилемма 2.Как обеспечить устойчивость?
Устойчивость— это свойство структур данных сохранять свое состояние в промежутках между сеансами, например между запусками программы или между подключениями пользователя к удаленному серверу. Чаще всего XML хранится в виде текстового файла, но для хранения зачастую используются также и табличные базы данных.Третий вариант — так называемые объектные базы данных — представляют собой некоторые прикладные пакеты ограниченного хождения. Фактически "объектная БД" — это промежуточный программный уровень, который скрывает от пользователя метод хранения XML, то есть именно то, что вы и должны реализовать.
Вопрос хранения в таблицах DB (с методом доступа SQL или не-SQL — не суть важно) носит характер компромисса. На одном полюсе — метод представления всего документа одним полем базы данных, например в таблице с двумя полями: DOCNAME, DOCXML. Преимущества такого подхода очевидны — не нужно разрабатывать никакой логики на уровне DB, все операции ограничиваются тремя действиями: добавить, удалить, выбрать. При этом можно использовать простые и эффективные хранилища: устойчивые хеш-таблицы, Беркли db или ldap. Скорость выборки документа будет максимальной — но поиск и разбор такого документа потребует времени.
Другим полюсом является хранение с высокой степенью детализации. При этом все элементы, текст, атрибуты, ребра и так далее нумеруются уникальными идентификаторами. В таблицу заносится полный перечень узлов и связей. По такой таблице проще искать узел с конкретным значением, связями, типом используя индексированный поиск и запросы, например SQL, но восстановление DOM-представления по такой таблице — задача не для слабонервных.
Конечно, многие попытаются совместить оба варианта. Можно предложить несколько комбинированных подходов, основанных на избыточности и предварительном анализе задачи. Так, если нас интересуют, в основном, только ребра (связи) определеного типа (например, поиск e-mail по нику), то можно составить таблицу отношений для этого типа связей. При этом в другом месте можно хранить полный XML текст для менее частых запросов.
Недостаток комбинирования методов — ваша программа сможет работать только с документами определенного типа, а это не совсем то, для чего создан XML. Кроме того, в условиях избыточности вам придется гарантировать согласованность параллельных вхождений. То есть, если изменяется документ, то должны измениться и все производные отношения. Или, напротив, при изменении отношения должен измениться и документ XML (возможно, такое поведение вообще следует запретить). Иными словами — вам придется скрывать используемый метод доступа (например, SQL) и реализовать свою версию "объектной базы данных", отслеживая целостность данных вручную.
Дилемма 3.Нужна ли схема?
На самом деле существует, по крайней мере, три способа определения схемы документа XML, в том числе DTD, Documet Type Definition и XMLShcema. Последняя является новейшей разработкой, находящейся на стадии стандартизации, и всем разработчикам рекомендовано придерживаться именно этого синтаксиса. Учебник для начинающих можно найти по адресу: www.w3.org/TR/xmlschema-0/.Самое главное — это то, как вы собираетесь в будущем использовать свои документы и схемы. Возможны три варианта:
1. Структура документа жестко зафиксирована в программе. Например, если вы разбираете XML, полученный как результат запроса к известной базе данных, то ваша программа может выбирать совершенно определенные элементы.
2. Вторая версия происходящего — ссылка на схему приводится в самом документе — например так, как HTML-документ ссылается на CSS. Выглядит это следующим образом:
В таком случае вы можете верифицировать документ относительно такой схемы стандартными средствами SAX и DOM. Другое дело: что делать, если документ не проходит валидацию? Но, тем не менее, это уже что-то.
3. Вариант третий — вы получаете документы из внешнего источника, ничего не зная об их схеме. Простой пример — HTML-документ произвольной структуры. В таком случае вы можете только проверить, удовлетворяет ли документ условиям валидности.
Фактически по отношению к схеме возможна только одна операция — верификация документа с простым вопросом: "удовлетворяет ли документ схеме?". Кроме того, приложение на основании схемы может распределять память — то есть создавать иерархию объектов для документа определенного типа. Учитывая тот факт, что схема является моделью данных, можно рекомендовать всегда строить схему для случаев, когда XML-данные первичны, и опираться на UML-представление структуры БД, когда XML-данные экспортируются из БД.
Дилемма 4.
DOM или SAX?
И тот, и другой метод позволяют разбирать и работать с одними и теми же XML-документами — но на разном уровне.
DOM — это общий способ представления иерархических документов, рекомендация W3C к представлению и методу доступа (фактически сокращение Document Object Model совершенно не ссылается на XML). Архитектурно DOM основан на узловом представлении, то есть объектами представляются элементы, а не связи между ними. В основе иерархии стоит класс Узла — в его функции входит двусторонняя связь по вертикали (с родительским узлом) и по горизонтали (с сестринскими узлами). У каждого узла не более одного сестринского элемента, предшествующего и следующего за ним.
От узла происходят Элементы — это такие узлы, которые дополнительно содержат два списка: список дочерних элементов и список атрибутов. Атрибуты — это пары ключ-значение. Имена ключей должны быть уникальными, но их порядок не имеет значения.
Рисунок: Иллюстрация иерархии объектов DOM. Линии представляют двусторонние связи
Особый случай элемента — Документ, который всегда является корневым элементом. Документ имеет уникальное имя и не имеет родительского элемента. Все остальные узлы имеют родительский документ, причем только один.
От узла происходят также два листовых (не имеющих дочерних) типа узла — Текст и Комментарий. В списке дочерних элементов элемента могут чередоваться узлы других элементов, текста и комментарии в любом порядке.
Помимо классов, над ними определены методы — типично "добавить узел", "удалить узел", "добавить атрибут", "удалить атрибут" и так далее.
Недостаток DOM — достаточно большие накладные расходы на обработку каждого элемента; они могут составлять даже 1000% и более от нетто данных. При обработке больших документов это может стать критическим параметром. Кроме того, некоторые операции с DOM-представлением (такие как поиск) будут связаны со сложным обходом дерева, и в общем случае они медленнее линейного поиска.
Метод доступа через DOM удобен, когда структура документа должна (или может) быть доступна в целом и легко модифицироваться — например так, как это происходит в документе Word или при формировании страницы DHTML.
SAX, Simple API for XML — это де-факто стандартный метод разбора, завязанный конкретно на XML. В основе лежит обработка событий — то есть при открытии и закрытии каждого элемента, получении текста и так далее ваша программа получает управление, сопровождаемое параметрами события. Для своей работы этот метод не требует использования больших хранилищ данных или иерархий объектов в памяти, так что можно обрабатывать очень большие объемы данных на ограниченных ресурсах (как пример практически бесконечного XML-потока представьте датчик сигналов, генерирующий бесконечную последовательность XML-элементов).
Кроме того, SAX-разбор происходит асинхронно, то есть программа не должна ждать завершающего тега для отработки уже полученных. Последнее может пригодиться, например, для отображения записей SQL-запроса еще до того, как все они будут получены. Другое применение — обрыв сеанса, допустим при нахождении одной нужной записи из миллиона.
Недостаток SAX — необходимость хранения состояния в процессе разбора XML-потока, то есть в случае со сложной и/или недетерминированной структурой придется частично реконструировать узловую модель для отслеживания уровней вложения.
SAX и DOM подходы иногда сочетают между собой. Так, веб-браузер отображает элементы в процессе получения по методу SAX, но после получения документа строит его DOM-модель для DHTML-доступа в терминах иерархии объектов.
Дилемма 5.Узлы или ребра?
DOM представляет собой модель, которая в качестве сущностей использует узлы. Этот метод хорош для хранения документа в виде объектов в памяти, но может стать значительной проблемой при хранении иерархических данных в таблицах SQL. Для хранения, напротив, более подходящим будет метод представления, в котором сущностью являются связи между узлами. Дополнительным условием является наличие у всех узлов однозначных идентификаторов, так чтобы было возможно идентифицировать два одинаковых сестринских узла. Поскольку все связи возможно представить в виде простой таблицы, то реберное представление позволяет просто (с учетом наличия идентификаторов) хранить XML в SQL базе данных с максимальной степенью детализации.Рассмотрим простой пример, иллюстрирующий сказанное. Допустим, у нас есть простая XML-схема (модель статьи):
Рисунок: Модель статьи
На основе этой модели можно создать такой валидный документ:
| |
Добавим к каждому элементу идентификатор для введения определенности в случаях, когда есть последовательность однотипных элементов (вообразите, что у вас есть отношение "первый параграф раздела", но сам-то раздел должен быть идентифицирован). Поскольку у текста и комментариев не может быть дочерних узлов, то для них можно не вводить идентификаторов. Можно ввести культуру (правило) присвоения имен узлам, можно их просто вынимать из "черного ящика" — главное, что они должны быть уникальными. Для автоматизации такой операции нам, очевидно, пригодится SAX. Условно такой документ может выглядеть так (на самом деле его нет необходимости явно генерировать):
| |
В результате мы можем составить такую таблицу ребер (убедитесь, что по этой таблице можно восстановить исходный документ).
| ORDER | Источник | Тип ребра | Приемник | Значение |
| 0 | подэлемент | article.1 | статья про XML | |
| 1 | article.1 | атрибут | codename | XML |
| 2 | article.1 | подэлемент | head.2 | |
| 3 | head.2 | подэлемент | filename.3 | |
| 4 | filename.3 | текст | file.rtf | |
| 5 | head.2 | подэлемент | author.4 | |
| 6 | author.4 | текст | Vasia Pupkin |
Можно также нумеровать атрибуты и исключить еще один столбец, но поскольку событие "прибыл атрибут" не предусмотрено в SAX, то сам процесс такой нумерации потребует дополнительного кодирования в духе foreach.
Кроме того, не показана алгебра документов — то есть способ учета документов как атомарных величин. Возможно, для этого будет создана отдельная таблица традиционного формата с полями DOC_ID, DOC_NAME, DOC_DESСRIPTION, DOC_LASTMOD и в том же духе.
Как видно, это представление легко укладывается в одну SQL-таблицу и может быть сравнительно прямолинейно восстановлено с использованием SAX. Фактически многие "объектные" базы данных работают именно таким образом, сохраняя документы в виде реберного представления и восстанавливая их в момент загрузки.
Реберное представление позволяет также оптимизировать поиск — особенно если таблица индексирована по искомому полю. Например, очень легко найти элемент (ы) с заданным индексом, именем, значением атрибута, связью и так далее.
Добавить стороки, содержащие "olga", "mike" или "mal" соответственно к файлам: folga, fmike, fmal
SED: /olga/w folga/mike/w fmike
/mal/w fmal (16.1 c.)
AWK: /olga/ {print > "folga"}
/mike/ {print > "fmike"}
/mal/ {print > "fmal"} (46.4 c.)
Добавить строки, содержащие "olga", "mike" или "mal" соответственно к файлам: folga, fmike, fmal
SED: /olga/w folga/mike/w fmike
/mal/w fmal (16.1 c.)
AWK: /olga/ {print > "folga"}
/mike/ {print > "fmike"}
/mal/ {print > "fmal"} (46.4 c.)
Добавить в начало каждой строки
sed 's/^/<\/p>
Добавление ссылок.
Ссылки на URLдобавляются с помощью ключевого слова с таким синтаксисом:%link url text inside link
Например, ссылка была создана строкой:
%link http://www.jb.man.ac.uk this link to the Jodrell home page
Добавление текста и другой информации
Весь текст заключатся в элементы para, подобные элементам p языка HTML :Кроме текстовых элементов существует много других. Далее рассмотрим, как другие элементы - примеры, списки, изображения могут быть использованы в документе.
Добавление "примеров"
Примеры добавляются применением элемента example, как показано в следующем фрагменте кода :
my $XSLTparser = XML::XSLT->new(); $XSLTparser->open_project ("file.xml", "stylesheet.xsl", "FILE", "FILE"); $XSLTparser->process_project; $XSLTparser->print_result();
Добавление "списков"
Подобно языку HTML, DocBook использует списки. Списки обозначаются элементом itemizedlist, который состоит из одного или нескольких элементов listitem :
Списки могут быть упорядочены. Для этого необходимо использовать элемент orderlist вместо itemizedlist. Добавление числового параметра (например
Добавление изображений
Изображения добавляются следующим образом :
Также обратите внимание на разметку слова Lynx. Это особенность языков разметки - формат отделен от информации. Заметка рассказывает о товаре Lynx, для которого Lynx является названием. Применяемый шаблон содержит информацию о формате вывода элемента productname, например курсивом. В следующем разделе рассмотрим дополнительные возможности разметки слов.
Разметка слов
В предыдущем разделе было показано, что слова имеют свои элементы разметки. Рассмотрим некоторые из них :
| abbrev | Сокращение - неполное написание чего - либо. Пример: |
| acronym | Сложносокращенное слово. Пример: |
| Адрес электронной почты. Пример: | |
| keyword | Ключевое слово. Пример: |
Теперь, после рассмотрения элементов DocBook, приступим к созданию PDF документа.
DocBook DTD (версия 3.1)
Необходим -DocBook DTD определяет тэги и структуру DocBook SGML документа. Если произвести изменение в DTD,например добавить новый тэг,то он перестанет быть DocBook DTD.
DocBook: The Definitive Guide
Необязательно (но рекомендуется) -Эта книга была выпущена издательством O'Reilly в октябре 1999, и представляет из себя великолепное справочное пособие для DocBook. Я считаю её великолепным практическим пособием, упор делается на XML,но тэги DocBook версии 3.1, также описаны в удобном формате. Вы можете приобрести её у вашего любимого продавца книг. Полная версия книги доступна в интернет по адресу указанному выше.
Документация
Страница ``The SGML Web Page'' () содержит огромное количество информации об SGML.Хорошее введение в SGML можно найти по адресу .
В свободном доступе есть книга Мартина Брайана SGML and HTML explained ().
Дополнение имен.
Когда Emacs ожидает ввода информации, и неясно, что нужно ввести, редактор может предложить возможные варианты.Например, в предыдущем параграфе рассматривался пример с использованием C-x C-f, когда нужно было ввести имя файла. Пусть известна текущая директория, и пусть имя файла начинается с "apr". После того, как будет нажата комбинация C-x C-f и набрано "apr", нажмите клавишу Tab. Если хотя бы один из файлов начинается на указанную комбинацию, Emacs допишет столько символов, сколько будет возможно. Другими словами, если файл только один, то имя будет написано полностью. Если файлов несколько, то дописано будет до первой различной буквы в имени. Пусть в текущей директории существуют два файла april95.txt april96.txt, тогда Emacs после нажатия Tab добавит "il9". При этом экран будет разделен пополам, а в открывшейся половине будет приведен список файлов-вариантов (см. рис. Возможные варианты имен файлов.).

Возможные варианты имен файлов.
Теперь можно допечатать имя файла, а можно переместить курсор в новое окно, установить его на нужном файле и нажать клавишу ввода. В следующем параграфе будет показано как переходить из одного окна в другое, а также как закрыть ставшее ненужным окно.
Функцию дополнения имен используют не только для "дописывания" имен файлов, но и для "дописывания" длинных команд редактора в командной строке, таких как add-change-log-entry-other-window. "Дописывание" также полезно при работе с именами буферов.
Дополнительные источники
Tobias Oetiker, Hubert Partl, Irene Hyna, and Elisabeth Schlegl, The Not So Short Introduction to LaTeX. (Знаменитое "Не столь краткое введение в LaTeX" -- прим. пер.). В linux-системе можно провести поиск lshort или найти на www.ctan.org ближайшее к вам зеркало.Leslie Lamport, LaTeX -- User's Guide and Reference Manual, Addison Wesley (Руководство по LaTeX, написанное автором пакета Лесли Лампортом -- прим. пер.).
Donald E. Knuth, The TeXbook, Addison Wesley. (Основная книга по TeX, написанная автором -- Доналдом Кнутом. Издавалась на русском языке -- прим. пер.).
Если вам повезло, то в вашем LaTeX есть руководство в виде веб-страницю, Hypertext Help with LaTeX. В моем дистрибутиве S.u.S.E. оно установлено по адресу file:///usr/share/texmf/doc/latex/latex2e-html/ltx-2.html
Веб-руководство не может заменить начинающему ни Краткого руководства ни книги Лампорта. Но они очень полезны для "пользователя промежуточной квалификации", если под рукой нет печатного руководства.
Для русских читетелей -- выдержка из FAQ по TeX:
Главная сyществyющая на pyсском языке книга о системе TeX -- это "Все пpо TeX" Дональда Кнyта. Это книга вышла в издательстве "AO RDTeX" в 1993 годy и до сих поp пpодается в книжных магазинах. Однако для pаботы в совpеменных веpсиях (LaTeX2e) она не нyжна.
Издательская система LaTeX 2e. --- Hовосибиpск: Cибиpский хpоногpаф, 1998.
вышедшей в 1995 (немного yстаpело); нyжно именно 2 издание.
А.Cамаpин "The LaTeX Companion". Пеpевод называется:
"Пyтеводитель по пакетy LaTeX и его pасшиpению LaTeX2e".
каталоге systems/knuth/. По лицензии вы не можете использовать TeX,
чтобы свеpстать эти книги, но для личного использования все же их
легко откомпилиpовать.
to LaTeX", сделанный Боpисом Тоботpасом, находящийся на
http://xtalk.price.ru/tex/
какое-то количество докyментации на конкpетные пакеты, входящие в его
состав. Поищите y себя, напpимеp, каталог texmf/doс.
М. Гyссенс, С. Ратц и дp. Пyтеводитель по пакетy LaTeX и его
Web-пpиложениям: Пеp. с англ. -- М.: Миp, 2001.-- 604с., ил., CD ROM.
Добавлено переводчиком:)
В следующем месяце мы обсудим DocBook
Дополнительные материалы
В следующем месяце: Texinfo
Домашняя страница Texinfo, на которой можно найти много справочной информации
Существующие конвертеры Texinfo перечислены здесь: http://www.fido.de/kama/texinfo/texinfo-en.html
ДпышК
+ъьАпщщКЕ рКХу зчэпщт тчАБпБчГщч тшО АчвтпщьО ь ьвэущущьО БузАБп р яЦДуЮу Emacs; ячшуу ъЮчтрьщЦБКу зчэпщтК Emacs шьХЛ ъчврчшОНБ тушпБЛ МБч ъЮчИу. +ч тшО Бчсч ГБчяК АчЕЮпщьБЛ шНячы БузАБ, рК тчшжщК ъчэуАБьБЛ усч р Дпыш. дпышК -- МБч ьэущчрпщщКу утьщьФК БузАБп, зчБчЮКу ЕЮпщОБАО чъуЮпФьчщщчы АьАБуэчы, ГБчяК рК эчсшь ъчшЦГьБЛ ьЕ ъчвжу ъч ьэущь. гБчяК ъЮчАэчБЮуБЛ ьшь ьАъчшЛвчрпБЛ АчтуЮжьэчу Дпышп А шНячы ФушЛН, рзшНГпО ЮутпзБьЮчрпщьу А ъчэчИЛН Emacs, рК тчшжщК вптпБЛ усч ьэО.юпААэчБЮьэ Дпыш А ьэущуэ `/usr/rms/foo.c'. ¦шО Бчсч ГБчяК щпГпБЛ ЮутпзБьЮчрпщьу МБчсч Дпышп р Emacs, щпяуЮьБу
C-x C-f /usr/rms/foo.c RET
TтуАЛ ьэО Дпышп тпуБАО зпз пЮсЦэущБ тшО зчэпщтК C-x C-f
(find-file). мБп зчэпщтп ьАъчшЛвЦуБ тшО АГьБКрпщьО пЮсЦэущБп эьщьяЦДуЮ, п ГБчяК впруЮХьБЛ пЮсЦэущБ, рК щпяьЮпуБу RET
(АэчБЮьБу Юпвтуш ).
Emacs ъчтГьщОуБАО МБчы зчэпщту, чяЮпИпОАЛ з ЦзпвпщщчэЦ ДпышЦ: АчвтпрпО яЦДуЮ, зчъьЮЦО р щусч АчтуЮжьэчу МБчсч Дпышп ь впБуэ ъчзпвКрпО рпэ яЦДуЮ тшО ЮутпзБьЮчрпщьО. ¦Ашь рК ьвэущьшь МБчБ яЦДуЮ, рК эчжуБу АчЕЮпщьБЛ щчрКы БузАБ р Дпышу, щпъуГпБпр C-x C-s
(save-buffer). мБч тушпуБ ьвэущущьО ъчАБчОщщКэь ъЦБуэ зчъьЮчрпщьО ьвэущущщчсч АчтуЮжьэчсч яЦДуЮп Ащчрп р Дпыш `/usr/rms/foo.c'. ¦ч МБчсч рпХь ьвэущущьО АЦИуАБрЦНБ БчшЛзч рщЦБЮь Emacs, п Дпыш `foo.c' щу ьвэущОуБАО.
гБчяК АчвтпБЛ Дпыш, щптч ъЮчАБч чяЮпБьБЛАО з щуэЦ А ъчэчИЛН C-x C-f, зпз уАшь яК чщ Цжу АЦИуАБрчрпш. Emacs АчвтпАБ ъЦАБчы яЦДуЮ, зЦтп рК эчжуБу рАБпрьБЛ БузАБ, зчБчЮКы ЕчБьБу впщуАБь р Дпыш. юупшЛщКы Дпыш АчвтпуБАО, зчстп рК АчЕЮпщОуБу МБчБ яЦДуЮ А ъчэчИЛН C-x C-s.
¦чщуГщч, чя ьАъчшЛвчрпщьь Дпышчр эчжщч ЦвщпБЛ счЮпвтч ячшЛХу. аэчБЮьБу Юпвтуш .
Другие полезные свойства PSGML
PSGML обладает слишком широкими возможностями, чтобы их можно было описать в одной главе. Однако, несколько наиболее ценных свойств заслуживают особого внимания.Другие стандарты ISO :
ISO 646 - 1983, ISO 7bit coded character set for information interchange. Same as 7bit ASCII.ISO 2022 - 1986, ISO 7bit and 8bit coded character sets; Code extension techniques. Using the graphic characters and encoding later defined in is8859-1.
ISO 4873 - 1986, ISO 8bit code for information interchange; Structure and rules for implementation. Using the graphic characters and encoding later defined in is8859-1.
ISO 6429 - 1988, ISO 7bit and 8bit coded characters sets; Additional control functions for character-imaging devices.
ISO 6937/2 - coded character sets for text communication; contains part 2 on latin alphabetic and non-alphabetic graphic characters.
ISO 9036 - Arabic 7bit coded character set for information interchange.
ASMO 449 - 7bit coded Arabic character set for information interchange.
ISO/IEC 10367 - Repertoire of standardized coded graphic character sets for use in 8bit codes.
ISO/IEC 10646 - Universal Coded Character Set, same as Unicode. UCS - same as Universal Coded Character Set.
JIS x0208 - Japanese Industrial Standard codeset.
KS C5601 - Korean Standard codeset.
CNS 11643 - Chinese (ROC) codeset.
GB 2312 - Chinese (PRC) codeset.
Содержание
Last changed 08-10-1999.
DSSSL
Необходим -Document Style Semantics and Specification Language говорит jade как визуализировать SGML документ в печатную или онлайновую форму. DSSSL это то,что конвертирует тэг title в
тэг в HTML,или bold, 14 point Times Roman для RTF,например. Документация к DSSSL расположена по адресу http://nwalsh.com/docbook/dsssl/db152d.zip. Заметьте, что модификация DSSSL не скажется на самом DocBook DTD. Она просто изменит то как выглядит визуализированый текст. LDP использует модифицированный DSSSL, который предоставляет оглавление.
Два типа разметки
Собственно SGML не является языком разметки документов - это метаязык описания языков разметки. А языки разметки, типа HTML, представляют собой только его приложения. Изначально слово "разметка" (markup) обозначало набор специальных символов, которые вставлялись в текст в качестве указания компьютеру или принтеру о необходимости сменить стиль символа, например, на полужирный или курсив. Со временем появилась возможность не только менять стиль символов, но и устанавливать параметры, общие для всего абзаца, страницы или главы (межстрочный интервал, отступы, поля и так далее). Для каждого такого параметра приходилось вводить свои спецсимволы, которые по традиции назывались разметкой. Сейчас под разметкой понимают любой набор специальных символов, которые определяют структуру текста.
Разделяют два типа разметки: визуальную и структурную. Визуальная разметка - это набор спецсимволов, которые определяют внешний вид документа. Данный набор символов определяет стили символов, размеры страницы, расстояние между строками и другие физические параметры текста. Структурная же разметка определяет символы, которые разделяют текст на определенные логические части. Примером такой разметки могут служить абзацы, списки, заголовки и другие элементы текста. Оба типа разметки присутствуют в любом документе, но в современных текстовых редакторах преобладает визуальная разметка - структурная же, если и есть, то достаточно бедная: абзацы, колонтитулы, списки и заголовки (правда, чаще это просто тип абзаца). Впрочем, многие редакторы позволяют вводить новые типы абзацев, чтобы придать тексту определенную структуру, однако этого явно недостаточно.
Следует отметить, что визуальная разметка различна для разных платформ. Это и понятно, так как каждая компания, разрабатывающая программное обеспечение, использовала свой набор специальных символов для описания внешнего вида текста. Необходимость же переноса документов с одной платформы на другую заставила абстрагироваться от визуальной разметки и определять набор спецсимволов для выделения структурных элементов текста. В результате получилась структурная разметка, которую можно легко перенести на любую другую платформу, так как программное обеспечение, работающее на этой платформе, "знает", как должен выглядеть каждый элемент структуры. Структурная разметка позволяет абстрагироваться от конкретной платформы и легко переносить документы в другие текстовые редакторы и вычислительные системы.
¦Ечт ь рКЕчт ьв Emacs
+яКГщч тшО рКвчрп Emacs тчАБпБчГщч ъЮчАБч щпяЮпБЛ `emacs' р чячшчГзу. Emacs чГьИпуБ МзЮпщ ь чБчяЮпжпуБ щпГпшЛщКу АъЮпрчГщКу АрутущьО ь Црутчэшущьу чя прБчЮАзьЕ ъЮпрпЕ. +узчБчЮКу чъуЮпФьчщщКу АьАБуэК АяЮпАКрпНБ рАу щпяЮпщщчу ъуЮут Буэ, зпз Emacs АБпЮБЦуБ; чщь щу тпНБ Emacs рчвэчжщчАБь ъЮутчБрЮпБьБЛ МБч. ©чМБчэЦ ЮузчэущтЦуБАО ъчтчжтпБЛ, ъчзп Emacs чГьАБьБ МзЮпщ, ь БчшЛзч ъчБчэ щпяЮпБЛ рпХЦ ъуЮрЦН зчэпщтЦ ЮутпзБьЮчрпщьО.
¦Ашь рК впъЦАзпуБу Emacs ьв чзщп А чячшчГзчы р АьАБуэу X Windows, впъЦАзпыБу усч р Дчщчрчэ Юужьэу А ъчэчИЛН `emacs&'. бчстп Emacs щу АрОжуБ чзщч чячшчГзь, ь рК АэчжуБу рКъчшщОБЛ тЮЦсьу зчэпщтК, ъчзп Emacs ЮпячБпуБ р АрчьЕ X-чзщпЕ. ¦К эчжуБу щпГьщпБЛ ъуГпБпБЛ зчэпщтК, зпз БчшЛзч щпъЮпрьБу ррчт А зшпрьпБЦЮК рч ДЮуыэ Emacs.
¦чстп Emacs щпГьщпуБ ЮпячБЦ, чщ АчвтпуБ яЦДуЮ, щпвКрпуэКы `*scratch*'. мБч яЦДуЮ, зчБчЮКы ъЮутчАБпршОуБАО рпэ ъуЮрчщпГпшЛщч. ¦ЦДуЮ `*scratch*' ьАъчшЛвЦуБ Юужьэ Lisp Interaction; рК эчжуБу щпяьЮпБЛ р щуэ ¦ьАъ-рКЮпжущьО ь рКГьАшОБЛ ьЕ, шьяч рК эчжуБу ъЮчьсщчЮьЮчрпБЛ БпзЦН рчвэчжщчАБЛ ь ъЮчАБч ъьАпБЛ р щуэ впэуБзь. (¦К эчжуБу вптпБЛ тшО МБчсч яЦДуЮп тЮЦсчы чАщчрщчы Юужьэ, ЦАБпщчрьр р рпХуэ Дпышу ьщьФьпшьвпФьь ъуЮуэущщЦН initial-major-mode. аэчБЮьБу Юпвтуш .)
Tв пЮсЦэущБчр р зчэпщтщчы АБЮчзу чячшчГзь эчжщч ЦзпвпБЛ ДпышК, з зчБчЮКэ рК ЕчБьБу чяЮпБьБЛАО, ¦ьАъ-ДпышК тшО впсЮЦвзь ь ДЦщзФьь, зчБчЮКу яЦтЦБ рКврпщК. аэчБЮьБу Юпвтуш . +ч эК щу ЮузчэущтЦуэ Бпз тушпБЛ. мБп рчвэчжщчАБЛ АЦИуАБрЦуБ ъЮуьэЦИуАБрущщч тшО АчрэуАБьэчАБь А тЮЦсьэь ЮутпзБчЮпэь.
+щчсьу ЮутпзБчЮК АъЮчузБьЮчрпщК Бпз, ГБч впъЦАзпНБАО Ащчрп зпжтКы Юпв, зчстп рК ЕчБьБу ЮутпзБьЮчрпБЛ. ¦К ЮутпзБьЮЦуБу чтьщ Дпыш ь впБуэ рКЕчтьБу ьв ЮутпзБчЮп. ¦ АшутЦНИьы Юпв, зчстп рК ЕчБьБу ЮутпзБьЮчрпБЛ тЮЦсчы Дпыш ьшь БчБ жу АпэКы, рК тчшжщК впъЦАБьБЛ ЮутпзБчЮ Ащчрп. а Бпзьэь ЮутпзБчЮпэь ьэууБ АэКАш ьАъчшЛвчрпБЛ пЮсЦэущБ зчэпщтщчы АБЮчзь, ГБчяК АччяИьБЛ, зпзчы Дпыш яЦтуБ ЮутпзБьЮчрпБЛАО.
+ч щу ьэууБ АэКАшп впъЦАзпБЛ щчрКы Emacs зпжтКы Юпв, зчстп рК ЕчБьБу ЮутпзБьЮчрпБЛ тЮЦсчы Дпыш. а чтщчы АБчЮчщК, МБч яКшч яК ЮпвтЮпжпНИу эутшущщч. а тЮЦсчы АБчЮчщК, ъЮь МБчэ щу ьАъчшЛвчрпшпАЛ яК АъчАчящчАБЛ Emacs чяЮпИпБЛАО з щуАзчшЛзьэ Дпышпэ вп чтьщ АупщА ЮутпзБьЮчрпщьО. T ъЮь МБчэ БуЮОшьАЛ яК щпзчъшущщКу АрутущьО ч зчщБузАБу: ЮусьАБЮК, ьАБчЮьО чБэущК ьвэущущьы, АъьАчз ъчэуБчз ь тЮЦсьу.
юузчэущтЦуэКы АъчАчя ьАъчшЛвчрпщьО GNU Emacs -- впъЦАзпБЛ усч БчшЛзч чтьщ Юпв АЮпвЦ ъчАшу рЕчтп р АьАБуэЦ ь тушпБЛ рАу рпХь ЮутпзФьь р чтщчэ ь Бчэ жу ъЮчФуААу Emacs. ¦пжтКы Юпв, зчстп рК ЕчБьБу ЮутпзБьЮчрпБЛ тЮЦсчы Дпыш, рК рКвКрпуБу усч р Цжу АЦИуАБрЦНИьы Emacs, зчБчЮКы р зчщФу зчщФчр ъЮутщпвщпГущ, ГБчяК ЕЮпщьБЛ эщчсч Дпышчр, счБчрКЕ тшО ЮутпзБьЮчрпщьО. +яКГщч рК щу ЦщьГБчжпуБу Emacs тч БуЕ ъчЮ, ъчзп щу ЮуХьБу рКыБь ьв АьАБуэК. аэчБЮьБу Юпвтуш , тшО ъчшЦГущьО ьщДчЮэпФьь ч ЮутпзБьЮчрпщьь щуАзчшЛзьЕ Дпышчр чтщчрЮуэущщч.
Компания Computer Innovations известна переносом
Компания Computer Innovations известна переносом собственных компиляторов для языков С и С++, а также средств разработки на различные платформы (MS-DOS, UnixWare, LynxOS, QNX и др.). Разработанный компанией редактор Edit*2000 поставляется с хорошей документацией, достаточно легок в освоении и использовании, хотя имеет менее продуманный интерфейс, чем, скажем, Siren Editor. Назначение функциональных клавиш произведено на интуитивном уровне. В целом редактор может быть эффективно использован для проектов среднего уровня. В числе недостатков Edit*2000 отсутствие макроязыка, некоторых базовых средств форматирования текста й программной поддержки (тэги, языковые шаблоны).
Edit
Содержание пункта Edit также достаточно тривиально, это:
Следует заметить, что вставка выделенного фрагмента может осущетсвляться не только через меню, но и стандартным для Linux способом - щелчком средней кнопки мыши. При этом важно не фиксировать курсор в позиции вставки - это автоматически приводит к снятию выделения и очищению буфера. В этом проявляется отличие NEdit от, скажем, редакторов для KDE, где выделенный фрагмент остается в буфере и после снятия выделения, вплоть до выделения нового фрагмента, и может быть вставлен повторно в новой позиции.
Однако и в NEdit с помощью мыши можно многократно вставлять выделенный фрагмент, так после первой вставки щелчком средней кнопки выделение не снимается, и процедуру можно повторять (или - удалить выделенный фрагмент, нажав клавишу Del, не меняя положения курсора) до фиксации курсора в новой позиции; таковая происходит после нажатия любой из клавиш управления курсором, но не при перемещении по телу документа с помощью линейки скроллинга.
Вообще говоря, в терминологии NEdit различается два типа выделения: первичное (primary, highlighted text) и вторичное (secondary, underlined text), десйствия над которыми различны.
Первичное выделение осуществляется протаскиванием курсора мыши при нажатой ее левой кнопке или стрелками указателя курсора при нажатой клавише Shift, как и в Windows. Выделенный таким образом фрагмент может быть скопирован, удален и вставлен через меню или соответствующие клавишные комбинации, а также вставлен щелчком средней клавиши мыши.
Первичное выделение возможно не только для строк, но и для прямоугольных фрагментов. Оно соуществляется мышью обычным способом, но при нажатой клавише Ctrl. С выделенным прямоугольным фрагментом возможны те же действия, что и со строчным. Единственно, прямоугольный фрагмент может быть выделен только при использовании какой-либо моноширинной гарнитуры в качестве экранного шрифта (а NEdit, как будет показано в разделе о настройках, в отличие от большинства текстовых редакторов, допускает использование и пропорциональных гарнитур).
Вторичное выделение осуществляется только мышью. Оно служит для быстрой вставки фрагмента в текущую позицию курсора. Чтобы произвести вторичное выделение, нужно зафиксировать курсор в позиции для вставки, затем навести его (не фиксируя!) на начало выделяемого фрагмента, нажать среднюю кнопку мыши и вести курсор до требуемого места. После этого средняя кнопка мыши отпускается - и выделенный фрагмент (выделение при этом пропадает) волшебным образом копируется в новую позицию.
Если описанную операцию выполнить при нажатой клавише Shift, произойдет перемещение выделенного фрагмента. То есть - точно так же, как и при перетаскивании мышью в Windows (drag'n'drop). Прием, насколько мне известно, не имеющий аналогов в других Linux-приложениях, многие из которых не поддерживают drag'n'drop как таковой.
Следующий пункт -
Emacs (PSGML)
Необязательно -В Emacs есть режим написания SGML называемый psgml. Автор этого документа с удовольствием примет любую информацию от людей имеющих опыт работы в этом режиме (пишите на e-mail). Psgml - это главный режим в Emacs, разработанный для написания SGML и XML документов. Он предоставляет " подсветку синтаксиса " и "приятную печать" свойства, которые отделяют SGML тэги от содержания, способ вставки "тэгов" как альтернативу их ручному вводу и способность проверки правильности документа (соответствие его DTD) во время его написания. Для пользователей Emacs это великолепный способ набора таких документов и многие считают его наиболее универсальным и гибким, среди всех доступных SGML утилит. Он работает с DocBook,LinuxDoc и другими DTD одинаково хорошо.
Encoding.
Наиболее важным понятием при обработке символов является понятие Coded Character Set (CCS).Давайте попробуем разобраться, что это такое.
Как мы уже ранее выяснили, существуют определенные "наборы символов" для каждого конкретного языка (алфавит). Набор таких "абстрактных" символов называется character repertoire.
Для автоматической обработки, хранения и передачи символов необходимо каждый "абстрактный" символ перевести в числовую форму для размещения в ячейках ЭВМ.
C "программистской" точки зрения это задача совершенно тривиальна. Нужно просто присвоить каждому символу
(абстрактному !) определенное число, которое и хранить в памяти ЭВМ, то есть закодировать
символ. Другими словами, определить схему кодирования : CES "character encoding scheme". Например, условимся, что символу 'A' - LATIN CAPITAL LETTER A соответствует число (код) 61. И наоборот, условимся , что число (integer) 61 будет означать ни что иное, как символ 'A'. Таким образом образуется пара
(61, 'A') код - символ. И наоборот, символ - код. Соответствие однозначное.
Пусть у нас теперь есть набор
символов : character repertoire {'A','B','C'} (это маленькое подмножество символов латинского алфавита). Продолжим кодирование. Тогда из этого множества {'A','B','C'} у нас образуется множество пар : {(61,'A'),(62,'B'),(63,'C')}.
А теперь внимание ! Вот это самое пресловутое "множество пар" имеет колоссальное значение ! Формально оно называется CCS : coded character set. Именно ему присваивается имя : ASCII, ISO_8859-5 или KOI8-R
! Перечитать еще раз !
Давайте рассмотрим подробнее. Итак :
| 'A' | - это абстрактный символ, "character" |
| набор символов {'A','B','C'} | - "character repertoire" |
| соответствие : символ 'A' <--> число 61 | - это CES "character encoding scheme", или просто encoding |
| число 61 | - это "code point". |
| набор чисел {61,62,63} | - это "codeset" или "code space". |
| набор пар {(61,'A'),(62,'B'),(63,'C')} | - это CCS "coded character set", или сокращенно charset. |
Что собой представляет CCS
?
Фактически, CCS можно рассматривать как базу данных, в которой хранятся a)символы, b)коды
и c)схема соответствия
символов и кодов (CES - character encoding scheme) например в виде обычной таблицы - map (charmap). Тогда допустимы операции :
CES('A')=61 CES(61)='A'
Фактически это будет обозначать операции выборки из "базы" :
SELECT CODE FROM CCS WHERE CHAR='A' SELECT CHAR FROM CCS WHERE CODE=61
Естественно, CCS-ов существует огромное множество : ASCII, KOI8-R, ISO_8859-1 или даже UNICODE. И конечно же каждому CCS соответствует его специфицеская CES.
Как работает CCS ?
Очень просто. Пусть у нас есть поток символов ("абстрактных") : "ABBACABCC". Тогда применение CCS к этому потоку (тексту) "ABBACABCC" будет равно применению его CES
к каждому символу в потоке :
CES('A') CES('B') CES('B') CES('A')...
и мы получим поток чисел (кодов) : 61 62 62 61 63 61 62 63 63.
Аналогично, применение CCS к потоку кодов даст поток "абстрактных символов".
Отсюда следует один очень простой вывод : при хранении текста (потока символов) мы должны
также хранить CCS ! А вот где его хранить - это вопрос. Можно в том же потоке ( "In-band" или "MARK-UP" способ). Можно где-то снаружи потока ("Out-band" способ). Можно хранить лишь имя (ссылку на) CCS.
К сожалению, в стандартном POSIX
(например на stdin/stdout) мы имеем только
потоки кодов. А вся информация о CCS
потеряна. Подробнее про это можно прочитать в о локализации POSIX.
Errors-e
rusconv v.3.11.
List of warnings and error messages.
error: unrecognized flag 'flag_name'.
Check spelling of flags. Make sure that you run right version of rusconv (3.11).
Example:
rusconv -koi +windows -crlf2cr sample.html
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: unrecognized flag '+windows'.
try 'rusconv -h' or read the manual for help.
error: argument missed after 'define extension'.
define extension: ext, aext, lext, kext, mext, wext
This error occurs when list of arguments finished by command of extension defining. When correcting this problem do not forget to add file names for converting.
Example:
rusconv -koi2win -o -ext
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: unrecognized flag '-koi2win'.
try 'rusconv -h' or read the manual for help.
error: 'define extension': extension yet defined.
define extension: ext, aext, lext, kext, mext, wext
You can't define extension for the one encoding twice.
Example:
rusconv -alt +koi +win +lat -kext k -wext w -wext l readme.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: 'wext l': extension yet defined.
try 'rusconv -h' or read the manual for help.
error: 'define extension': extension too long.
Please use not more than 48 symbols.
define extension: ext, aext, lext, kext, mext, wext
Do you ever see such long extensions?
Example:
rusconv -u2d -ext 01234567890123456789012345678901234567890123456789
"file.with very long extension"
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: 'ext 01234567890123456789012345678901234567890123456789': extension too long. Please use not more than 48 symbols.
try 'rusconv -h' or read the manual for help.
error: flags '-s' and '-v' can't be used together.
To walk silently and talkative simultaniously - it is impossible. Message is printed in spite of flag '-s'.
Example:
rusconv -s -alt +win -v *.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags '-s' and '-v' can't be used together.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: flags 'close' and 'noclose' can't be used together.
Error can be occured only in windows version. To keep window on desktop and to don't keep - it is impossible. Window with this error printed will not be closed in spite of flag '-close'. In DOS and UNIX versions this flags are ignored.
Example:
rusconv -close -u2d -noclose dummy.test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'close' and 'noclose' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'alias' and 'alias' can't be used together.
error: flags 'alias' and 'from encoding' can't be used together.
error: flags 'alias' and 'cr2crlf or crlf2cr' can't be used together.
alias: unix2dos, unix2win, dos2unix, dos2win, u2d, u2w, d2u, d2w
from encoding: '-alt', '-koi', '-mac', '-win'
Abbreviation unix2dos (u2d) means '-koi +alt -cr2crlf', unix2win (u2w) -- '-koi +win -cr2crlf', win2unix (w2u) -- '-win +koi -crlf2cr', dos2unix (d2u) -- '-alt +koi -crlf2cr'. If you use abbreviations you automatically defines source encoding and how to change type of end of lines. You can use flags u2d and u2w because they are not contadictory.
Example:
rusconv -u2d -crlf2cr *.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'unix2dos(u2d)' and 'crlf2cr' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'from encoding 1' and 'from encoding 2' can't be used together.
from encoding: '-alt', '-koi', '-mac', '-win'
You can specify only one source encoding.
Example:
rusconv -alt -win +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags '-alt' and '-win' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'cr2crlf' and 'crlf2cr' can't be used together.
It is impossible to change type of line ends from DOS format to UNIX format and back simultaniouosly.
Example:
rusconv -crlf2cr -cr2crlf +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'cr2crlf' and 'crlf2cr' can't be used together.
try 'rusconv -h' or read the manual for help.
error: you forgot to specify source encoding.
Rusconv don't know from what encoding to convert. But you can change type of line ends without changing of encoding.
Example:
rusconv -crlf2cr +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: you forgot to specify source encoding.
try 'rusconv -h' or read the manual for help.
error: you forgot to specify target encoding.
Rusconv don't know to what encoding to convert. But you can change type of line ends without changing of encoding.
Example:
rusconv -alt -crlf2cr textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: you forgot to specify target encoding.
try 'rusconv -h' or read the manual for help.
error: flags 'ext' and 'define extension' can't be used together.
define extension: aext, lext, kext, mext, wext
Flag 'ext' is interpreted as one of flags 'aext', 'lext', 'kext', 'mext', 'wext'. So if you use this flag and its interpretation then you defines extension for encoding twice. It is incorrect.
Example:
rusconv -alt +koi +win -kext k.txt -ext w.txt textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'ext' and 'kext' can't be used together.
try 'rusconv -h' or read the manual for help.
error: only one target encoding can be used with flag 'ext'.
Consider next example. Here file data.txt
is converted from alternative encoding to KOI and windows encodings. Results should be placed in different files. But in this example names for both files are the same - 'data.any'.
Example:
rusconv -alt +koi +win -ext any data.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: only one target encoding can be used with flag 'ext'.
try 'rusconv -h' or read the manual for help.
error: only one target encoding can be used with file overwriting.
Results of converting should be placed in different files. But in mode of overwriting files it is impossible.
Example:
rusconv -alt +koi +win -o data.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: only one target encoding can be used with file overwriting.
try 'rusconv -h' or read the manual for help.
warning: 'argument' is a directory, skipping.
List of file contains directory. Rusconv skips this argument. This warning is very valuable in UNIX-like systems where work with metachars is a duty of operating system which use directory names and file names equally. So rusconv can get directory in argument list.
In next example rusconv gets as a file list 'dir1 dir2 .'. Last directory in list is a output directory. Directories 'dir1' and 'dir2' are skipped. So there is no files to convert.
Example:
ls -l
drwxrwxr-x 2 w_re w_re 1024 Oct 15 22:55 dir1
drwxrwxr-x 2 w_re w_re 1024 Oct 15 22:55 dir2
rusconv -v -u2w -o dir1 dir2 .
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'dir1' is a directory, skipping.
warning: 'dir2' is a directory, skipping.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: file name too long: 'file name'.
Full file name (file directory + name with extension) is longer then allowed by operating system. Usually it is near 250 bytes. If you get this message try to use instead of full path (for example, c:\long-path\...\my-file.txt) relative path (for example, ..\myfile.txt).
Example:
rusconv -win +alt 0_1_2..._279_280
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file name too long: '0_1_2..._279_280'.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: file 'file name' does not exists.
Check you spelling, make sure that file is really exists and is not hidden or system. This message also can be printed if you use metachars and no any appropriate file was found.
Example:
rusconv -u2d dir\nosuch*.file
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file 'dir\nosuch*.file' does not exists.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
warning: 'file' is read-only, skipping.
This message is printed in mode of file overwriting. File is read-only, so rusconv shouldn't change its content.
Example:
attrib readonly\*.*
A FILE1.TXT .....\readonly\file1.txt
A R FILE2.TXT .....\readonly\file2.txt
rusconv -win2unix -o readonly\*.*
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'readonly\file2.txt' is read-only, skipping.
readonly\file1.txt -> .....\readonly\rcE203.TMP -> readonly\file1.txt: ok.
1 file(s) converted.
warning: pattern 'pattern' produce no files.
This message is printed when no any appropriate file was added to converting list. It can be if, for example, this files are hidden or system. This message is absent in UNIX version because in UNIX work with metachars is a duty of operating system.
Example:
attrib readonly\*.*
A R FILE1.TXT .....\readonly\file1.txt
A R FILE2.TXT .....\readonly\file2.txt
rusconv -win2unix -o readonly\*.*
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'readonly\file1.txt' is read-only, skipping.
warning: 'readonly\file2.txt' is read-only, skipping.
warning: pattern 'readonly\*.*' produce no files.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: no files to convert.
Check that you write file list. Also it is possible that items of file list are ignored due some reasons.
Example:
rusconv -win +alt readme.txt]
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file 'readme.txt]' does not exists.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: can't make name for temporary file.
It is a very difficult to get this message. In windows version this possible if you specify file overwriting on write-protected disk A:\.
Example:
rusconv -alt +koi -o a:\test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\TEST: error: can't make name for temporary file.
0 file(s) converted.
error: can't open file 'file name'.
Check that file is really exists. If you work in network make sure that you have read writes.
Example:
ls -l html/*
--w--w---- 1 w_re w_re 4095 Oct 15 22:58 html/f1.html
--w--w---- 1 w_re w_re 4096 Oct 15 22:58 html/f1.html
--w--w---- 1 w_re w_re 4097 Oct 15 22:58 html/f1.html
rusconv -w2u -o html/*
error: can't open file 'html/f1.html'.
error: can't open file 'html/f2.html'.
error: can't open file 'html/f3.html'.
error: can't create file 'file name'.
Disc may be write-protected. Make sure that don't exists file with the same name but with attribute 'read-only'. Check that you don't use not allowed symbols in file name.
Example:
rusconv -win +lat -ext win/lat test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
.\test -> .\test.win/lat: error: can't create file '.\test.win/lat'.
0 file(s) converted.
error: error reading file 'file name'.
File may be damaged. Rusconv finishes any work with this file. Output files will have text which was converted before error occured.
Example:
rusconv -crlf2cr a:\badfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\badfile.txt -> .\badfile.cr: error: error reading file 'a:\badfile.txt'.
0 file(s) converted.
error: error writing file 'file name'.
Disc where file is placed may be damaged or full. Rusconv finishes any work with this file. Output files will have text which was converted before error occured.
Example:
rusconv -o -crlf2cr a:\longfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\longfile.txt -> A:\rcC094.TMP -> a:\longfile.txt: error: error writing file 'A:\rcC094.TMP'.
0 file(s) converted.
error: can't replace file 'file name' by file 'temporary file'.
Overwriting of file consist of three stages. In first stage source file converts to temporary file. When source file deleted. On last stage temporary file receive name of source file. This message is printed if error occured during this stages.
We can't get this message, so no example.
error: not enough memory.
This error should not be happen. See description of next error, 'internal error'.
We can't get this message, so no example.
error: sorry, internal error has been detected
in source file 'source file name' on line line number.
please inform us about it by email prof@beta.math.spbu.ru
This error should not be ever happen. A lot of testing maked rusconv very stable. But if you get this message try collect as much as possible information when and why its happen. Then send us E-MAIL with description (address is prof@beta.math.spbu.ru).
We can't get this message, so no example.
errors-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Errors
rusconv v.3.11.
Сообщения об ошибках.
error: unrecognized flag 'flag_name'.
ошибка: неизвестный флаг 'имя_флага'.
Проверьте правильность написания флага. Убедитесь, что Вы запускаете правильную версию программы rusconv.
Пример:
rusconv -koi +windows -crlf2cr sample.html
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: unrecognized flag '+windows'.
try 'rusconv -h' or read the manual for help.
error: argument missed after 'define extension'.
ошибка: нет аргумента после флага 'определить расширение'.
define extension: ext, aext, lext, kext, mext, wext
Эта ошибка возникает, если список аргументов заканчивается командой переопределения расширения, а само расширение не указано. Исправляя эту ошибку, не забудьте добавить имена файлов для перевода.
Пример:
rusconv -koi2win -o -ext
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: unrecognized flag '-koi2win'.
try 'rusconv -h' or read the manual for help.
error: 'define extension': extension yet defined.
ошибка: 'определить расширение': расширение уже задано.
define extension: ext, aext, lext, kext, mext, wext
Вы для одной и той же кодировки задаете расширение больше одного раза.
Пример:
rusconv -alt +koi +win +lat -kext k -wext w -wext l readme.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: 'wext l': extension yet defined.
try 'rusconv -h' or read the manual for help.
error: 'define extension': extension too long.
Please use not more than 48 symbols.
ошибка: 'определить расширение': слишком длинное расширение.
Используйте не более 48 символов.
define extension: ext, aext, lext, kext, mext, wext
Вы когда-нибудь видели такие большие расширения?
Пример:
rusconv -u2d -ext 01234567890123456789012345678901234567890123456789
"file.with very long extension"
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: 'ext 01234567890123456789012345678901234567890123456789': extension too long. Please use not more than 48 symbols.
try 'rusconv -h' or read the manual for help.
error: flags '-s' and '-v' can't be used together.
ошибка: флаги '-s' и '-v' вместе использовать нельзя.
Одновременно работать тихо и разговорчиво - это невозможно. Сообщение об ошибке выводится, несмотря на флаг молчания '-s'.
Пример:
rusconv -s -alt +win -v *.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags '-s' and '-v' can't be used together.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: flags 'close' and 'noclose' can't be used together.
ошибка: флаги 'close' и 'noclose' вместе использовать нельзя.
Ошибка возникает только в windows-версии. Одновременно позволять и не позволять системе автоматически закрывать окно, в котором запущен rusconv - это невозможно. При данной ошибке окно остается незакрытым, несмотря на флаг 'close'. В dos и unix-версиях эти флаги игнорируются.
Пример:
rusconv -close -u2d -noclose dummy.test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'close' and 'noclose' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'alias' and 'alias' can't be used together.
error: flags 'alias' and 'from encoding' can't be used together.
error: flags 'alias' and 'cr2crlf or crlf2cr' can't be used together.
ошибка: флаги 'сокращение' и 'сокращение' вместе использовать нельзя.
ошибка: флаги 'сокращение' и 'из кодировки' вместе использовать нельзя.
ошибка: флаги 'сокращение' и 'cr2crlf или crlf2cr' вместе использовать нельзя.
alias: unix2dos, unix2win, dos2unix, dos2win, u2d, u2w, d2u, d2w
from encoding: '-alt', '-koi', '-mac', '-win'
Сокращение unix2dos (u2d) означает '-koi +alt -cr2crlf', unix2win (u2w) -- '-koi +win -cr2crlf', win2unix (w2u) -- '-win +koi -crlf2cr', dos2unix (d2u) -- '-alt +koi -crlf2cr'. Если Вы используете сокращения, то этим уже задаете, из какой кодировки переводить и как изменять тип концов строк. Сокращения u2d и u2w одновременно использовать можно, так как они не противоречат друг другу.
Пример:
rusconv -u2d -crlf2cr *.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'unix2dos(u2d)' and 'crlf2cr' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'from encoding 1' and 'from encoding 2' can't be used together.
ошибка: флаги 'из кодировки 1' и 'из кодировки 2' вместе использовать нельзя.
from encoding: '-alt', '-koi', '-mac', '-win'
За один раз Вы можете переводить только из одной кодировки.
Пример:
rusconv -alt -win +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags '-alt' and '-win' can't be used together.
try 'rusconv -h' or read the manual for help.
error: flags 'cr2crlf' and 'crlf2cr' can't be used together.
ошибка: флаги 'cr2crlf' и 'cr2crlf' вместе использовать нельзя.
Невозможно одновременно изменять тип концов строк из DOS-формата в UNIX-формат и обратно.
Пример:
rusconv -crlf2cr -cr2crlf +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'cr2crlf' and 'crlf2cr' can't be used together.
try 'rusconv -h' or read the manual for help.
error: you forgot to specify source encoding.
ошибка: Вы забыли указать, из какой кодировки переводить.
rusconv не знает, в какой кодировке находится текст в файле, поэтому отказывается работать. Однако Вы можете, не изменяя кодировки файла, поменять тип строк из DOS-формата в UNIX-формат и обратно.
Пример:
rusconv -crlf2cr +koi textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: you forgot to specify source encoding.
try 'rusconv -h' or read the manual for help.
error: you forgot to specify target encoding.
ошибка: Вы забыли указать, в какую кодировки переводить.
rusconv не знает, в какую кодировку переводить файл, поэтому отказывается работать. Однако Вы можете, не изменяя кодировки файла, поменять тип строк из DOS-формата в UNIX-формат и обратно.
Пример:
rusconv -alt -crlf2cr textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: you forgot to specify target encoding.
try 'rusconv -h' or read the manual for help.
error: flags 'ext' and 'define extension' can't be used together.
ошибка: флаги 'ext' и 'определить расширение' вместе использовать нельзя.
define extension: aext, lext, kext, mext, wext
Флаг 'ext' заменяет любой из флагов 'aext', 'lext', 'kext', 'mext', 'wext'. При совместном их использовании, расширение для одной и той же кодировки задается дважды. Это запрещено.
Пример:
rusconv -alt +koi +win -kext k.txt -ext w.txt textfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: flags 'ext' and 'kext' can't be used together.
try 'rusconv -h' or read the manual for help.
error: only one target encoding can be used with flag 'ext'.
ошибка: при переводе в несколько кодировок нельзя использовать флаг 'ext'.
Рассмотрите приведенный ниже пример. В нем файл data.txt
переводится из альтернативной кодировки в кодировки koi и windows. Результат перевода в каждую из кодировок должен быть сохранен в своем файле. Но в данном случае для обоих файлов задается одно и то же имя data.any.
Пример:
rusconv -alt +koi +win -ext any data.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: only one target encoding can be used with flag 'ext'.
try 'rusconv -h' or read the manual for help.
error: only one target encoding can be used with file overwriting.
ошибка: при переводе в несколько кодировок нельзя использовать перезаписывание файлов.
Результат перевода в каждую из кодировок должен быть сохранен в своем файле. Но при перезаписывании файлов это невозможно.
Пример:
rusconv -alt +koi +win -o data.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: only one target encoding can be used with file overwriting.
try 'rusconv -h' or read the manual for help.
warning: 'argument' is a directory, skipping.
предупреждение: 'аргумент' является директорией, пропускаем его.
В списке файлов для перевода присутствует директория. Она никак не используется. Это предупреждение особенно ценно в UNIX-подобных операционных системах. В них метасимволы раскрывает сама система, при этом имена директорий используются наравне с именами файлов, и результат передается программе.
В данном примере rusconv получит в качестве списка файлов 'dir1 dir2 .'. Директория '.', так как она является последним аргументом, должна содержать переведенные файлы. Директории 'dir1' и 'dir2' пропускается. Получается, что нет файлов для конвертирования. Программа сообщает об этом и завершается.
Пример:
ls -l
drwxrwxr-x 2 w_re w_re 1024 Oct 15 22:55 dir1
drwxrwxr-x 2 w_re w_re 1024 Oct 15 22:55 dir2
rusconv -v -u2w -o dir1 dir2 .
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'dir1' is a directory, skipping.
warning: 'dir2' is a directory, skipping.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: file name too long: 'file name'.
ошибка: слишком длинное имя файла: 'имя'.
Полное имя файла (директория, где он находится + имя с расширением) длиннее, чем это позволяет операционная система. Обычно это чуть больше, чем 250. Если Вы получили это сообщение, попытайтесь использовать не полный путь к файлу (например, c:\long-path\...\my-file.txt), а относительный (например, ..\myfile.txt).
Пример:
rusconv -win +alt 0_1_2..._279_280
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file name too long: '0_1_2..._279_280'.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: file 'file name' does not exists.
ошибка: файл 'имя файла' не существует.
Проверьте, правильно ли Вы написали имя файла и путь к нему. Убедитесь, что файл действительно существует, не является скрытым (hidden) или системным (system). Это сообщение может также появиться и в том случае, если вы задали маску для файлов, а под нее ни один из файлов не подходит.
Пример:
rusconv -u2d dir\nosuch*.file
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file 'dir\nosuch*.file' does not exists.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
warning: 'file' is read-only, skipping.
предупреждение: 'файл' только для чтения, пропускаем его.
Это сообщение выдается в режиме перезаписывания файлов. Так как файл только для чтения, изменять его содержимое нельзя.
Пример:
attrib readonly\*.*
A FILE1.TXT .....\readonly\file1.txt
A R FILE2.TXT .....\readonly\file2.txt
rusconv -win2unix -o readonly\*.*
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'readonly\file2.txt' is read-only, skipping.
readonly\file1.txt -> .....\readonly\rcE203.TMP -> readonly\file1.txt: ok.
1 file(s) converted.
warning: pattern 'pattern' produce no files.
предупреждение: шаблон 'шаблон' не раскрылся ни в один файл.
Предупреждение выдается, если все файлы, подходящие под шаблон, не включены в список файлов для перевода. Это может быть от того, например, что они системные или скрытые. В UNIX-версии это сообщение не выдается, так как в UNIX раскрытие метасимволов производится системой.
Пример:
attrib readonly\*.*
A R FILE1.TXT .....\readonly\file1.txt
A R FILE2.TXT .....\readonly\file2.txt
rusconv -win2unix -o readonly\*.*
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
warning: 'readonly\file1.txt' is read-only, skipping.
warning: 'readonly\file2.txt' is read-only, skipping.
warning: pattern 'readonly\*.*' produce no files.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: no files to convert.
ошибка: нет файлов для перевода.
Вы забыли указать, какие файлы конвертировать, либо все заданные Вами файлы нельзя преобразовывать. В последнем случае rusconv сообщает, почему нельзя.
Пример:
rusconv -win +alt readme.txt]
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
error: file 'readme.txt]' does not exists.
error: no files to convert.
try 'rusconv -h' or read the manual for help.
0 file(s) converted.
error: can't make name for temporary file.
ошибка: невозможно создать имя для временного файла.
Для того чтобы получить это сообщение, надо очень постараться. Например, конвертировать файл, находящийся в директории с очень длинным именем. В windows-версии можно также задать режим перезаписывания файлов на дискете, предварительно установив на ней защиту от записи.
Пример:
rusconv -alt +koi -o a:\test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\TEST: error: can' t make name for temporary file.
0 file(s) converted.
error: can't open file 'file name'.
ошибка: невозможно открыть файл 'имя файла'.
Убедитесь, что этот файл действительно существует на диске. При работе в сети проверьте, что имеете права на чтение из файла.
Пример:
ls -l html/*
--w--w---- 1 w_re w_re 4095 Oct 15 22:58 html/f1.html
--w--w---- 1 w_re w_re 4096 Oct 15 22:58 html/f1.html
--w--w---- 1 w_re w_re 4097 Oct 15 22:58 html/f1.html
rusсonv -w2u -o html/*
error: can't open file 'html/f1.html'.
error: can't open file 'html/f2.html'.
error: can't open file 'html/f3.html'.
error: can't create file 'file name'.
ошибка: невозможно создать файл 'имя файла'.
Диск может быть защищен от записи. Проверьте, что не существует файла с таким именем и с атрибутом 'только для чтения (read-only)'. Убедитесь также, что в имени файла не используется недопустимых символов.
Пример:
rusconv -win +lat -ext win/lat test
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
.\test -> .\test.win/lat: error: can't create file '.\test.win/lat'.
0 file(s) converted.
error: error reading file 'file name'.
ошибка: невозможно прочитать из файла 'имя файла'.
Возможно, файл поврежден. Дальнейшая работа с файлом прекращается. В выходных файлах содержится текст, который был переведен до возникновения ошибки.
Пример:
rusconv -crlf2cr a:\badfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\badfile.txt -> .\badfile.cr: error: error reading file 'a:\badfile.txt'.
0 file(s) converted.
error: error writing file 'file name'.
ошибка: невозможно записать в файл 'имя файла'.
Скорее всего, диск, на который производится запись файла, поврежден или переполнен. Дальнейшая работа с текущим файлом прекращается. В выходных файлах содержится текст, который был переведен до возникновения ошибки.
Пример:
rusconv -o -crlf2cr a:\longfile.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/
a:\longfile.txt -> A:\rcC094.TMP -> a:\longfile.txt: error: error writing file 'A:\rcC094.TMP'.
0 file(s) converted.
error: can't replace file 'file name' by file 'temporary file'.
ошибка: невозможно файл 'имя файла' заменить файлом 'временный файл'.
Перезапись файлов происходит в три этапа. Вначале исходный файл конвертируется во временный файл. Затем он удаляется. После этого временный файл получает имя исходного файла. Сообщение выводится, если возникла ошибка при удалении или переименовании.
Пример не приводится, так как не удалось добиться появления сообщения.
error: not enough memory.
ошибка: не хватает памяти.
Эта ошибка не должна возникать. Если же все-таки будет получено такое сообщение, действуйте по описанию следующей ошибки, internal error.
Пример не приводится, так как не удалось добиться появления сообщения.
error: sorry, internal error has been detected
in source file 'source file name' on line line number.
please inform us about it by email prof@beta.math.spbu.ru
Это сообщение может возникнуть только лишь из-за ошибок при программировании. Попытайтесь понять, при каких условиях проявляется ошибка, и обязательно сообщите об этом по адресу prof@beta.math.spbu.ru.
Пример не приводится, так как не удалось добиться появления сообщения.
errors.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Еще раз о ссылках
latex2html берет на себя заботу практически обо всех проблемах, возникающих при преобразовании файла LaTeX в набор html-файлов. Однако ссылки на другие части того же документа или на другие документы концептуально отличаются в печатной документации и HTML. Рассмотрим следующий фрагмент LaTeXНиже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице~\pageref{definition:coordinate-system}.
в котором LaTeX послушно заменяет \pageref{definition:coordinate-system} номером страницы, ка которой находится метка \label{definition:coordinate-system} В чем проблема? Первое, у набор страниц html нет твердо определенного понятия "номерстраницы". Во-вторых, latex2html заменяет \pageref{definition:coordinate-system} ссылкой на то место, где отображается сответствующая \label{definition:coordinate-system} часть документа. Эта метка отображается темным квадратом в графическом браузере или маркером "[*]" в текстовых браузерах. Такая конструкция выглядит неуклюже, почти мешает, но это не вина latex2html:
Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице [*].
Latex2html нуждается в нашей помощи! Для экранной версии, абзац с ссылкой нужно перефразировать, например так:
Ниже мы обобщим наши результаты, используя цилиндрическую систему координат<>.
где мы указали гиперссылку с помощью anchor-тэгов HTML. Для того, чтобы было возможным создавать различные версии в зависимости от выходного формата, в latex2html определена команда \hyperref.
\hyperref[тип-ссылки]{текст для html-версии}{текст, предшествующий ссылке в LaTeX-версии}{текст, следующий за ссылкой в LaTeX версии}
Необязательный параметр тип-ссылки устанавливает, какой счетчик будет использоваться ссылкой:
"ref" Перекрестная ссылка на номер раздела, как в команде \ref. Текстом ссылки становится номер секции ("4", "1.5.2", "3.4.2.1" и т.д). "page" или "pageref" Ссылается на номер страницы, как \pageref. Текстом ссылки становится номер страницы ("25", "xxiii" и т.д).
Вот наш пример, переписанный с использованием \hyperref
Ниже мы обобщим наши результаты, используя \hyperref[pageref]% {цилиндрическую систему координат}% для HTML {цилиндрическую систему координат. Смотрите% для LaTeX определение координатной системы на странице~} {}% завершающий текст для LaTeX, в переводе пуст {definition:coordinate-system}.% метка, на которую ссылается ссылка
LaTeX преобразует это так
Ниже мы обобщим наши результаты, используя цилиндрическую систему координат. Смотрите определение координатной системы на странице 97.
а latex2html создает
Ниже мы обобщим наши результаты, используя цилиндрическую систему координат.
после обработки того же исходного текста.
Файлы .nedit и .neditdb
Не факт, что возникнет необходимость их ручной правки, но полноты картины для вкратце опишу их структуру.Содержание файла .nedit составляет описание тех самых параметров, которые настраиваются через главное меню Preferences - Default Settings. К коему и следует, как гласит комментарий, прибегать для его изменения. Тем не менее он доступен и для ручного редактирования, что, как и всякую свободу выбора, следует расценить только положительно.
Начальная (после комментариев) строка файла - указание на номер версии: nedit.fileVersion: 5.1
Затем следуют секции описания настраиваемых меню Shell, Macro и контекстного: nedit.shellCommands: \ spell:Alt+B:s:EX:\n\ ... nedit.macroCommands: \ Headers>header1:F1::: {\n\ ... nedit.bgMenuCommands: \ Undo:::: {\n\ ...
соответственно. Описывать их содержимое я не буду. Скажу только, что первая строка после заглавия секции содежит название скрипта или макроса (в том самом виде, как оно отображается в соответствующем меню (так, для приведенного макроса - двухуровневом, Headers>header1). Затем, разделяясь двоеточиями, следуют всякого рода дополнительные сведения, такие, как закрепленная клавишная комбинация или мнемоническое обозначение.
Следующие секции nedit.highlightPatterns: C:Default\n\ C++:Default\n\ ... nedit.languageModes: C:.c .h::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~"\n\ C++:.cc .hh .C .H .i .cxx ... nedit.styles: Plain:black:Plain\n\ Comment:gray20:Italic\n\ ...
определяет разнообразные параметры (подсветка, отступы и т.д.) для различных языковых режимов.
За этим следуют опции переноса слов, автоматических осттупов, подсветки синтаксиса и прочие, подробно рассмотренные выше, в разделе о настройке через меню, смысл их достаточно прозрачен. Завершающие разделы - поисание геометрии открываемого окна, шрифтов редактируемого текста и т.д., - также не должны вызвать вопросов. И посему, скажем, при необхоимости можно изменить, например, кегль шрифта, не обращаясь к меню. Другое дело, что вряд ли такая необходимость возникнет...
Ну а файл .neditdb - это просто список (задумичво называемый базой данных) ранее открывавшихся файлов с указанием полных абсолютных путей. Что характерно, в списке пункта меню File - Open Previous они даются без дублирования - все же буквы db в названии присутствуют не зря.
Faq-e
rusconv v.3.11 -- tips and tricks.
Content:
How to tune operating system to find and run rusconv and whatrus from any directory?
What types of files can be converted by rusconv?
For mail reading I use Netscape. What to do if I receive mail in incorrect encoding?
I created HTML page in Netscape Composer (or in Frontpage or in any other HTML editor) in windows encoding. Rusconv converted it to encoding KOI-8. Why browser don't show russian text properly?
There are funny chars at the end of lines. How to remove them?
Can I use rusconv and whatrus sources in my own programs?
What is the best way to make link on rusconv's web site?
How to tune operating system to find and run rusconv and whatrus from any directory?
In DOS and Windows create any directory where rusconv and whatrus will be placed, C:\UTIL for example. Edit file C:\AUTOEXEC.BAT: add directory C:\UTIL to variable PATH . The simplest way to do it is to add this line at the end of file:
PATH=%PATH%;C:\UTIL
After computer reloaded, rusconv and whatrus can be run from any directory.
In UNIX if you are a system administrator the best way is to copy rusconv and whatrus to directory /usr/local/bin. When this utilities will be accessed by any user. If you have no rights to do this, create directory bin in you home directory and copy programs there. Usually environment variable PATH is set properly and contains this directory. Otherwise edit your startup file (usually ~/.bashrc) and relogin.
What types of files can be converted by rusconv?
Rusconv can convert any files which contain text. They are '.txt', '.html', '.tex', '.rtf', sources of programs and other. Documents (.doc-files), which created by Microsoft Word, are not text files and can be damaged by rusconv.
For mail reading I use Netscape. What to do if I receive mail in incorrect encoding?
First of all change encoding used for mail reading. If it does not help try another method. Create new mail folder (File->New Folder...). Call it, for example, recover and copy mail there. After this file with name like C:\Program files\Netscape\Users\
will be created. It contains message in a plain text. Now you can detect and convert encoding in this file.
The best encoding to convert to is one in which mail was sent. Then Netscape will show message properly. To detect the source encoding open file 'recover' and find line like Content-type: text/plain; charset=koi8-r.
I created HTML page in Netscape Composer (or in Frontpage or in any other HTML-editor) in windows encoding. Rusconv converted it to encoding KOI-8. Why browser don't show russian text properly?
Special tags can specify what charset to use for viewing HTML page. This charset will be used even if you choose another one in menu View->Encoding.
Most part of HTML editors automatically add tag which defines encoding of page. If you convert page outside editor then page will be in another encoding but tag will specify old charset. In this example browser use windows encoding to show KOI-8 version of the page. So it is not surprising that browser don't show russian text properly.
One way to solve this problem is to convert HTML file inside the editor (if it is allowed). Another way is convert file by rusconv and then in new version of file find line
and change field charset properly (for example, to koi8-r). But the best of all is to delete this line.
There are funny chars at the end of lines. How to remove them?
First variant. You use UNIX. May be text is in DOS/windows format of end of lines. To convert it to UNIX format use flag 'crlf2cr'.
Second variant. You use DOS or windows. May be you occasionally change type of end of lines from UNIX to DOS format but lines yet were in DOS format. To undo changes run rusconv twice - one time with flag '-crlf2cr' and then with flag '-cr2crlf'.
Third variant. The matter is not in the type of end of lines. In this case delete unnecessary chars manually.
Can I use rusconv and whatrus sources in my own programs?
You are not allowed to change sources and create you own versions of rusconv and whatrus. But you can use parts of code in you own projects. Please do not forget to make reference to rusconv and whatrus and to rusconv's web site (http://beta.math.spbu.ru/~prof/w_re/).
What is the best way to make link on rusconv's web site?
It is your choose. Address of rusconv's web site is
http://beta.math.spbu.ru/~prof/w_re/
By default russian version in windows encoding will be loaded. Start pages in other encodings are
http://beta.math.spbu.ru/~prof/w_re/index.html - windows http://beta.math.spbu.ru/~prof/w_re/index-k.html - KOI-8 http://beta.math.spbu.ru/~prof/w_re/index-l.html - latinica http://beta.math.spbu.ru/~prof/w_re/index-e.html - english
Have a nice work!
faq-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Faq
rusconv v.3.11.
Полезные советы и ответы на типичные вопросы.
Содержание:
Как сделать, чтобы операционная система сама находила и запускала программы rusconv и whatrus?
Какие файлы можно конвертировать с помощью rusconv?
Для чтения почты используется Netscape. Пришло письмо в неправильной кодировке. Что делать?
С помощью Netscape Composer (или Frontpage, или еще какого-либо HTML-редактора) была создана HTML-страничка в кодировке windows. Rusconv преобразовал ее в кодировку КОИ-8. Почему вместо русского текста обозреватель выводит мусор?
На концах строк находятся странные символы. Как их убрать?
Можно ли использовать исходные тексты rusconv в своих программах?
Как лучше всего сделать ссылку на rusconv со своей HTML-странички?
Как сделать, чтобы операционная система сама находила и запускала программы rusconv и whatrus?
В DOS и windows создайте какой-нибудь каталог, в котором будут находиться rusconv и whatrus, например, C:\UTIL. Скопируйте в него rusconv и whatrus. Отредактируйте файл C:\AUTOEXEC.BAT: в нем в переменную PATH добавьте директорию C:\UTIL. Для этого проще всего на последней строке файла написать команду
PATH=%PATH%;C:\UTIL
После перезагрузки, rusconv и whatrus можно будет запустить из любой директории.
В UNIX, если Вы являетесь системным администратором, rusconv и whatrus лучше всего скопировать в директорию /usr/local/bin. Тогда эти утилиты будут доступны всем пользователям. Если же у Вас нет прав на это, то можно создать в своем домашнем каталоге директорию bin и скопировать программы туда. Обычно переменная PATH настроена правильно и содержит эту директорию. В противном случае, надо отредактировать файл начальных установок (скорее всего, ~/.bashrc) и повторно войти в систему.
Какие файлы можно конвертировать с помощью rusconv?
С помощью rusconv можно конвертировать любые файлы, содержащие текст. Среди них - '.txt', '.html', '.tex', '.rtf',
исходные тексты программ и другие. Документы (.doc-файлы), создаваемые с помощью Microsoft Word, не являются текстовыми, и при использовании rusconv могут быть испорчены.
Для чтения почты используется Netscape. Пришло письмо в неправильной кодировке. Что делать?
Вначале надо просто поменять кодировку, используемую для просмотра почты. Если это не помогает, создаем новую папку с письмами (File->New Folder...). Называем ее, например, recover и копируем в нее письмо. Смысл всего этого в том, что создается файл с именем типа C:\Program files\Netscape\Users\<Ваше имя>\mail\recover. Он содержит сообщение в том виде, в котором его получил Netscape и, что самое главное, этот файл - текстовый. Теперь можно определить его кодировку, и с помощью rusconv привести его к читаемому виду.
Лучше всего перевести текст в ту кодировку, в которой он был отправлен. Тогда Netscape будет выводить письмо правильно. Чтобы определить исходную кодировку, нужно открыть файл 'recover' и найти в нем строчку типа Content-type: text/plain; charset=koi8-r.
С помощью Netscape Composer (или Frontpage, или еще какого-либо HTML-редактора) была создана HTML-страничка в кодировке windows. Rusconv преобразовал ее в кодировку КОИ-8. Почему вместо русского текста обозреватель выводит мусор?
С помощью специальных тегов можно сказать обозревателю, какой набор символов использовать для вывода HTML-страницы. Причем отказаться от него невозможно - что бы Вы ни выбрали в меню View->Encoding, будет использоваться все равно он.
Большинство HTML-редакторов автоматически добавляют команду задания кодировки. Если сконвертировать файл вне этого редактора, то страничка окажется в другой кодировке, а команда останется без изменения. Из-за этого в данном примере обозреватель использует кодировку windows для отображения странички в КОИ-8. Неудивительно, что вместо текста выводится мусор.
Один из вариантов решения проблемы - переводить HTML-файл в самом редакторе (если он это позволяет). Другой путь - использовать rusconv для конвертирования, а затем в новой версии файла найти строку
и заменить поле charset на правильное (например, koi8-r). Но лучше всего - удалить эту строку.
На концах строк находятся странные символы. Как их убрать?
Первый вариант. Вы работаете в операционный системе UNIX. Возможно, в тексте используется DOS/windows-формат кодирования концов строк. Чтобы преобразовать файл в UNIX-формат, используйте флаг 'crlf2cr'.
Второй вариант. Вы работаете в DOS или windows. Возможно, вы случайно изменили тип концов строк из UNIX-формата в DOS-формат, причем строки уже были в DOS-формате. Для исправления файла запустите rusconv дважды - вначале с флагом '-crlf2cr', а затем с флагом '-cr2crlf'.
Третий вариант. Тип концов строк ни при чем. В этом случае удалить лишние символы можно вручную.
Можно ли использовать исходные тексты rusconv в своих программах?
Вносить изменения в исходные тексты и создавать свои версии программ rusconv и whatrus - нельзя. Но использовать части кода в своих проектах - можно. При этом желательно указать в документации, что использованы исходные тексты rusconv или whatrus, а также дать адрес web-узла rusconv (http://beta.math.spbu.ru/~prof/w_re/).
Как лучше всего сделать ссылку на rusconv со своей HTML-странички?
Как Вам больше нравится. Адрес web-узла rusconv:
http://beta.math.spbu.ru/~prof/w_re/
По умолчанию загрузится windows-версия. Начальные странички в других кодировках имеют адреса:
http://beta.math.spbu.ru/~prof/w_re/index.html - windows http://beta.math.spbu.ru/~prof/w_re/index-k.html - КОИ-8 http://beta.math.spbu.ru/~prof/w_re/index-l.html - latinica http://beta.math.spbu.ru/~prof/w_re/index-e.html - english
Приятной работы!
faq.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Feedback-e
rusconv v.3.11 -- feedback
Here you can register, put suggestions, wishes, comments on rusconv. We would like if you answer some questions. You answers help us to make rusconv better and more popular.
Write some information about you, please:
Your name:
Your E-MAIL:
You wish:
register put comments
Comments:
What operating system do you use?
DOS Windows UNIX Other:
For what tasks do you use rusconv (creating web site, ...)?
How do you get rusconv?
Take a link from search engine. Take a link from shareware/freeware server. Rusconv was on CD with utilities. Rusconv was recommended by a friend. Found occasionly when was working in Internet. Write more:
Do you use other decoders? Which? Why they are better/worse? What should be added to rusconv?
Press this button to send form:
HAVE A NICE WORK!
feedback-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Feedback
rusconv v.3.11 -- обратная связь
Здесь Вы можете зарегистрироваться или высказать свои впечатления от программы rusconv. Если Вы не против, ответьте на наши вопросы. Благодаря полученным сведениям, мы сможем улучшить rusconv и сделать его более популярным.
Представьтесь, пожалуйста:
Ваше имя:
Ваш E-MAIL:
Вы хотите:
зарегистрироваться высказать свои впечатления
Ваши впечатления от rusconv:
Какую операционную систему Вы используете?
DOS Windows UNIX Другую:
Для чего Вы используете или планируете использовать rusconv (создание собственной Web-странички, ...)?
Как Вы узнали про rusconv?
С помощью поисковой машины. Нашел ссылку на rusconv с shareware/freeware-сервера. Rusconv был на компакт-диске с утилитами. Взял у знакомого. Случайно наткнулся на rusconv при путешествии по сети. Расскажите подробнее:
Используете ли Вы другие перекодировщики? Какие? Чем они лучше/хуже? Чего не хватает в rusconv?
Нажмите на эту кнопку, чтобы отправить форму:
ПРИЯТНОЙ РАБОТЫ!
feedback.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Феньки всякие
M-x doctor psy hanoi Психотерапевт. Психотерап. сеанс. Пирамидка M-x calendar Календарь М-/ Развернуть слово до ближайшего похожего в буфере.File
Он включает в себя в основном обычные файловые операции, как то:Переходим у пункту второму -
ФИЛЬТРЫ
M-x outline-mode to turn on Outline mode in the current buffer. set-var outline-regexp по умолчанию ^[*][*]* задает фильтр M-x hide-body Спрятать все кроме заголовков M-x show-all Включить все строкиФирмы - производители программного обеспечения.
Физическая разметка [Inline Markup]
LaTeX предоставляет богатейшие возможности физической разметки, меняющей внешний вид текста. Здесь я ограничусь обсуждением лишь тех трех команд, которые уже упоминались при обсуждении формат "Старой, доброй и простой документации Perl" [Perl's plain old documentation]: выделения (эмфазы), курсива, полужирного и машинописного стиля шрифта.Выделение и Курсив \textit{аргумент} -- Печатает аргумент текстовым курсивом. \emph{аргумент} -- Производит выделение аргумента. По умолчанию, в зависимости от текущих установок шрифта, включает/выключает курсивное или наклонное начертание. Если текущее начертание прямое, то команда \emph включает курсивное начертание, если же текущая установка -- курсив, то эта команда устанавливает прямое начертание шрифта. Таким образом выделенный текст всегда бросается в глаза. Полужирный шрифт \textbf{аргумент} -- выводит аргумент полужирным шрифтом. На основе команды \textbf мы можем определять свои собственные команды логической разметки, например так: \newcommand{\important}[1]{\textbf{#1}}
Машинописный шрифт \texttt{аргумент} -- выводит аргумент на печать моноширинным "машинописным" шрифтом. Как и \textbf, \texttt можно "заворачивать" в определенные пользователем команды: \newcommand{\sourcecode}[1]{\texttt{#1}}
Fonts
| ИЗДАТЕЛЬСКИЕ СИСТЕМЫ | |||
| Шрифты и вы - кто кого? Любой шрифт, так же как и любой цвет, имеет свою тональность, свое настроение. Все знают о выгодных, гармоничных сочетаниях цветов и постоянно пользуются этим знанием - ведь мы одеваемся каждый день? А на что способно верное сочетание шрифтов? ![]() | Гармоничный выбор преобразит вашу работу: ведь каждый шрифт - это настроение, эпоха, сила. И эти определения невольно передаются тексту, заставляя нас изначально предвзято относиться к прочитанному. Я сегодня расскажу вам об истории основных видов шрифтов, формы букв которых используются и по сегодняшнее время. Мы также рассмотрим факторы, влияющие на удобство чтения и правильное восприятие набранных нами текстов. Из истории: классическая антиква Это самые старые из используемых сейчас видов - их рождение приходится на эпоху Возрождения. Не забыты при этом и родители - рукописные шрифты IX-XIII веков. Эти шрифты могут создать строгий, изящный, легко читаемый текст, отвечающий ренессансным представлением о гармонии. В большинстве случаев легкий дух Высокого Возрождения придаст стильное, выпуклое, воздушное звучание тончайшим смысловым и эмоциональным оттенкам вашего текста. Переходные шрифты В XVIII веке - сначала в Англии, затем и по всей Европе - формы букв становятся строже, прямолинейнее, стандартизованные (отчасти это объясняется развитием техники книгопечатания), а контраст между толщиной вертикальных и горизонтальных штрихов увеличивается. Этот период, продолжающий тенденции развития поздней классической антиквы, принято называть переходным, и в нем лежат истоки таких широко употребляемых сейчас шрифтов, как Таймс и Баскервилль, - их объединяют названием переходная антиква. Эти шрифты отличаются линейностью штрихов, однотипными закруглениями по дугам окружностей, короткими и острыми на концах засечками. Пропорции букв наиболее "прозрачны", естественны для современного восприятия. Но в связи с тем, что шрифт Таймс стандартный для Windows, он приелся частым использованием. Изначально формы этих шрифтов разрабатывались для наименьшей заметности, чтобы взгляд человека при чтении не отвлекался на посторонние элементы. Новая антиква В конце XVIII века появился новый тип шрифтов, который сразу же завоевал широкое признание и безраздельно господствовал в печатной продукции XIX века, - шрифты новой антиквы. Для шрифтов этой группы характерен прежде всего высокий контраст между толщиной вертикальных и горизонтальных штрихов и тонкие длинные засечки, соединяющиеся с основным штрихом без закруглений. Общий очерк букв - определенно сухой, вычурный, нарочитый. Форма букв - как бы специально эстетская - с претензией. И первая стойкая ассоциация - английский, педантичный шрифт (и текст, им набранный...). Новые рубленые Эти шрифты произвели фурор и безраздельно господствовали в книгах первой половины ХХ века: подчеркнуто упрощенные и геометризованные формы были очень непривычны и новы. Создатели руководствовались возведенным в принцип утилитаризмом, последовательным отказом от любых не несущих практической нагрузки "украшений". Самый известный пример - шрифт Футура, появившийся в 1928 году. Каждая буква Футуры изо всех сил стремится к некоему геометрическому идеалу. Такому шрифту нельзя отказать в единстве и определенном своеобразии, но он весьма утомителен в больших объемах. Хотя заголовки выглядят очень мягко и современно. Перечисленные группы шрифтов являются основными при наборе больших по объему текстов. Мы не учитывали декоративные шрифты, хотя без них обойтись вовсе нельзя, но их сложно классифицировать. И потом, используя их, вы вряд ли добьетесь строгости и ясности дизайна своих текстовых творений. О правилах набора, или Подарит ли вам верстальщик цветы? Правила эти общеизвестны, и мы повторим их лишь вкратце. Во-первых, чтобы верстальщик не перегрыз вам горло (а если вы девушка, чтобы не было у верстальщика повода пригласить вас на свидание поздно вечером, в дождь, а самому не прийти), всегда проверяйте свой труд на наличие 2 и более пробелов подряд. Вам это может показаться мелочью, но, когда при верстке колонками мы получаем "дыры" в тексте, поверьте, радуемся безмерно (особенно, если не сняли премию). Это правило 2 подряд пробелов имеет и еще одно замечательное, неочевидное продолжение: многие девушки, набирая текст, добиваются пробелами "загона" заголовка в центр при выключке влево. При этом они сознательно ставят много (часто больше 20) пробелов подряд. Никогда, никогда так не делайте! Во-вторых, пробел со знаками препинания всегда должен выглядеть так: до - никогда, после - всегда. В-третьих, тире никогда не равно минусу (-), а всегда равно либо Alt-0150 (нажимаем сначала левую кнопку и, не отпуская ее, на цифровой клавиатуре справа набираем "телефон" этого тире), и тогда это выглядит так (-), либо берем тире подлиннее (его "телефон" - Alt-0151). В-четвертых, кавычки используем в официальных текстах только типографские, вот такие "кавычки-елочки" (Alt-0171 для " и Alt-0187 для "). А в неофициальных текстах, мне кажется, более уместны менее "тяжелые" кавычки с "телефонами" Alt-0147 и Alt-0148 (смотрите внимательно: "кавычки-не-елочки"). В-пятых, никогда не добиваемся от Word, чтобы он переносил нам текст на следующую страницу пробелами и "концами абзаца" (они получаются, если нажимать Enter). Есть гораздо более миролюбивый (не делайте из верстальщика зверя) способ: устанавливаете курсор в начало той строки, какую вам надо увидеть именно на следующей странице, и идете "в гости" в верхнюю, командную строку вашего текстового редактора "Вставка", затем там же "Разрыв" и далее следуете инструкциям. В-шестых, старайтесь выражаться предложениями с малым количеством слов. Ну и, в-седьмых, полюбите своего верстальщика. И тогда он многое вам простит. (Работа у него такая - прощать...) Что позволено быку, или Как долго мы употребляем печатную продукцию Плакат - от 3 секунд (рекламное правило 3 секунд) до 5 минут. Газета - от 1 дня до 1 недели. Журнал - от 1 месяца до 1 года (научные - 3-5 лет). Книга - 1-5 веков. А значит, для газеты важен экономичный дизайн, позволяющий легко манипулировать информацией и ее объемами. Для журнала важен стиль, который бы выделял его среди прочих, а также следование моде и тому подобные соображения. В книге важна традиционность и удобочитаемость, сдержанное употребление модных приемов, так как на нее будут смотреть многие поколения после вас. Плакат же должен привлекать внимание, какие бы аморальные средства для этого ни использовались, вплоть до полного поругания удобочитаемости. Однако в жизни мы встречаем газеты, которые превосходят качеством оформления многие журналы. Встречаем журналы, выходящие еженедельно, то есть являющиеся почти газетами. Книги-боевики, рассчитанные на то, чтобы после прочтения забыть, в которых соответственно оформление не идет дальше обложки. Реклама в журнале - маленький плакат. В каждом из жанров дизайнер может проявить свой темперамент, свое отношение к материалу, надо только ясно представлять жанр и адрес данного издания. А вот издания классики - Шекспира или Пушкина - требуют осознанного подхода к выбору гарнитур шрифта. Таймc в большинстве случаев не годится (а сейчас подавляющее большинство печатной продукции набирается именно этим шрифтом). Одним словом, очень хорошо, если шрифт соответствует стилю эпохи или стилистике автора. Что такое хорошо, а что такое плохо Набор прописными читается на 12% медленнее прямого строчного начертания. Это связано с тем, что они примерно на 35% шире строчного начертания. Если придерживаться взгляда на процесс чтения как на скачкообразный, то понятно, что за одинаковые по длине "скачки" читатель "проглатывает" меньшее количество букв при наборе прописными. Отчасти это можно объяснить и привычкой - мы привыкли читать книги, набранные строчными знаками. Курсивный набор читается почти так же хорошо, как и прямой, только в средних по длине текстах. То же самое можно сказать про полужирные начертания. Основным наборным шрифтом являются не слишком светлые и средние по жирности начертания. Буквы должны быть черными и печататься по белой или кремовой бумаге. Все остальные варианты с точки зрения удобочитаемости проигрывают. Предупреждение 1! Если вы не хотите, чтобы читатель посылал проклятия на вашу голову, ни в коем случае не применяйте в наборе длинных материалов (две страницы журнального текста и больше) светлых начертаний кеглем 8 пунктов, по черному фону белым или яркими оттенками. На экране все хорошо, но глаза заболят на пятом абзаце. Если все-таки хочется применить мелкий кегль по черному фону, то лучше взять полужирное начертание гротеска. И не больше нескольких абзацев. Предупреждение 2! Прочитать текст без лупы невозможно, если рисунок под текстом растрирован или состоит из иллюзорно-объемной фактуры, а растр или элементы фактуры соразмерны с размером строчных знаков. Объемная фактура во многих случаях является значительно активней фактуры текста, и если это происходит, то есть основания подозревать вас в скрытой неприязни к автору текста. Наиболее удобочитаем для нормально развитого взрослого человека текст, набранный 9-м или 10-м кеглем. Большие кегли заставляют дальше "скакать" при чтении, но рекомендуются при ослабленном зрении. Меньшие кегли читаются с большим напряжением при разглядывании знаков. Специалисты советуют начинать учиться чтению с 36-го кегля. Строки шире 120 мм неприятны более широким разворотом головы в процессе чтения, узкие - неравномерностью межсловных пробелов при выключке ("скачки" с конца предыдущей строки в начало следующей становятся слишком частыми). В строке идеальной ширины умещается 50-55 знаков. Ширина строки может меняться в зависимости от восприятия стилистики произведения оформителем текста, а также других эстетических и экономических факторов. Например, в тексте с частыми абзацами длинная строка менее экономична. Но главное - вкус к шрифтам - результат воспитания, а не врожденное качество. Потому учиться никогда не... Шрифты сейчас, или Наступил ли компьютерный рай? Действительно, с появлением персональных компьютеров началось бурное развитие настольных издательских систем, упростив создание печатных изданий. Это, в свою очередь, значительно увеличило количество малотиражных изданий и людей, которые их делают. Но все равно, сейчас шрифт прежде всего ассоциируется с компьютером, и на второй план уходят художники-оформители и каллиграфы с вечно текущей тушью и рассыпающимися перьями. Да и что говорить, уходит от нас искусство писать. Даже письма все чаще набираются на компьютере и, теряя всякую личностную особенность, безжалостно выводятся принтерами. Сейчас количество шрифтов, которые установлены на компьютере художника-дизайнера, спокойно переваливает за сотню. При этом компьютер совершенно спокойно может менять цвет, размеры и прочие атрибуты шрифта и текста. И теперь то, что было достоянием узкого круга профессионалов, стало доступно всем. Векторные компьютерные шрифты Сам термин "векторные" означает, что все символы шрифта описаны математическими формулами и оттого занимают значительно меньше места, чем, скажем, растровые. В векторном формате символы описываются в системе координат, что в переводе на человеческий язык звучит приблизительно так: - провести прямую из точки х=10, у=20в точку х = 50, у = 80; - построить окружность с центром в точке х = 70, у= 80 радиусом 50; Формат TrueType (TTF) Сейчас это самый популярный для Windows-систем формат шрифта (его полное имя True Type - т.е. в переводе "правдивый, или правильный шрифт"). Формат представления шрифтов TrueType был совместно разработан фирмами Apple и Microsoft для применения в их операционных системах (Mac OS и Windows). По всей видимости, основной причиной разработки нового формата было желание оказаться независимыми от фирмы Adobe - владельца прав на формат Type 1. С другой стороны, по некоторым параметрам Type 1-шрифты не удовлетворяли требованиям, предъявляемым к шрифтам, которые планировалось использовать на устройствах с очень низкой разрешающей способностью, прежде всего для вывода сообщений на мониторы. Основным потребительским свойством TrueType-шрифтов можно считать простоту. Вся необходимая информация о символах находится в одном файле, а процесс установки новых шрифтов прост и нагляден: вы копируете файл шрифта в нужную папку (для Windows обычно это папка С: \Windows\fonts). Причем надо обязательно отметить, что в этом формате один файл - это один шрифт (в отличие от формата Type 1, где на один шрифт в обязательном порядке приходится от двух до четырех файлов). Тот факт, что поддержка TrueType-шрифтов напрямую была включена в Windows и Mac OS - наиболее популярные графические операционные системы, привел к их быстрому распространению. И, несмотря на то, что серьезные полиграфисты по-прежнему предпочитают использовать шрифты Type 1, по числу пользователей TrueType-шрифты их сильно опережают. Формат Type 1 Этот формат был разработан фирмой Adobe специально для фотовыводного оборудования. В том числе обеспечивается поддержка Type 1 в ее программах - Photoshop, Illustrator, Pagemaker, Acrobat. Фирма Adobe - лидер в программном обеспечении для настольно-издательских систем во многом благодаря языку описания страниц PostScript. Сейчас этот язык стал фактически стандартом для передачи графической информации между системами разработки страниц (таких, как программы для обработки изображений, верстки, текстовых редакторов) и системами отображения документов - принтерами высокого разрешения, фотовыводными устройствами и некоторыми другими видами оборудования. Язык PostScript настолько популярен, что теперь целый класс устройств именно так и называется - PostScript-устройства. Шрифты формата Type 1 описаны одноименным специальным языком, который мы назовем совместимым с языком PostScript. По сравнению с True Type разметка шрифта Type 1 существенно проще - в ней вместо указания опорных точек строятся кривые Безье 2-3-го порядка. Это уменьшает количество ошибок и значительно ускоряет вывод шрифта на носители. А с появлением новой технологии PDF (Portable Document Format) у шрифтов Type 1 началась новая жизнь, при том что старой их полиграфической жизни замены еще не существует. Неудобства шрифтов Type 1 Для установки шрифта в систему надо иметь специальную программу управления шрифтами. Самая распространенная - Adobe Type Manager DELUXE 4. 0, которая помимо поддержки формата Type 1 может управлять также и шрифтами True Type. Программа позволяет объединять шрифты в смысловые группы и активировать их в нужный момент (к примеру, если на компьютере работают несколько человек, то каждый из них может активировать нужные именно ему шрифты, экономя ресурсы системы и время загрузки программ). Формат Type 1 имеет два файла (с расширениями PFB и PFM) на один шрифт. Этот формат не поддерживается (и в ближайшем времени не будет) существующими языками разметки Internet-страниц: HTML, XML, в отличие от True Type. Так наступил ли компьютерный рай? Конечно! Если мы будем говорить о технологиях, то полиграфия уже немыслима без компьютера, так же как немыслима без компьютера верстка, набор, редактирование текста, да и в большинстве своем вообще реклама. Технологией будущего справедливо считается Internet, которая целиком завязана на компьютерах и шрифтах и без них существовать не может. Единственный вопрос, на который никогда не будет ответа: а не заменит ли все это компьютерное развитие нам простого человеческого общения? Того самого, для которого и была создана первая буква. Литература: Дмитрий Кирсанов, "Веб-дизайн", Символ-Плюс, 1999; Барышников Г. М., "Шрифты. Разработка и использование". Эком, 1997. Артем Герасимович | ||
ФОРМАТИРОВАНИЕ
M-q Отформатировать абзац Задать левую границу форматирования Задать правую границу форматирования M-x auto-fill-mode Установить/Отменить режим автоформатирования M-x set-variable indent-tabs-mode nil выравнивание делать пробелами M-x tabify Свернуть все пробелы в табуляторы M-x untabify Развернуть все табуляторы в пробелыФормато-специфичные абзацы
Мы только что увидели, что командой L не так-то легко управлять. А почему мы не можем просто использовать HTML-ссылку? Краткий ответ "потому что POD -- это не HTML" подсказывает решение. Если бы мы могли указать, что этот абзац предназначен для HTML, этот -- для LaTeX, а этот -- для SnaFoo", то мы могли бы использовать разметку, специфичную для этих форматов.Специальная команда
=for format абзац_текста
указывает транслятору обратить внимание на format перед тем, как он станет обрабатывать абзац_текста. Если транслятор чувствует, что он "отвечает" за обработку формата format, то он его обрабатывает по своим правилам, в противном случае он его полностью игнорирует. Вторая часть названия обработчика обычно указывает, в какой формат он транслирует. Например pod2man работает с =for man, pod2html преобразует абзацы =for html, и т.д.
Всякий раз при использовании формато-специфичного абзаца в документе появляется "ветвление" (поскольку разделы =forformat должны быть созданы для каждого из предполагаемых выходных форматов), тем самым пробивается брешь в стройной структуре документа.
Это обычный абзац, который обрабатывается всеми трансляторами.
=for html Этот абзац появится только в файле обработанном pod2html.
=for latex Тот же самый абзац, но оттранслированный {\bf pod2latex}.
=for text А я предназначен для *pod2text*.
Продолжаем писать для всех и всяких форматов.
Трансляторы игнорируют неизвестные форматы, так что мы можем изобрести абзацы для своих специальных нужд! Например, чтобы закомментировать сразу целый абзац, можно написать:
=for comment Кто-нибудь может разобраться со следующим разделом?
Часто используется формат emacs :-) Для того чтобы при подготовке POD-файла переключить emacs в текстовой режим, начните файл с:
=for emacs -*- text -*-
или закончите его так:
=for emacs Local Variables: mode: text End:
Те пользователи emacs, которые применяют дополнение hyperbole, могут превратить имеющиеся у них "тупые" POD-файлы в связанную гипрессылками коллекцию (на самом деле возможности hyperbole этим не исчерпываются, но гиперссылки -- хорошее начало) файлов следующей командой:
=for hyperbole <(std-reference)>
где <(std-reference)> -- это кнопка hyperbole, которая, стоит по ней кликнуть мышью, переносит вас в другой файл, содержащий документацию по std.
Функции SED
(В скобках указывается максимальное число адресов)(1) a \text - Добавить "text" после указанной строки (вывести), потом считать следующую.
(2) b label - Перейти на метку, устанавливаемую, с помощью функции ":" , если label пуст, то перейти в конец скрипта.
(2) c \text - Удалить pattern space и вывести "text" на output .
(2) d - Удалить pattern space .
(2) D - Удалить pattern space до вставленной newline .
(2) g - Заместить содержимое pattern space содержимым буфера hold space .
(2) G - Добавить к содержимому pattern space содержимое буфера hold space .
(2) h - Заместить содержимое буфера hold space на содержимое pattern space .
(2) H - Добавить к содержимому буфера hold space содержимое pattern space .
(1) i \text - Вывести текст на output перед указанной строкой.
(2) n - Вывести pattern space на output и считать следующую строку.
(2) N - Добавить следующую строку к pattern space , разделяя строки вставленным newline .
(2) p - Скопировать pattern space на output .
(2) P - Скопировать pattern space до первой вставленной newline на output .
(1) q - Переход на конец input . Вывести указанную строку, (если нет флага -n ) и завершить работу SED .
(2) r rfile - Читать содержимое rfile и вывести его на output прежде чтения следующей строки.
(2) s - Функция контекстной замены. (См. 5.)
(2) t label - Перейти на метку, устанавливаемую с помощью функции ":" , если для этой строки была осуществлена замена с помощью функции "s" . Флаг осуществления замены восстанавливается при чтении следующей строки или при выполнении функции "s" .
(2) w wfile - Добавить pattern space к концу файла wfile . (Максимально можно использовать до 10 открытых файлов.)
(2) x - Поменять местами содержимое pattern space и буфера hold space .
(2) y /str1/str2/ - Заменить все вхождения символов из str1 на соответствующие из str2 . Длины строк должны быть равными.
(2) ! func - Применять функцию func (или группу функций в {} ) к стокам НЕ попадающим в указанные адреса.
(0) : label - Устанавливает метку для перехода по "b" и "t" командам.
(1) = - Выводит номер строки на output как строку.
(2) { - Выполняет функции до "}" , только когда выбрано pattern space . Группировка функций.
(0) - Пустая команда игнорируется.
# - Комментарий.
( "#n" в скрипте равносильно установке флага -n )
Функция контекстной замены
Формат:(2)s/< Регулярное выражение > /< Замена > /< флаги >
Функция s заменяет вхождение < Регулярного выражения > в pattern space на < Замену > .
< Регулярное выражение > : Аналогично выше данному, но может быть заключено не в "/ /" а в любые другие символы (не " " (пробел) и не newline ).
< Замена > : Любой набор символов. Используются специальные символы:
"& " - Заменяется на строку, указанную в регулярном выражении.
"\d" - , где d - цифра, указывает на d -тое выражение, заключенное в "\(","\)" в регулярном выражении.
< Флаги > :
g - Глобальная замена: заменить все вхождения в строке.
p - Печатать (выводить на output ) строки, в которых была осуществлена замена.
w wfile - Выводить в файл wfile строки, в которых была осуществлена замена.
Примеры:
s/to/by/w changes - Заменить в тексте первое вхождение "to" в каждой строке, если таковое есть, на "by" и измененные строки сохранить в файле "changes" .
/iiii/s/[Oo]lga/ Olga V.Galina/p - Заменить в тексте, в строках, где встречается вхождение "iiii" , первое вхождение подстроки "olga" или "Olga" на " Olga V.Galina" , при этом измененные строки выводить на печать.
s/[.,;:?]/*sign& *sign& **/g - Заменить в тексте каждое вхождение одного из знаков ".,;:?" в строку на "*sign& *" , где & будет тем знаком, который стоял прежде, например, "." на "*sign.*" , "?" на "*sign?*" и т. д.
Функция setlocale() .
Основной функцией POSIX localeAPI является функция . Данная функция определена в #include файле как :
char *setlocale(int category, const char * locale);
Существует три основных формы вызова этой функции :
Первая форма применяется для установки конкретной категории локализации в конкретное значение.
Вторая форма применяется для установки категории локализации "по умолчанию". В этом случае значение категории локализации берется из переменных окружения.
Третья форма - это скорее форма GET - позволяет получить текущее значение категории локализации.
Функциональность
Чтобы получить представление о возможностях редактора надо просто просмотреть выпадающие меню. Наиболее интересный пункт - Insert. Рассмотрим его :- picture - вставить графическое изображение ( Ted поддерживает 13 форматов ), среди которых присутствуют используемые в Windows - ico, .bmp, .wmf. Размер изображения можно изменить с помощью 8-ми точек расположенных по границам и появляющихся при двойном клике на изображении.
Изображение 6, графические объекты в TED. Кликните на изображении для детального просмотра.

Можно конечно изменить размеры изображения, но рекомендуется не делать этого из соображений потери качества.
- symbol - выбрать и вставить специальный символ из таблицы символов. Просто выбираем символ, нажимаем insert и он оказывается в документе в позиции курсора.
Изображение 7, symbols. Кликните на изображении для детального просмотра.

- hyperlink - вставить гиперссылку.
- bookmark - добавить закладку.
- file: вставить RTF файл
- table: создать таблицу.
В пункте меню Format содержатся команды для форматирования текста : расположение ( слева, справа, по центру ), добавление пустой строки до и после параграфа, создание набора правил о формате данного параграфа ( Copy rules ) и применение их для других (Paste rule).
Следующий пункт меню - Tools :
-Font Tool: выбрать шрифт, размер шрифта, просмотреть изменения перед их применением.
-Find поиск и замена текста.
-Spelling: орфографический словарь, использующий файл /usr/local/ind/Lang.ind. Существуют словари почти для всех Европейских языков. Словарь для использования по умолчанию указан в файле ресурсов, но данный пункт меню позволяет выбрать любой из установленных.
- Page Setup выбор размера листа бумаги и полей.
- Insert Symbol вставить специальный символ.
- Table Tool создать таблицу и вставить ее в документ.
Изображение 8, таблица в Ted. Кликните на изображении для детального просмотра.
Также Ted обладает следующими функциями : Mail, Hyperlinks и Bookmark. Последние две интересны для сохранения файла в формате HTML, для чего необходимо выбрать пункт меню Save to из File. Можно сохранить файл в форматах .txt и .html несмотря на то, что Ted открывает файлы только в формате RTF.
Когда файл сохраняется в формате html сохраняются также и изображения в каталоге с расширением .img. Например изображения, относящиеся к файлу toto.html находятся в каталоге toto.img.
Есть ли еще какие - нибудь дополнительные возможности у редактора Ted? Конечно есть, но я советую вам самостоятельно попробовать их : отправить почту непосредственно из редактора, перенести информацию между данным приложением и другими X11 приложениями...
Гиперссылки
Когда на сцене появляюстя гиперссылки, мы сталкиваемся еще с одной проблемой, похожей на ту, с которой мы столкнулись при обработке перекрестных ссылок. Для HTML версии документа гиперссылки жизнено необходимы, в печатной -- не слишком полезны: сравните "Щелкните мышью вот здесь" и "Нажмите карандашом на эту букву". Но иногда, автору действиотельно требуется включить URL в печатный текст. latex2html предоставляет две команды, которые позволяют это сделать.\htmladdnormallink{текст ссылки}{универсальный локатор ресурса}
\htmladdnormallinkfoot{текст ссылки}{универсальный локатор ресурса}
В HTML версии обе команды генерируют гиперссылку вида текст ссылки. В LaTeX версии первая только вставляет текст ссылки, полностью подавляя вывод части URL. Вторая команда добавляет к этому сноску, содержащую универсальный локатор ресурса. Типичным примером применения этих команд может служить следующий
Текст этой статьи можно скачать с нашего \htmladdnormallink{веб-сайта}{http://www.linux-gazette.org}.
и
Текст этой статьи можно скачать с нашего \htmladdnormallinkfoot{веб-сайта}{http://www.linux-gazette.org}.
в LaTeX результат первой команды будет
Текст этой статьи можно скачать с нашего веб-сайта.
во втором варианте веб-сайт дополняется маркером сноски, а сама сноска с URL помещается внизу страницы. HTML в обеих случаях выглядит так
Текст этой статьи можно скачать с нашего веб-сайта.
Главные характеристики
Я не собираюсь даже попробовать дать детальное и скучное описание всех возможностей, что, с моей точки зрения, наиболее привлекательно.Есть множество on-line примеров и help'ов. Руководства написаны в LyX и могут читаться прямо в LyX. К счастью, руководства написаны для знающих пользователей, они не предполагают что пользователь совершенно несведущ и не поясняют, что есть "bold" и как использовать мышку. С таким руководством можно стать профессионалом в LyX в короткое время за несколько страниц. Скорость инструментов поиска и перемещения особенно впечатляет.
Таблицы полностью автоматические и WYSIWYG. Размер сетки регулирутся автоматически. Можно вставлять, удалять и вклеивать столбцы и строки; выравнивать текст; обединять и разъединять сетки... Это то, что вы можете найти и в других редакторах.
Также можно вставлять изображения и таблицы как "плавающие" объекты. Плавающий объект - это объект, который можно перемещать(если это необходимо) из его настоящего положения, включая целые страницы. К примеру, желательно чтобы изображения появлялись в начале страницы, где на них ссылка. Плавающие обекты могут иметь как заголовок так и ярлык, так что на них можно ссылаться из других мест. Во время компиляции документа, LaTeX присвоит номер каждой фигуре и таблице, обновит все ссылки, и создаст список изображений и таблиц.
Можно вставлять сноски также как и заметки на полях. Заметки на полях - удобное средство которого нет в других редакторах. Заметки также плавающие объекты, поэтому нам не следует беспокоиться о их положении. Другое интересное свойство - это возможность вставить что вам угодно в заметки(таблицы, изображения, уравнения, и тд), исключая еще одну заметку.
Для проверки правописания LyX снабжен инструментом ispell (утилита которая доступна во всех дистибутивах). Операция проверки правописания схожа c теми которые есть в других редакторах: каждое неправильное слово подсвечивается и список альтернативных слов вам предлагается для замены.
LyX использует новаторский механизм ссылок на объекты(секции, изображения, таблицы,...). Вы можете вставлять ярлыки в лубое место, и затем вставлять ссылки на них. Во время редактирования ссылки действуют как URL адресс, так что когда вы кликаете их, курсор переноситься в место где ярлык определен. В конечном документе, метки удаляются и ссылки заменяются на номер секции, изображения из табллицы (или номер страницы, в зависимости о типа ссылки).
А теперь самое лучшее: математика. То, что я собираюсь сказать не преувеличение, нет другого такого простого и интуитивного способа писать уравнения и с такими впечатляющими результатами при печати. Эта возможность LyX очень ценна. Обычно, другие издатели могут справиться с некоторыми комплексными математическими выражениями... Теперь попробуйте LyX, и призудамайтесь над математическими выражениями выходящими за грань реальности: множество подиндексов, интегралы, иррациональные числа, стрелки, системы уравнений, массивы, и тд. А теперь напечатайте это... и наслаждайтесь! Если вы знаете LaTeX тогда вы можете писать выражения таким же образом, и LyX изобразит их находу!

Я еще не подметил, но это очевидно, LyX разбивает на главы, секции, подсекции, и тд, и с помощью этой информации LaTeX может построить индексный указатель в конечном документе.
Я уже говорил что благодаря хорошей on-line помощи время обучения довольно короткое. Другое усоверщенствование, помогающее изучению LyX - умное использование клавиатуры, мышки и меню. Нет необходимости изучать два различных способа произведения одних и тех же действий(клавиатурой и мышкой). Можно кликнуть в меню "File", а потом "Save", но также можно нажать "Alt-F" и "S" (меню не откроется), чтобы выполнить те же действия. С другой стороны, большинство простых операций доступны через обычные команды "Control":
Emacs для начинающих
Говоря о текстовых редакторах, разработанных специально под UNIX, в первую очередь упомянем Emacs, который распространяется бесплатно в рамках проекта GNU. Некоторые компании распространяют его на коммерческой основе, исправив имеющиеся ошибки и адаптировав под конкретные платформы с некоторыми улучшениями возможностей "родного" Emacs. Таковым, например, является GNU Emacs 19.19 фирмы Ready-to-Run Software, который распространяется в составе пакета утилит обработки текста. Безусловно, данный редактор предназначен для квалифицированных программистов, обладая мощными средствами разработки программ. Однако GNU Emacs требует основательного изучения; для расширения его возможностей приходится программировать на языке LISP, что не очень нравится даже квалифицированным программистам, а уж обыкновенным пользователям - тем более. Для поклонников Emacs могу сообщить, что исходные тексты версии 19.28 появились на prep.ai.mit.edu: в каталоге pub/gnu.Emacs для начинающих
Gnus -- МБч ъпзуБ Emacs, ЮпвЮпячБпщщКы р ъуЮрЦН чГуЮутЛ тшО ГБущьО ь чБъЮпрзь щчрчАБуы Usenet. ¦сч Бпзжу эчжщч ьАъчшЛвчрпБЛ тшО ГБущьО ь щпъьАпщьО чБруБчр щп АччяИущьО ьв эщчсьЕ тЮЦсьЕ ьАБчГщьзчр -- ъчГБК, ЦтпшущщКЕ зпБпшчсчр, тпытжуАБчр ь тЮЦсьЕ.TтуАЛ эК тпуэ ррутущьу р Gnus ь чъьАКрпуэ щузчБчЮКу чАщчрщКу рчвэчжщчАБь. ¦шО ъчшЦГущьО ъчтЮчящчы ьщДчЮэпФьь ч Gnus щпяуЮьБу M-x info ь рКяуЮьБу впБуэ ЮЦзчрчтАБрч ъч Gnus.
гБчяК впъЦАБьБЛ Gnus, щпъуГпБпыБу M-x gnus RET.
Гримасы русификации
Выше уже было отмечено, что специально заниматься русификацией TeXmacs как будто бы нет необходимости: всё уже сделано за нас. Более того: хотя в TeXmacs изначально предусмотрена поддержка ряда языков, русский удостоился особого внимания. В меню обнаруживается несколько специальных команд, имеющих отношение к работе с кириллицей, а методике такой работы посвящено отдельное электронное руководство. Тронутый такой заботой, пользователь принимается вводить текст и: наблюдает на экране хорошо знакомую бХОПНю. По крайней мере, в том случае, если в его системе принята кодировка koi8. Попутно обнаруживается, что нельзя пользоваться и английской клавиатурой: пока мы не пометим текст явным образом как английский (это делается через меню -> ), вместо латинских букв будут печататься соответствующие им русские.Первую проблему можно легко исправить, если выбрать в меню -> -> пункт . Но не делать же это в каждом сеансе? Поэтому остается залезть в файл $TEXMACS_PATH/progs/init.scm, управляющий начальной загрузкой инициализационных сценариев. Там в числе прочего обнаруживаются следующие две строчки:
(exec-file "$TEXMACS_PATH/progs/keyboard/russian" "translit.scm") (exec-file "$TEXMACS_PATH/progs/keyboard/russian" "cp1251.scm")
Первая строка как раз и заставляет английскую клавиатуру работать в качестве русской раскладки, что может быть полезно для тех, кому приходится иметь дело с русским языком в системах с иной локализацией. Мы же можем ее безбоязненно закомментировать. Что же касается файла cp1251.scm, то он является практически пустым, и, в сущности, не нужен даже в том случае, если наша система локализована на базе этой кодировки. (Вернее, в нем содержится один маленький фокус с буквой , смысл которого станет ясен из дальнейшего). Если же вы используете koi8, то замените название этого файла на koi8.scm. После чего поведение как русской, так и английской клавиатуры в TeXmacs придет в норму.
Но не обольщайтесь. Ибо установили вы не раскладку для koi8, а как раз наоборот: переходник с koi8-клавиатуры на кодировку cp1251. Именно она будет использоваться для отображения текста на экране и записи его в файл. В той же кодировке составлен файл переносов и файл $TEXMACS_PATH/langs/natural/dic/english-russian.scm, отвечающий за русификацию интерфейса. Что, в общем-то, лично меня ни в коей мере не угнетает, поскольку сам я работаю исключительно с cp1251. Да и как же иначе? Не говоря уж о том, что данная кодировка является наиболее логичной, только в ней имеются все необходимые типографские символы, (типа парных кавычек) без которых нет смысла говорить о полиграфическом качестве оформления текста. Однако же давайте задумаемся, почему автор программы (или автор ее русификации) предпочел выбрать именно эту кодировку? Оказывается, по одной единственной причине: cp1251 совместима с кодировкой кириллических шрифтов для TeX, которые по умолчанию используются в TeXmacs. И сделать так пришлось потому, что TeXmacs, будучи WYSIWYG-приложением, не предусматривает механизма перекодировки входного файла, подобного тому, который обеспечивается загрузкой пакетов fontenc и inputenc в LaTeX. То есть навязывают нам, в сущности, вовсе не cp1251, а TeX'овскую кодировку T2A.
Но ведь такой подход не только идеологически неверен, но и весьма наивен. Ну хорошо, cp1251 совпадает с T2A в русской части (и то кроме буквы - не зря же для ее печати понадобилось переопределять поведение клавиатуры), но ведь это уже не будет соответствовать истине для символов других славянских алфавитов. А что, если мы пожелаем сделать украинскую или сербскую локализацию? Неужели напрямую писать текст в T2A? Текст, который нельзя будет прочесть никаким , ибо внутренние кодировки TeX вообще-то предназначаются только для откомпилированных файлов .dvi. Никто и никогда не допускал мысли о возможности использовать их напрямую для набора текстов. Главная причина этого достаточно очевидна: в таких кодировках активно используются те ячейки кодовой таблицы, которые вне системы TeX зарезервированы за управляющими кодами и, соответственно, не должны применяться в текстовых файлах.
Увы, похоже, что данное соображение нисколько не смущает автора TeXmacs. Так, в файле $TEXMACS_PATH/progs/keyboard/accents.scm (он отвечает за некоторые общие параметры клавиатуры) встречаем несколько строчек приблизительно следующего вида:
("- - -" " ")
Приведенная строка задает клавиатурную комбинацию для печати символа . А вот то, что мы обозначили как пробел в кавычках - это на самом деле символ с десятичным кодом 22, который соответствует этому самому длинному тире в латинской кодировке для TeX T1 (равно как и в кириллической T2A). И дело даже не в том, что вносить изменения в подобный файл будет сложно без шестнадцатеричного редактора. Но интересно знать, как бы автор выкручивался из положения, если бы ему понадобился символ с кодом 12 (прогон страницы)? Или с кодом 13 (перенос строки)? А ведь на привязку символов к данным кодам в TeX нет никакого запрета.
Еще одна любопытная вещь обнаружится, если мы попробуем преобразовать подготовленный в TeXmacs документ в формат LaTeX. TeXmacs предусматривает такую возможность, хотя автор честно признается, что качество конвертера пока оставляет желать лучшего. Открываем полученный файл в текстовом редакторе, и: первым делом обнаруживаем, что строчная буква всюду превратилась в заглавную. Заглавное же вообще стало двойным латинским S. Речь, естественно, идет о тексте в cp1251, в противном случае проблема возникла бы с твердым знаком. В чем тут дело? Оказывается, мы опять расплачиваемся за неуклюжую попытку учесть различия между кодировками, на сей раз латинскими: TeX'овской T1 и общепринятой iso-8859-1. Лечится такое поведение путем истребления из файла $TEXMACS_PATH/progs/convert/tmtex.scm следующих двух строчек:
((equal? c #\337) (tmtex-text-sub "SS" l)) ((equal? c #\377) (tmtex-text-sub "Я" l))
Но не забавно ли, что, ради того, чтобы сделать документ понятным для LaTeX, приходится перегонять его из внутренней TeX'овской же кодировки в общепринятую? И, как видим, проблема вовсе не ограничивается русификацией, ибо различия между двумя западноевропейскими кодировками - приблизительно такого же порядка, как между cp1251 и T2A.
Help
Встроенная помощь редактора NEdit весьма богата, что можно видеть из простого перечисления содержания этого пункта меню. Он содержит:Кроме перечисленного, в пункте Help содержатся подробные сведения о текущей версии редактора, политике его распространения, приведены списки рассылки и небольшой перечень проблем и ошибок.
Пора, однако, заканчивать с рассмотрением главного меню. Поскольку в NEdit существует еще и меню контекстное (в терминологии NEdit - Window Background Menu), вызываемое, как положено, щелчком правой клавишей мыши на выделенном фрагменте текста. Правда, оно достаточно простое, содержат лишь пункты Undo и Redo, Cut, Copy и Paste, что в комментариях не нуждается. Однако, как будет показано ниже, и оно может быть настроено.
Таким образом, из рассмотрения меню функциональность Nedit в первом приближении становится ясна. Он обладает очень развитыми средствами ввода и редактирования текстов как общего содержания, так и исходных текстов на языках программирования и разметки. Меню его организовано логичным и привычным для пользователя Windows способом, комбинации горячих клавиш многочисленны и обычно имеют простой мнемонический смысл. Все это, вместе с мощной системой помощи, делает NEdit простым в освоении.
К недостаткам Nedit (или, вернее, особенностям, которые могут не нравится), можно отнести отсутствие инструментальной панели с кнопками и открытие каждого файла в собственном окне (а не в том же самом, с перемещением через систему закладок, например). Впрочем, и тот, и другой момент - спорны: отстутствие кнопочной панели, как я уже говорил, компенсируется системой горячих клавиш, а перемещение между отдельными окнами, хотя и приводит к загромождению дисплея, не менее удобно, чем между закладками. Едиственно, не помешала бы возможность аранжировки открытых окон, но этого можно обычно добиться средствами большинства оконных менеджеров.
Еще в Nedit нет штатных средств управления проектом. Хотя бы в элементарном исполнении, то есть в виде открытия и сохранения группы связанных файлов (глав книги, например, или серии web-страниц). Тем не менее, все это не перечеркивает высоких достоинств редактора.
Однако мало было бы проку от богатства возможностей редактирования, если бы они не сопровождались адекватным богатством настроек. Что же, посомтрим, каковы они, возможности настройки.
ХОЖДЕНИЕ ПО ФАЙЛАМ
^X ^F Войти в файл по запросу ^X ^V Войти в файл по запросу в том же окне ^X 4 ^F Войти в файл по запросу в другом окне ^X ^S / S Сохранить файл / все файлы ^X ^C Выйти из всех файлов с сохранением M-~ Забыть что файл был изменен ^X ^W Записать файл под другим именем write-file M-x<имя файла> Поменять имя файла после записи ^X ^D<каталог> Список файлов в каталоге ^X d Dired режим ^U ^X ^D<каталог> Список файлов в каталоге M-x view-file Просмотр файла M-x insert-file Вставка файла ^X ^S / S Сохранить файл(ы)Including LaTeX definitions in txt2html
Often, when using LaTeX, it is desirable to have a seperate file with shorthand definitions that are used in formulae. Such definitions can be defined in html by supplying them in a file and entering the name of the file on the command line. For exampletxt2html file.txt extras.tex
will include extras.tex in all mathematical symbols produced by LaTeX.
Versions for DOS, WINDOWS and
Russian codepage convertor version 3.11
(c)w_re rusconv v.3.11
IT IS LIKELY:
DOCUMENTATION:
IN NEXT VERSIONS:
FEEDBACK:
Program distributed free, but register to
LICENSE:
HAVE A NICE WORK!
index-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Info? Это что?
Info -- это файлы в ASCII-формате с возможностью перехода между связанными гиперссылками различными документами и удобные для просмотра на экране. При проектировании предполагалось, что формат будет переносимым между всеми платформами, на которых возможно выполнение программ проекта GNU. Info ориентирован на текст, так что файл Info можно просмотреть и в консоли текстового режима. Высококачественная графика доступна только при выводе на печать. Таким образом, формат Info дублирует возможности HTML, за вычетом некоторых графических добавок. Тем не менее, texi2html(1) может преобразовывать исходники Texinfo (.texi) непосредственно в HTML, о чем можно прочесть в разделе .Информация к размышлению
Я только слегка затронул тему SGML и его применения. Тех, у кого есть доступ к Интернет, могут заинтересовать следующие ресурсы.Информация о месте текущего элемента в иерархии документа
В главе "Настройка переменных редактора Emacs" говорилось о необходимости присвоения ненулевого значения переменной sgml-live-element-indicator, чтобы сообщить PSGML о необходимости отображения типа документа и имени текущего элемента в строке состояния. Более подробную информацию о месте текущего элемента в общей структуре документа, можно получить с помощью команды sgml-show-context (C-c C-c). Информация о месте текущего элемента в иерархии документа выводится в окне минибуфера.Например, переместите курсор в приведенном выше тексте на слове "Kokovoko" и нажмите C-c C-c. В окне минибуфера появится следующее сообщение:
| #PCDATA in emphasis in para in sect1 in chapter |
Альтернативный вызов - пункт Show Context меню SGML.
ИНФОРМАЦИЯ
M-x what-page M-x what-line M-= / ^= размер файла / позиция курсора ^X l о страницеInitial Window Size
Как нетрудно понять, здесь задается размер окна по умолчанию, возникающего при запуске NEdit. Предусмотрено пять вариантов такового:Первые четыре в комментариях не нуждаются, пятый же вариант позволяет задать произвольное количество строк и столбцов. Подчеркну тольк, что речь идет о размере окна именно в знаках, а не в пикселях, поэтому реальный размер окна зависит от используемых по умолчанию гарнитуры и кегля шрифта.
Наконец, финал - настройки
Инструкция choose
Последний xslt-элемент, который я хочу вам продемонстрировать, это элемент choose. Он очень похож на инструкцию switch языка программирования C.Первым должен идти элемент xsl:choose, а за ним дополнительные (один или несколько) элементы xsl:when, если требуется обрабатывать значение не подпадающее ни под одно из условий имеющихся элементов xsl:when, то вы можете добавить элемент xsl:otherwise:
Функция position() возвращает порядковый номер обрабатываемого элемента, в нашем случае -- документа. В данном примере нас интересует только четность порядкового номера, тем самым мы получаем возможность выделять четные и нечетные строки таблицы различным цветом. Я поместил элемент xsl:otherwise исключительно в демонстрационных целях, фактически же вы никогда не увидите строку с белым фоном в нашей таблице.
Если вы спросите меня зачем я вставил секцию CDATA, то я вам отвечу, если бы я этого не сделал, то XSLT-процессор генерировал бы сообщения об ошибке по поводу отсутствия закрывающего тега (), но в нашем случае этот тег находится ниже. По той же самой причине, закрывающий тег так же должен быть оформлен в виде секции CDATA.
Я привел лишь короткий отрывок из примера, полный текст файлов xsl и html вы найдете по ссылкам:
Инструкция for-each
Если вы внимательно посмотрите на xml-документ, приведенный выше, то заметите, что авторы представлены в виде списка имен, разделенных запятыми. Очевидно, что наилучшим выходом было бы поместить имена авторов в отдельные тегиИ вывести каждое имя в отдельной строке с помощью xsl:apply-templates и xsl:template match, но то же самое можно сделать и с помощью инструкции xsl:for-each.
В этом случае XSLT-процессор пройдет по списку авторов документа и, если вас интересует какой шаблон я использовал для обработки тегов
Инструкция if
Иногда возникает необходимость поместить в выходной документ некоторый текст, если задан какой-либо xml-элемент (или его атрибут), либо другой текст, если этот элемент (или атрибут) отсутствует. В таких случаях можно использовать элемент xsl:if. Я продемонстрирую вам как это делается (этот пример взят из моих наработок в проекте TLDP-ES). Если вам известно, что некий исходный документ был преобразован в формат PDF, PS или HTML, то это обстоятельство можно отразить в xml-файле, т.е. если был создан PDF-файл, то в выходной html-файл вставляется ссылка на него:Если атрибуту pdf документа присвоено значение "yes", как показано в примере:
То в выходной html-файл будет вставлена ссылка на документ в PDF-формате. Если атрибуту присвоено значение "no" или любое другое, допустимое вашим преобразованием, значение, то ссылка не будет вставлена. Все вышесказанное вы можете увидеть в xsl и xml документах:
Инструментальный набор
Примерный список средств для создания XML-документов:Adept Series. Осуществляет поддержку SGML и XML. Компания ArborText, .
WYSIWYG. Представляет собой редактор SGML со встроенной японской версией Unicod, спецификацией XML для представления двухбайтовых символов. Grif S.A., .
XML Parser. Проверяет состояние и адекватность документов. После анализа документ XML представляется в виде дерева методов Java, обеспечивающих чтение-запись структур XML. Корпорация Microsoft, .
Web Automation. Инструмент для создания Java-классов. Умеет считывать HTML или XML-структуру документов и преобразовывать ее в объекты, которые можно в дальнейшем использовать в приложениях Java. Компания webMethods, .
- Линда Радосевич,
InfoWorld Electric
Инструменты
В этой секции я приведу описание некоторых инструментов, которые могут вам понадобиться для создания собственной LDP документации. Я лишь опишу их здесь, подробнее об их использовании и установке вы сможете прочитать позже. Если вы используете какие-нибудь еще инструменты при написании LDP документации, пожалуйста дайте мне знать и я добавлю информацию о них в этот документ.Инструменты
makeinfomakeinfo преобразует файлы Texinfo (.texi) в
Файлы Info
По умолчанию, makeinfo создает файл Info с именем, указанным параметром @setfilename. Опция --no-split не разрешает makeinfo дробить выходной файл на отдельные файлы [chunks] приблизительно по 50KB каждый.
Помимо всего прочего, обработка файла Texinfo программой makeinfo тщательно проверяет его синтаксическую структуру.
Текстовой файл ASCII
Опция --no-headers требует от makeinfo создать простой текстовой ASCII-файл. Формат текстового файла полезен при вычитке экранной версии и удобен для проверки правописания с помощью, например, diction(1).
texi2html
По названию команды вы, наверное, уже догадались, что texi2html преобразует файлы Texinfo в HTML. С помощью опции -monolithic вывод осуществляется в виде одного файла. Другая опция, -split указывает создать отдельный файл для каждого узла.
По умолчанию texi2html транслирует секции @iftex и не использует разделы @ifinfo. С помощью опции -expandinfo можно получить противоположный результат.
Обратите внимание на то, что опции texi2html начинаются с одного дефиса.
texi2dvi
Создает из исходного файла Texinfo файл в независимом от устройства формате .dvi. Применение dvips(1) к файлу .dvi позволяет получить на выходе код Postscript. Я нахожу полезными опции --clean и --quiet. Первая удаляет промежуточные файлы, оставляя только файл .dvi. А вторая отключает вывод необязательных сообщений (тут автор использует "непереводимую игру слов": No gnews is good gnews!'', т.е. "Отсутствие гнуовостей -- хорошая гнуовость" -- прим. перев.).
texi2pdf
texi2pdf за "один присест" создает из исходного файла Texinfo файл в формате Переносимого Документа [Portable Document File] (.pdf). Можно использовать те же опции, что и в случае texi2dvi. Я, однако, заметил, что texi2pdf определенно требуется опция --pdf, иначе он останавливается, громко требуя файл .dvi, даже когда этот файл точно существует. Гр-р! Так что я обычно выполняю следующее:
texi2pdf --quiet --clean --pdf foobar.texi
разработка Iris Computing Laboratory) предназначен
Редактор Iris Х Editor ( разработка Iris Computing Laboratory) предназначен для программистов и имеет собственный интерфейс под Х Window. При запуске Вы увидите чистый экран - ни меню, ни строки статуса - т.е. все нацелено на то, чтобы отобразить на экране как можно больше исходного кода программы. Информация всегда появляется во всплывающих окнах, что поначалу немного раздражает, но потом привыкаешь. Для работы с блоками текста предусмотрено четыре буфера временного хранения (clipboard). Вставку текста из такого буфера можно произвести одним нажатием кнопки мыши, что очень удобно. Недостатком редактора является полное отсутствие базовых средств форматирования.Исходный текст message catalog-a:
example.msg file:| $quote " $ every message catalog should have a beginning set number. $set 1 This is the set 1 of messages 1 "Hello world\n" 2 "Good Morning\n" 3 "example: 1000.220 Read permission is denied for the file %s.\n" $set 2 1 "Howdy\n" |
Использование PSGML
PSGML облегчает возможность редактирования файлов SGML, добавляя команды для работы с фрагментами документа SGML, а также обеспечивая возможность вызова большинства этих команд через нажатие комбинации клавиш и пункты меню. Даже если версия Emacs или операционной системы, не поддерживает различные экранные шрифты, выделение цветом, или меню, к услугам пользователя PSGML еще остается встроенная интеллектуальная подсказка. PSGML читает и анализирует структуру документа, принимая на себя основные заботы по разметке текста и поддержке элементов DTD, помогая тем самым пользователю сосредоточится на содержании.Использование редактора VI

Резюме:
Это руководство написано . Оригинал находится на www.eng.hawaii.edu/Tutor/vi.html. Другие руководства этого автора на: www.eng.hawaii.edu/Tutor/. Мы обнаружили этот материал на http://www.rootprompt.org/ и опубликовали с разрешения автора.
Редактор vi используют многие пользователи Unix. VI очень удобен для программистов, но для начинающих он оказывается довольно трудным. Это руководство написано для новичков, но также содержит разделы для опытных пользователей vi. Здесь представлено множество примеров, которые для лучшего понимания необходимо выполнить, а также подумать над своими собственными. Лучший путь в изучении - практика.
Использование шрифтов type 1 с пакетом Ghostscript
Ghostscript ссылается на шрифт через свой файл Fontmap. Он должен быть подправлен так же, как и файл fonts.dir в случае X11. Ghostscript может использовать файлы шрифтов в форматах .pfa или .pfb. Взяв шрифт из предыдущего примера, его можно использовать с Ghostscript вот так:Помещаем файл со шрифтом в каталог со шрифтами Ghostscript % cd /usr/local/share/ghostscript/fonts
% ln -s /usr/local/share/fonts/type1/showboat.pfb .
Редактируем Fontmap, чтобы Ghostscript знал о шрифте % cd /usr/local/share/ghostscript/4.01
% ex Fontmap :$a /Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat . :wq
Используем Ghostscript для проверки шрифта % gs prfont.ps
Aladdin Ghostscript 4.01 (1996-7-10) Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb... /1899520 581354 1300084 13826 0 done. GS>Showboat DoFont
Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb... 1939688 565415 1300084 16901 0 done. >>showpage, press
Справочная информация: fonts.txt из дистрибутива Ghostscript 4.01
X11 может использовать файлы шрифтов
X11 может использовать файлы шрифтов в формате .pfa или .pfb. Шрифты для X11 располагаются в различных подкаталогах в /usr/X11R6/lib/X11/fonts. На каждый файл со шрифтом имеется ссылка по его X11-имени в файле fonts.dir в каждом таком каталоге.Существует каталог по имени Type1. Самым простым способом добавить новый шрифт заключается в помещении его в этот каталог. Но лучше хранить все новые шрифты в отдельном каталоге и использовать символические ссылки для добавляемых шрифтов. Это позволяет легко управлять отдельными добавляемыми шрифтами, не путая их с изначально поставляемыми. Например:
Создаем каталог для файлов шрифтов % mkdir -p /usr/local/share/fonts/type1
% cd /usr/local/share/fonts/type1
Помещаем сюда файлы .pfa, .pfb и .afm Кому-то может потребоваться хранить здесь также сопроводительные файлы и документацию к шрифтам % cp /cdrom/fonts/atm/showboat/showboat.pfb .
% cp /cdrom/fonts/atm/showboat/showboat.afm .
Обновление индексного файла со ссылками на файлы шрифтов % echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX
Теперь, чтобы использовать новый шрифт с X11, нужно дать доступ к файлу шрифтов и обновить файлы и именами шрифтов. Имена шрифтов в X11 выглядят следующим образом:
-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1 | | | | | | | | | | | | \ \ | | | | | \ \ \ \ \ \ \ +----+- набор символов | | | | \ \ \ \ \ \ \ +- средняя ширина | | | | \ \ \ \ \ \ +- spacing | | | \ \ \ \ \ \ +- разрешение по вертикали | | | \ \ \ \ \ +- разрешение по горизонтали | | | \ \ \ \ +- пунктов | | | \ \ \ +- пиксел | | | \ \ \ foundry family weight slant width additional style
Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас есть какая-либо информация из сопроводительной документации к шрифту, то она может служить основой для создания имени. Если информации нет, то можно получить некоторую информацию от использования программы strings(1) над файлом шрифта. Например:
% strings showboat.pfb | more
Используемые программы
В качестве SGML-редактора я использую , включающий в комплект поставки SGML-модуль psgml. Ядром SGML-процессора был выбран . Для форматирования в HTML, RTF и LATEX написан набор спецификаций на CoST. Используется nsgmls, парсер из пакета SP. Управлению версиями помогает пакет контроля версий .История LyX
Проект был основан Matthias Ettrich. В настоящее время он не в проекте, поскольку является сейчас лидером проекта KDE.Последняя стабильная версия - 0.10.7. Она была выпущена в конце 1996 года. Следующая стабильная версия (0.12.0) готова к выпуску (фактически, в момент чтения вами этой статьи это может быть текущая версия). Эта статья основана на версии 0.12.0.pre7. Продолжается работа над кодом и каждую неделю выходит новая версия с исправленными(и новыми ;-) - прим. перев.) ошибками и новыми возможностями. Метод нумерации (версий) сходен с нумерацией использумой для ядра Linux: стабильные версии имеют четное второе число, и разрабатываемые версии имеют нечетное число.
XML не только предоставляет выгоды
Как можно заключить из вышесказанного — XML не только предоставляет выгоды и удобства, но и требует особого внимания к продуманной архитектуре вашего приложения. При разработке XML-приложений уделяйте больше времени моделированию и меньше кодированию — и тогда у ваших приложений будет будущее. Чем мощнее технология, тем более серьезные ошибки вы можете допустить — в этом смысле XML не исключение и не представляет собой ничего нового.Арсений Чеботарев,
ac@comizdat.com
Прислать свою статью для публикации в журнале
Просто поговорить
Получить именной бланк подписки на "бумажную" версию
До следующего выпуска!
Елена Полонская, редактор "К+П"
www.comizdat.com
Перепечатка материалов этой рассылки разрешается только по согласованию с редакцией журнала "Компьютеры+Программы" [an error occurred while processing this directive]
Изменение команды проверки
Для сохранения команды проверки синтаксиса (той самой, которая запускается нажатием C-c C-v), PSGML создает в среде Emacs переменную sgml-validate-command. Если нужно изменить команду, то измените значение этой переменной в файле .emacs. Пусть, например, при вызове команды describe-variable (C-h v) Emacs выдает, что переменная sgml-validate-command имеет следующее значение:| nsgmls -s %s %s |
(%s %s показывает, куда Emacs при выполнении данной команды вставляет имена редактируемых файлов. Синтаксис команды наверняка знаком С-программистам.) Если нужно, чтобы PSGML, запускал при нажатии C-c C-v sgmls вместо nsgml, отредактируйте следующую строку в .emacs-файле:
| (setq sgml-validate-command "sgmls -s %s %s") |
Помните, команда проверки может нуждаться в файле объявлений SGML. Если при работе часто используется один и тот же файл объявлений SGML, можно добавить его в строку .emacs, устанавливающей значение переменной sgml_validate_command:
| (setq sgml-validate-command sgmls -s \\sgml\\dtds\\docbook.dcl %s %s ) |
(Обратите внимание на использование двойных обратных слешей для того, чтобы поместить обратные слеши в строку команды.) Естественно, что в случае ненадобности использования файла объявлений SGML, сохраняется возможность редактирования команды после нажатия C-c C-v.
Jade
Необходим если вы не используете openjade - ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gzJade это фронт-енд процессор для SGML. Он использует DSSSL и DocBook DTD для верификации и визуализации SGML в другие форматы.
Языки, символы и кодировки.
Here is the whole set! a character dead at every word.- Richard Brinsley Sheridan, The School for Scandal,
Act 2, scene 2
Языки, символы, кодировки :
Вводит формальное определение кодировки KOI8-R ( КОИ-8 )
и нового charset для MIME :
Content-Type: text/plain; charset=KOI8-R
Content-Type: text/html; charset=KOI8-R
Эмуляторы
Эмуляторы редакторов из других операционных систем (как правило, с мэйнфреймов и суперминикомпьютеров) представляют интерес только для экс-программистов тех систем, которые перешли под UNIX и не желают привыкать к какому-либо другому текстовому редактору. Зачастую оказывается, что такой редактор уже морально устарел: новые редакторы используют новые технологии обработки текстов. Поэтому рекомендовать редактор-эмулятор новичку можно лишь с оглядкой на vi.Эпилог
Подводя итоги, можно сказать, что по своим возможностям и настраиваемости NEdit вплотную приближается к emacs (а учитывая возможность сколь угодно широкого наращивания функциональности пунктов меню Shell и Macro - возможно, и не уступает). В то же время он предоставляет пользователю удобный и привычный интерфейс, лишенный архаических особенностей как emacs, так и vi.Недостатки NEdit я уже отмечал: это отстутствие инструментальной панели и истинно многооконного интерфейса, а также средств управления проектом. Однако первые два замечания - спорны, а последняя функция в элементарном исполнении, то есть в виде открытия и сохранения группы связанных файлов (глав книги, например, или серии web-страниц), как мне представляется, можно реализовать с помощью встраиваемых в меню сценариев оболочки и макрокоманд. Тем более, что зачатки управления проектом, в виде возможности открытия файла при выделении его в редактируемом тексте, имеются.
Короче говоря, если NEdit и не отвечает в полной мере идеалу текстового редактора, то вплотную к нему приближается. На мой взгляд, это один из лучших редакторов вообще и, пожалуй, лучший на платформе Linux. Дополнительное достоинство его - отсутствие привязки к конкретной графической среде (типа KDE или GNOME) и представленность во всех Unix-системах.
В общем, этот редактор мне так понравился, что я без тени сомнения добавил его в список любимых программ, о которых, как и о любимых женщинах, буду помнить всю жизнь. Надо сказать, что за десять лет околокомпьютерного существования список этот (программ, как, впрочем, и женщин) отнюдь не велик. Ранее в нем были QuattroPro для DOS (не для Windows) от электронных таблиц, Lotus AmiPro - от текстовых процессоров, Surfer в обоих своих (DOS и Windows) ипостасях. Теперь в этом списке - и NEdit.
А написал я все это по двум причинам. Во-первых - к вящей, как уже говорил, славе редактора NEdit. Во-вторых, руководствуясь шкурным интересом: вдруг кто-нибудь, обладающий должной квалификацией, заинтересуется программой и напишет к ней достаточное кличество качественных наборов макросов на все случаи жизни. Конечно, такая коллекция присутствует на http://www.nedit.org/, но достучаться до нее из России - нелегко, и потому о ее возможностях сказать что-либо затрудняюсь.
+ЮспщьвпФьО МзЮпщп
+п БузАБчрчэ БуЮэьщпшу Emacs впщьэпуБ руАЛ МзЮпщ. ¦ АьАБуэу X Windows Emacs АчвтпуБ тшО АуяО Арчь X-чзщп. +К ьАъчшЛвЦуэ БуЮэьщ ДЮуыэтшО чячвщпГущьО рАусч БузАБчрчсч МзЮпщп ьшь рАусч X-чзщп, ьАъчшЛвЦуэчсч Emacs. +яп рьтп ДЮуыэчр ьАъчшЛвЦНБАО р Emacs чтьщпзчрч тшО чБчяЮпжущьО рпХусч БузАБп. +яКГщч Emacs впъЦАзпуБАО БчшЛзч А чтщьэ ДЮуыэчэ, щч ъЮь жушпщьь рК эчжуБу АчвтпБЛ тчъчшщьБушЛщКу. аэчБЮьБу Юпвтуш .
¦чстп рК впъЦАзпуБу Emacs, руАЛ ДЮуыэ, вп ьАзшНГущьуэ ъуЮрчы ь ъчАшутщуы АБЮчзь, чБрчтьБАО тшО ЮутпзБьЮЦуэчсч БузАБп. мБп чяшпАБЛ щпвКрпуБАО чзщчэ. ©уЮрпО АБЮчзп щпвКрпуБАО ъчшчАзчы эущН, п ъчАшутщОО -- МБч чАчяпО МЕч-чяшпАБЛ ьшь чзщч эьщьяЦДуЮп, сту ъчОршОНБАО впъЮчАК, ь зЦтп рК эчжуБу рруАБь чБруБК. ¦пшЛщуыХьу АрутущьО чя МБьЕ АъуФьпшЛщКЕ АБЮчзпЕ АэчБЮьБу щьжу.
бузАБчрчу чзщч эчжуБ яКБЛ ъчтушущч ъч счЮьвчщБпшь ьшь руЮБьзпшь щп щуАзчшЛзч тЮЦсьЕ чзчщ, зпжтчу ьв зчБчЮКЕ эчжуБ яКБЛ ьАъчшЛвчрпщч тшО чБтушЛщчсч Дпышп (АэчБЮьБу Юпвтуш ). ¦ тпщщчэ ЮЦзчрчтАБру Ашчрч "чзщч" рАустп чячвщпГпуБ ГпАБЛ ДЮуыэп рщЦБЮь Emacs.
бч чзщч, р зчБчЮчэ щпЕчтьБАО зЦЮАчЮ, щпвКрпуБАО рКяЮпщщКэ чзщчэ; р щуэ ьтуБ ЮутпзБьЮчрпщьу. ¦чшЛХьщАБрч зчэпщт Emacs щуОрщч чБщчАОБАО р БузАБЦ р рКяЮпщщчэ чзщу (ЕчБО зчэпщтК эКХь зпз ъЮпрьшч туыАБрЦНБ р Бчэ чзщу, р зчБчЮчэ рК ИушзщЦшь, рщу впрьАьэчАБь чБ Бчсч, рКяЮпщч чщч ьшь щуБ). +АБпшЛщКу чзщп АЦИуАБрЦНБ ъЮчАБч тшО АъЮпрзь, ъчзп рК щу рКяуЮуБу чтщч ьв щьЕ. ¦Ашь рК ьАъчшЛвЦуБу щуАзчшЛзч ДЮуыэчр р АьАБуэу X Windows, Бч ъуЮутпГп ДчзЦАп ррчтп щузчБчЮчэЦ ДЮуыэЦ рКяьЮпуБ чзщч р МБчэ ДЮуыэу.
©чАшутщОО АБЮчзп зпжтчсч БузАБчрчсч чзщп щпвКрпуБАО АБЮчзчы Юужьэп, зчБчЮпО чъьАКрпуБ ъЮчьАЕчтОИуу р МБчэ чзщу. +щп рКрчтьБАО р ьщруЮАщчэ рьту, уАшь БуЮэьщпш ъчттуЮжьрпуБ МБч, ь АчтуЮжьБ БузАБ, зчБчЮКы щпГьщпуБАО ъЮь АБпЮБу Emacs Ач АБЮчзь `--:-- *scratch*'. аБЮчзп Юужьэп ъчзпвКрпуБ АрутущьО ч БузЦИуэ АчАБчОщьь, щпъЮьэуЮ, зпзчы яЦДуЮ ъчзпвпщ р чзщу щпт щуы, зпзьу чАщчрщКу ь рБчЮчАБуъущщКу ЮужьэК р щуэ ьАъчшЛвЦНБАО, ь АчтуЮжьБ шь МБчБ яЦДуЮ щуАчЕЮпщущщКу ьвэущущьО.
©ЮутэуБщКы ЦзпвпБушЛ
@anchor{Concept Index} ¦КАБЮКы ъуЮуЕчт:-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как я набрел на SGML-технологию
Все началось с интранета. Это модное слово означало для меня на практике то, что документы, которые я регулярно писал по роду своей деятельности, стало можно и нужно делать доступными "online". До сих пор я просто набирал документы в TEX-e и печатал их на бумаге. Идея дублировать их в HTML вручную отпала сразу: немедленно возникла бы проблема синхронизации бумажной и электронной версий одного и того же документа.А вскоре потребовалось периодическая передача документов посторонним людям в электронной форме, что, по сложившейся у нас практике, означает -- в формате Microsoft Word. Работать с MS Word у меня по ряду причин не было никакого желания, к тому же это только усугубило бы проблему синхронизации версий.
Значит, нужно было придумать способ автоматического преобразования набираемых документов в различные форматы: TEX-a -- для печати на бумаге, HTML -- для помещения на WWW сервер, Word -- для обмена с работающими в Windows. Кроме того, мне хотелось, чтобы такое средство отвечало еще ряду требований:
Первым, что попалось мне под руку после похода на , оказался пакет под названием . Он как раз и предназначался для генерации HTML, TEX и RTF из одного входного файла. Широко используемый в рамках , он использовал в качестве входного формата незнакомый мне до сих пор язык . Впрочем, ничего сложного в нем не оказалось -- он весьма напоминал знакомый мне и выглядел вполне понятно. Вот, к примеру, кусочек SGML-документа:
All TEI-conformant texts contain
|
Для того, чтобы начать на этом писать, потребовалось всего лишь запомнить несколько основных элементов разметки, например, что означает начало параграфа,
Набранный в SGML текст далее запуском одного фильтра преобразуется в HTML, другого -- в TEX, третьего -- в RTF, и так далее.
Как получить Emacs
Emacs, по современным меркам, является очень старым продуктом. Его возраст и открытость кода привели к тому, что в настоящее время существует несколько независимых версий редактора. На данный момент стандартной считается версия Free Software Foundation's GNU Emacs. Другие версии редактора в большей или меньшей степени отличаются от стандартной, и поэтому с большой вероятностью расширения, предоставляемые пакетом PSGML, с ними работать не будут. Автор использовал версию GNU Emacs "EMX release 19.29.2" для DOS и "EMX release 19.30" для Windows 95. Также использовалась версия 1.0 alpha 6 PSGML.Все версии редактора GNU Emacs, начиная с 19.19, а также все версии Xemacs, начиная с версии 19.9, будут работать с PSGML.
ПРИМЕЧАНИЕ:Стафлин (Staflin) сделал доступным использование PSGML под UNIX. Если у возникли проблемы с использованием новейшей версии PSGML в операционной системе - попробуйте другую версию PSGML. Было разработано несколько версий.
Как проверить, что локализация заработала ?
Если у Вас полная реализация POSIX.21996, то проще всего воспользоваться утилитой locale.
Применяя можно получить множество полезных сведений :
e.t.c.
e.t.c.
Также можно воспользоваться такой короткой прогрммкой :
| /* testlocl.c : Минимальная проверка работоспособности locale, категория LC_CTYPE, "ключевое слово" - alpha */ #include #include main() { unsigned char c=0x0f9; setlocale(LC_ALL, ""); printf("LC_CTYPE\t= %s\n", setlocale(LC_CTYPE, NULL)); printf("isalpha(%c)\t= %s\n", c, isalpha(c) ? "yes" : "no" ); return 0; }
| |
Для русской локализации в koi8-r согласно , коду 0x0f9
соответствует русская буква "Ы" :
F9 CYRILLIC CAPITAL LETTER YERI
то есть. :
$ cc -o testlocl testlocl.c $ ./testlocl LC_CTYPE = ru_RU.KOI8-R isalpha(Ы) = yes $
Правильность работы категории LC_COLLATE
можно проверить даже не компилируя тестовых программок, предполагая, что утилиты tr и dd работают в соответствии с POSIX :
$ echo ы | tr '[:lower:]' '[:upper:]'
Ы $ echo ы | dd conv=ucase Ы 0+1 records in 0+1 records out $
Как работает locale ? (пример Linux)
/* Несколько устаревшие сведения на 1 Dec1998*/Для операцонной системы Linux
имеют хождение одновременно версий Linux libc, с различной степенью поддержки locale. Hиже приведен краткий обзор версий Linux libc.
Исторически, Linux libc ведет свое происхождение от free библиотеки GNU libc
(glibc), которая в своей последней стабильной версии ( GNU libc 1.0.9 ) не имела поддержки других locale кроме "C" и соответственно не имела возможности их менять. Эта библиотека дала рождение ветке Linux libc
4.x.x и 5.x.x которая постоянно совершенствовалась, переписывалась и кроме других полезных возможностей постепенно приобрела и средства locale.
... glibc1 libc-4 a.out libc libc-5 original ELF libc libc-6 GNU libc (glibc2, glibc2.1)
В старой, последней a.out (не-ELF) библиотеке, Linux libc 4.7.5 была возможность переключаться на другие значения locale, но только на заданные в процессе компиляции библиотеки. Для автоматической генерции *.c файлов с описаниями параметров локализации применялись специальные утилиты (реализация Nikolay Saukh ) /* Сильно похоже на старые SCO UNIX */.
В ELF версии Linux libc 5.0.9 (получившей довольно широкое распространение в дистрибутивах Slackware 2.x, RedHat и Caldera 1.x с ядром Linux 1.2.13-ELF) появилась возможность задавать любые значения локализации.
Hо сначало надо немного обратится к реализации locale в современной библиотеке Linux libc.
Напомним, что интернационализация
-- это дизайн (способ проектирования) программного обеспечения, при котором КОД не зависит от национальных особенностей. При таком подходе : локализация -- это процесс изготовления особых "объектов локализации", в которых сосредоточены языково-зависимые данные. Эти данные разбиты на функциональные группы : категории локализации.
Как мы выяснили ранее, различным категориям локализации могут быть присвоены различные значения и причем в разное время - разные. Естественно предположить, что они как-то куда-то динамически загружаются. И действительно, вызов (LC_XXXXX,"ru_SU.KOI8-R")
будет пытаться открыть файл "/usr/share/locale/ru_SU.KOI8-R/LC_XXXXX"
и считать его внутрь структуры в run-time части libc. Это все происходит совершенно прозрачно для пользователя.
Имя файла для считывания конструируется динамически :
/usr/share/locale/ru_RU.KOI8-R/LC_XXXXX
| /usr/share/locale/ | это константа, определяющая каталог в котором хранится база локализации. Различно для различных операционных систем. Для Linux смотри LFSSND (/usr/share/locale/). Для Intractive UNIX: /lib/locale/. Вообще-то IMHO должно использоваться _PATH_LOCALE из |
| ru_RU.KOI8-R/ | подкаталог в базе докализации, где "ru_RU.KOI8-R" - значение локализации. |
| LC_XXXXX | файл данных для загрузки в run-time libc для категории локализации LC_XXXXX. Этот файл называется "объект локализации". |
и если там найдутся файлы, имена которых совпадают с именами (LC_ - locale categories) категорий локализации (LC_CTYPE, LC_COLLATE, e.t.c.) -- то они загружаются. Для остальных категорий остается значение по умолчанию : "C".
Таким образом, при правильной установке локализации, должны существовать следующие каталоги: (пример)
$ ls /usr/share/locale/*
C
POSIX
ru_RU.KOI8-R
en_DK.ISO-8859-1
...
* ПРИМЕЧАHИЕ: В полном POSIX.2 точно тот же результат даст утилита:
$ locale -a
C
POSIX
ru_RU.KOI8-R
en_DK.ISO-8859-1
...
Также должны существовать файлы ("объекты локализации") : (пример)
$ ls /usr/share/locale/ru_RU.KOI8-R/*
LC_CTYPE
LC_COLLATE
LC_MONETARY
LC_NUMERIC
LC_TIME
Теперь вопрос, откуда взять данные файлы ? ;-) См. или или .
В упомянутой выше версии Linux libc
5.0.9 подсистема locale работала именно так, однако не было утилит для создания загружаемых "объектов локализации". Те утилиты, которые входили в ее состав, генерировали объекты только для 4.4 BSD lite libc (почему ?).
Рабочие утилиты и , появились начиная с версии Linux libc 5.1.X. А начиная с 5.2.1X - в Linux libc уже есть все необходимое для работы с locale в соответствии с POSIX.2
. .
В широко распространенных дистрибутивах 4.1 и 4.2 применяется библиотека Linux libc 5.3.12 (ELF) содержащая вполне работоспособную систему locale. Однако, к сожалению, в дистрибутив RedHat не входили файлы "объекты локализации" для русского языка ru_RU.KOI8-R.
Однако GNU libc также развивалась и появилась версия поддерживающая locale
по стандарту POSIX 1996. Она была портирована для Linux и вскоре появились дистрибутивы, использующие GNU libc 2.0.x вместо Linux libc. Например, в состав дистрибутива RedHat Linux 5.2 (Apollo) (на glibc 2.0.7) входят все необходимые утилиты и "объекты локализации" - ru_RU (в ISO8859-5) и ru_SU (KOI8-R). Хотя, без там не обошлось.
В библиотеке Linux libc 5.4.x, многое взявшей от GNU libc 2.0.x реализована следующая версия кода, locale 2, и объекты локализации (файлы) от версий Linux libc 5.0.x - 5.3.Х уже не годятся. Однако, благодаря унификации POSIX
1996, эти файлы можно легко получить из текстового описания локализации и файла описания набора символов ().
В настоящее время развитие библиотеки Linux libc остановлено (на версии ~5.4.38), и общее направление развития --> слияние и переход на библиотеку glibc2. Но из за того, что существут огромное количество приложений, работающих с Linux libc, приходится иметь в системе версии библиотеки : Linux libc, называемую libc5
(например, версии 5.3.12) и GNU libc (например, glibc
версии 2.1), называемую libc6.
Содержание
Last change : 14-03-2000
Как работает txt2html.
txt2html это Tcl скрипт который преобразует простой текстовый ASCII файл в HTML документ. Имя выходного HTML файла базируется на имени входного ASCII файла. Например,txt2html index.txt
создаст html файл с именем index.html .
Modelled on LaTeX, txt2html позволяет разбивать документы на разделы и создавать списки. Файлы изображений в форматах GIF и JPEG могут быть легко вставлены как рисунки. Для создания HTML файла tex2html ищет в вашем текстовом ASCII файле операторы, которае определяют разделы, списки и т.д.. Операторы представляют собой знак % с последующим за ним ключевым словом. Например,
%section How txt2html works
было использовано для определения начала этого раздела. Полный список ключевых слов описан далее. Заметьте, что знак % определяет оператор только если он находится в колонке 1 (в начале) строки!
Как с этим бороться
А теперь зададимся вопросом: а для чего вообще понадобилось связываться со шрифтовым хозяйством TeX? Может быть, TeXmacs умеет корректно обрабатывать содержащиеся в шрифтах лигатуры (под лигатурой в TeX понимается сочетание двух символов, которые должны быть заменены или дополнены третьим символом при компиляции документа)? Да нет, не похоже. Или программа знает, как обращаться с акцентами-модификаторами? Ничего подобного. Правда, в TeXmacs предусмотрены специальные клавиатурные комбинации для печати акцентированных латинских символов, в готовом виде содержащихся в кодировке T1, но вот составить новый символ из буквы и акцента нельзя. Мало того, если в LaTeX кодировка рассматривается как один из атрибутов шрифта, то TeXmacs, имея дело со внутренними кодировками TeX, ничего, в сущности, о них не знает. Шрифты в разных кодировках являются для него, как и для большинства визуальных редакторов, совершенно различными гарнитурами, и уже дело пользователя следить за тем, чтобы выбранный шрифт соответствовал языку текста.Недоумение еще больше возрастает, когда мы обнаруживаем, что TeXmacs, оказывается, прекрасно умеет обращаться и со шрифтами, установленными в системе XWindow (по крайней мере, в формате Type 1 - насчет остальных ничего сказать не могу). Некоторый набор таких гарнитур (естественно, только латинских, и, естественно, в кодировке Adobe Standard, то есть, в сущности, в той же iso-8859-1) изначально доступен через меню программы. О такой мелочи, как различия кодировок, автор предупредить в документации. А эти различия, как мы уже убедились, как раз таковы, чтобы сделать абсолютно бессмысленными попытки сочетания шрифтового хозяйства TeX и XWindow в одном документе. Но, быть может, имеет смысл полностью переориентировать TeXmacs на шрифты Type 1, разом ликвидировав тем самым все вышеописанные проблемы?
Для разрешения этой задачи нам, во-первых, понадобится некий малый джентльменский набор кириллических гарнитур Type 1, состоящий из серифного, санссерифного и машинописного шрифтов. Я бы рекомендовал использовать шрифты в cp1251, но, если предпочтете koi8, не забудьте сконвертировать в эту кодировку файлы, отвечающие за русификацию интерфейса и русский перенос. Кроме того, для полноты операции желательно наличие совместимых гарнитур в западноевропейской кодировке. Далее я ради простоты картины буду исходить из предположения, что у нас имеется базовый набор коммерческих гарнитур от Paratype: NewtonC, PragmaticaC и CourierC для кириллицы, NewtonA, PragmaticaA и CourierA для западноевропейских алфавитов.
Шрифты эти, естественно, должны быть корректно установлены в системе XWindow. Далее мы могли бы сделать их доступными TeXmacs, внеся несколько дополнительных строк (по образцу уже имеющихся) в файлы TEXMACS_PATH/progs/fonts/x-fonts.scm и TEXMACS_PATH/progs/menu/main-menu.scm, которые, как это явствует из их названий, отвечают за загрузку шрифтов XWindow и конфигурацию меню. Но ведь мы хотели полностью отказаться от использования шрифтов системы TeX? Чтобы сделать это с наименьшими затратами, целесообразно переопределить шрифты roman и cyrillic, используемые программой по умолчанию. Для этой цели лучше всего создать новый файл, взяв за основу основу один из сценариев, ведающих загрузкой шрифтов (хотя бы тот же самый x-fonts.scm). Файл этот в нашем случае должен содержать следующие вхождения:
((roman rm medium right $s $d) (ps paratype-newtona-medium-r-normal $s $d)) ((roman rm medium italic $s $d) (ps paratype-newtona-medium-i-normal $s $d)) ((roman rm bold right $s $d) (ps paratype-newtona-bold-r-normal $s $d)) ((roman rm bold italic $s $d) (ps paratype-newtona-bold-i-normal $s $d))
((cyrillic rm medium right $s $d) (ps paratype-newtonc-medium-r-normal $s $d)) ((cyrillic rm medium italic $s $d) (ps paratype-newtonc-medium-i-normal $s $d)) ((cyrillic rm bold right $s $d) (ps paratype-newtonc-bold-r-normal $s $d)) ((cyrillic rm bold italic $s $d) (ps paratype-newtonc-bold-i-normal $s $d))
Далее создаются аналогичные строчки для гарнитур Pragmatica и Courier: помимо названий шрифтов меняется только показатель (т. е. roman) соответственно на (sansserif) и (typewriter). После чего надлежит сделать созданный файл доступным TeXmacs, прописав его загрузку в TEXMACS_PATH/progs/init.scm. Только загружаться он должен ранее всех прочих файлов из каталога TEXMACS_PATH/progs/fonts, если, конечно, у нас нет желания заниматься их редактированием на предмет истребления конфликтующих вхождений.
После этого не помешает просмотреть файлы из каталога TEXMACS_PATH/progs/keyboard (в первую очередь accents.scm) и вычистить из них те команды, которые имеют смысл только для кодировки T1. Кроиме того, целесообразно будет по-новому определить клавиатурные комбинации для печати наиболее распространенных типографских знаков препинания (то есть короткого и длинного тире, многоточия и парных кавычек всех видов). Нижеследующие определения будут работать правильно как для iso-8859-1, так и для cp1251:
("- -" "<символ с кодом 150>") ("- - -" "<символ с кодом 151>") (". . ." "<символ с кодом 133>") ("< <" "<символ с кодом 171>") ("> >" "<символ с кодом 187>") ("` `" "<символ с кодом 147>") ("' '" "<символ с кодом 148>") (", ," "<символ с кодом 130>")
Конечно, чтобы вставить в файл все перечисленные знаки, придется воспользоваться редактором со встроенной таблицей символов. Linux ведь не Windows - получить любой символ путем набора его кода на числовом блоке клавиатуры нельзя. Но это хотя бы не запретные коды из диапазона 0-32.
А теперь последний вопрос: стоит ли всем этим заниматься? Возможно, и стоит: ведь визуальных редакторов под Linux - раз, два и обчелся, а уж способность работать с многоязычными документами - свойство и вовсе уникальное. Только следует иметь в виду, что ваши наработки в TeXmacs не будут совместимы решительно ни с чем. Потому тот недостаток конвертера в формат LaTeX, о котором было сказано выше - далеко не единственный. Файлы, полученные с его помощью, производят страшноватое впечатление, и, главное, напрочь лишены той информации о шрифтовом форматировании и использованных языках, которая во внутреннем формате TeXmacs сохраняется достаточно эффективным способом. Ну а конвертеры для HTML и RTF пока лишь числятся в планах автора, и, соответственно, надежда на них слабая. Так что - думайте сами, решайте сами:
Как усовершенствовать TED?
Одно из главных усовершенствований редактора - добавление шрифтов.Внешний вид редактора Ted довольно прост, поэтому возникает желание улучшить и его. Портировать в Qt или GTK - непростая задача.
Тем не менее кое - какие изменения можно внести без изменения кода. Во время инсталляции Ted копирует файл Ted.ad.sample в /usr/local/info - это файл ресурсов редактора. Можно скопировать его в свой домашний каталог и переименовать в Ted.
С помощью этого файла можно установить используемый шрифт, размер листов бумаги, поля, словарь, пункты меню и т.д...
Файл Ted.ad.sample поставляется на английском языке, но я перевел его на французский и сделал доступным для всех. Было бы неплохо если бы вы перевели его также на другие языки.
Изображение 5. Кликните на изображении для детального просмотра.

Как установить locale ?
Способ установки средств localeможет довольно сильно различаться в операционных системах от разных производителей, особенно для старых реализаций POSIX до 1996 года и переходных реализациий.
Как описано , структурно средства POSIX locale состоят из следующих компонентов :
:
Предположим, что библиотека libc
на Вашей системе содержит все необходимые вызовы. Иначе придется поменять библиотеку (или систему). :-)
В стандарте POSIX.2 (Утилиты командной строки) определенны две утилиты - и . Если система отвечает стандарту POSIX.2:1996, на вашей машине они имеются.
Утилита служит для получения различной информации о текущих значениях категорий locale, o всех установленных в системе возможных locale и о внутренних характеристиках различных категорий locale.
Имея утилиту можно наличие необходимых "объектов локализации", а потом необходимое языковое окружение.
Ситуация чуть осложняется, если необходимые "объекты локализации" отсутствуют. К счастью, стандарт POSIX
варианта 1996 г. сделан более переносимым, не зависящим от конкретной реализации и все действия пользователя не различаюся от системы к системе и их внутренняя реализация скрыта за утилитами POSIX.2.
Если в системе не предустановлено нужные нам "объекты локализации", они могут быть добавлены в систему с помощью утилиты путем компиляции специальных (текстовых) файлов описания параметров : Файла Описания Набора Символов () и Файла Описания Локализации (locale definitions) . После этого они становится изветным системе и видимым по `locale -a`.
$ localedef -c -i ru_RU -f ISO_8859-5 ru_RU.ISO_8859-5 $ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
Данные файлы в исходном (текстовом) виде можно получить из коллекции или из комплекта исходных текстов библиотеки 2.x (./localedata/* ).
Файлы Описания Локализации (locale definitions) сделаны независимыми от Charset-а, поэтому один и тот же файл ru_RU подойдет для "компиляции" locale : ru_RU.ISO-8859-5, ru_RU.KOI8-R, ru_RU.CP1251.
К сожалению, в некоторых системах (например в glibc) изменяет имя Charset, поэтому после каталог необходимо .
Еще один вариант - это просто скопировать недостающие файлы-"объекты локализации" в двоичном виде. Некоторые производители UNIX поставляют для своих систем продукт "Language Kit", который есть ни что иное, как комплект данных файлов. К сожалению, стандарт POSIX никак не определяет внутренний формат объектов локализации. Поэтому "Language Kit" одной системы (или даже версии) скорее всего не подойдет к другой системе.
Для расширения кругозора, можно ознакомится с подсистемы locale в операционной системе Linux.
После выполнения необходимых установок, работоспособность locale можно .
Содержание ""
Last change : 13-04-2000
Как включить локализацию ?
Если на UNIX машине (с POSIX:1996) средства locale правильно и программы правильно , то локализация включается путем задания строки окружения :$ export LANG={язык}
Если такой строки окружения нет, то работает значение локализации по умолчанию : LANG="C"
или LANG="POSIX" (что то же самое) - минимальный набор параметров, необходимый для функцонирования программ на ANSI C (ISO 9899:1990), в кодировке US-ASCII (7 bit) ().
Если ваша система имеет полный набор утилит POSIX.2, то узнать установленные в системе и допустимые значения для LANG=
можно командой :
$ locale -a
По новому стандарту (POSIX.2
приложение E (?)) значения локализации записываются в форме:
language_TERRITORY.Codeset
или формально:
language[_TERRITORY[.Codeset[@modyfier]]]
Стандарт описывает "language names", - "territory names". Территории _SU
более не существует (вернее теперь она означает Судан), однако для совместимости некоторые системы продолжают ее поддерживать как alias : ru_SU --> ru _RU.
К сожалению, стандарта на названия Codeset-ов формально нет (см. ), но в основном принято пользоваться названиями, зарегистрированными для MIME в или в .
Для русского языка LANG={язык}
устанавливается как правило равным LANG="ru_RU.KOI8-R"
или LANG="ru_RU.ISO_8859-5" . То есть :
$ export LANG="ru_RU.KOI8-R"
Согласно стандарту допустимы также короткие именования значений locale, которые часто оформляются как aliases
(псевдонимы) полного наименования. Hапример "C" --> "POSIX".
$ export LANG=ru $ export LANG=ru_RU $ export LANG=ru_RU.KOI8-R
Однако, если вы указываете короткое имя, может оказаться что Codeset вовсе не KOI8-R
(см. например . Лучше не пользоваться умолчаниями, а указывать точное длинное имя.
Во FreeBSD 2.x так и есть. Для Linux
- зависит от дистрибутива. В коммерческих реализациях (Solaris, SCO, AIX e.t.c.) как правило используется значение LANG="ru_RU", или укороченное LANG="ru" (и как правило Codeset ISO8859-5 по умолчанию).
Hекоторые могут пожелать себе локализацию в другом наборе символов : ru_RU.X-CP-866
( ru_RU.IBM866 ), ru_RU.x-mac-cyrillic, ru_RU.ISO_8859-5
или даже ru_RU.CP1251 - на это нет никаких ограничений. :) Все эти кодировки совершенно
равноправны и зарегистрированы (кроме x-mac-cyrillic) в . Только не забудте, что локализация, и отображение национальных символов на терминале - это совершенно разные вещи.
Для США LANG={язык}
устанавливается LANG=en_US.US-ASCII (что полностью совпадает с LANG=C) или LANG=en_US.ISO646-IRV
(ISO646-IRV - это тот же US-ASCII, но опубликованный ). А вот для Великобритании необходимо устанавливать LANG=en_GB.ISO8859-1
поскольку в наборе символов US-ASCII не содержится символа "фунт стерлингов".
Переменная окружения впервые была введена в HP-UX Multi Language Subsystem
и формально относится к подсистеме , и поэтому имеет множество "побочных" эффектов : изменяет пути поиска и язык message-catalog-ов (), пути поиска и язык страничек man (MANPATH), влияет на систему X-Windows, MOTIF e.t.c.
Если система локализована не полностью и использовать полное переключение на другой язык (с помощью export LANG={язык}) нельзя, можно включить locale только для функций locale API библиотеки libc, задав значение . Можно также присваивать разные значения разным категориям, задавая их имена в строках окружения :
$ unset LANG
или
$ export LANG="C" $ export LC_CTYPE="ru_RU.KOI8-R" $ export LC_COLLATE="ru_RU.KOI8-R"
$ export LC_TIME="C"
- (если Вас раздражают русские даты, сообщения и man-ы, но нужно обрабатывать русские буквы ;-) и т.д.
По возможности сдедует использовать как можно более полное имя для задания локализации, например :
$ export LANG="ru_RU.KOI8-R" $ export LANG="ru_RU" $ export LANG="ru"
- первый вариант наиболее предпочтителен, поскольку точно задает язык, страну и кодировку.
Не рекомендуется
использовать строку окружения :
$ export LC_ALL={язык}
поскольку формально такой нет, она "виртуальная" и обозначает "одновременно все категории" (* - wildcard). Из за этого во многих реализациях locale API возникают проблемы после вызова функции поскольку LC_ALL оказывается "сильнее" чем конкретная категория, например LC_TIME.
Проблемы могут возникнуть также с программами, работающими с PostScript : в категории LC_NUMERIC локализации ru_RU
в соответствии со стандартом ГОСТ в качестве десятичного разделителя используется символ 'запятая' : "," в то время, как в стандарте языка PostScript : точка "." А категория LC_NUMERIC оказывает влияние на printf("%f",float);
. Используйте значение C (POSIX) для LC_NUMERIC, если вы работаете с PostScript
:
$ export LC_NUMERIC="POSIX"
Посмотреть текущие значения категорий локализации можно все той же утилитой
(без параметров).
$ locale
После включения, работу средств локализации можно .
* ПРИМЕЧАHИЕ: Хотя MIME и POSIX locale
используют одни и те же концепции charset и codeset, взаимоотношение между MIME и locale
далеко не Так что правильная настройка locale вовсе не гарантирует правильную работу почтовой системы (в области работы с национальными символами).
* ПРИМЕЧАНИЕ: В некоторых современных системах начинает появляться локализация в . Включается она заданием строки окружения LANG="en_US.UTF-8" для США или соответственно LANG="ru_RU.UTF-8" для России, LANG="ja_JP.UTF-8" для Японии и т.д. См: .
Содержание ""
Last change : 13-04-2000
Какие форматы файлов шрифтов я могу использовать?
То, файл шрифтов какого формата будет полезен, зависит от используемого приложения. Сама по себе FreeBSD шрифтов не использует. Прикладные программы и/или драйверы могут использовать файлы шрифтов. Вот краткий справочник по типам файлов шрифтов и приложениям/драйверам:Драйвер
syscons
.fnt
Приложение
Ghostscript
.pfa, .pfb, .ttf
X11
.pfa, .pfb
Groff
.pfa, .afm
Povray
.ttf
Окончание .fnt используется достаточно часто. Я полагаю, что когда кто-нибудь собирается создать файл шрифтов для своего приложения, чаще всего выбирается именно это окончание. Поэтому файлы с таким окончанием не все имеют одинаковый формат; в частности, формат файлов .fnt, используемых драйвером syscons во FreeBSD, может отличаться от формата файлов .fnt, встречающихся в MSDOS/Windows. Я даже не пытался использовать другие файлы .fnt, кроме тех, что поставляются с FreeBSD.
Какие шрифты?
После инсталляции Ted содержит 4 шрифта : Times, Helvetica, Courier и Symbol. Эти шрифты от Adobe в формате AFM. В принципе Ted может использовать любой шрифт этого формата. В ОС Linux шрифты расположены в /usr/share/enscript и /usr/share/ghostscript - использование их весьма соблазнительно потому, что поставляемый с редактором Ted шрифт Times ограничен размером 18 также как и шрифты Courier italic и Courier bold-italic.К сожалению я смог импортировать только шрифты Utopia, New Century SchoolBook и Palatino в /usr/local/afm и использовать их с Ted. Я попробовал различные размеры от 8 до 64 и результаты были положительными. Выбор конечно не богат, но принимая во внимание, что эти шрифты схожи с Times New Roman, а Helvetica с Arial - в нашем распоряжении находятся наиболее важные и часто используемые. Следовательно, например мы можем редактировать документы Word, ведь эти шрифты также наиболее часто используемые под Windows.
Изображение 3. Шрифты в Ted. Кликните на изображении для детального просмотра.

Позже появился интерес сохранить вид шрифтов в формате RTF и посмотреть как другие приложения обработают этот документ. Ниже, на изображении, вид AbiWord и нашего документа. В сравнении с Ted - изображение выше, впечатляет.
Изображение 4.

В поставку Ted входит файл TeDocument.rtf ( 712 KB ), в котором рассказывается где можно взять шрифты в формате AFM и как установить их. Каждый файл шрифта является его описанием в текстовом формате. Перед использованием их, необходимо удалить символы окончания строки и файла ( Strg-Z ). Инструкции звучат намного проще, чем реальные действия.
Категории локализации.
Как уже было замечено, в каждой отдельной стране способ представления данных отличается. Чтобы упорядочить все эти отличия, их объединяют в группы и особым образом описывают. Такая группа признаков называется Категория Локализации :| LC_CTYPE | Определяет правила классификации и преобразования одиночных символов. Позволяет правильно определять вид символа: цифра, буква, значок, заглавная буква или прописная и т.д. Другими словами, включает правильную работу , , , , ... и т.п. для местного алфавита. Вдобавок, включает правильный перевод строчных -- прописных букв: и . См. <> |
| LC_COLLATE | Определяет правила сравнения и преобразования строк. Позволяет определять лексикографический порядок символов (порядок сортировки) в местном алфавите. Включает правильную работу и . Оказывает непосредственное влияние на работу утилит типа и т.д. |
| LC_TIME | Определяет правила национального представления времени и даты. Задает именование дней недели, месяцев и т.п. а также задает способ написания даты и времени. (12/24) Hепосредственно влияет на а через нее на утилиты и т.д. |
| LC_NUMERIC | Определяет правила национального представления чисел с плавающей точкой. Влияет на strtod() и форматы %f и %g printf(), scanf(). |
| LC_MONETARY | Определяет правила национального представления денежных величин. (См. Currency Symbols ISO 4712) . |
Особая категория локализации LC_ALL
служит для обращения одновременно ко всем категориям, т.е. работает как '*' (wildcard).
В стандарте POSIX 1996 кроме категорий локализации стандартизированы также Ключевые Cлова (keywords), которые определяют внутреннее содержимое категорий локализации. Hапример, для категории LC_CTYPE определены ключевые слова: alpha, digit, xdigit
и т.д. Для категории LC_TIME определены ключевые слова : mon, day, abmon, abday, e.t.c. (названия месяцев, название дней недели, в полной и в сокращенной форме), а также способ записи даты во внешнем представлении и т.д. Получить доступ к ключевым словам категорий локализации можно с помощью функции (не входит POSIX, но входит в XPG).
Формальное описание категорий локализации содержится в файле locale definition "описания локализации". Этот файл может быть 'откомпилирован' утилитой .
Кроме перечисленных выше категорий локализации иногда также определены:
LC_RESPONSE - Hабор "стандартных" местных ответов ja, si, да, yes, e.t.c.
LC_MESSAGES - Hабор стандартных сообщений об ошибках: "File not found", "Файл не найден".
В POSIX категория LC_RESPONSE
входит в LC_MESSAGES. Кроме того, значение LC_MESSAGES
оказывает влияние на .
Для локализации системы X Window
используются ее собственные настройки locale (Xlocale), которые здесь не рассматриваются. Смотри или .
Содержание
Last change : 08-10-1999
Клавишные комбинации, дублирующие пункты меню
Кроме этого, для быстрого вызова пунктов главного меню используется комбинация Alt+подчеркнутая_литера (так называемая Mnemonic).
Ключи программы.
[-- ]или[-- ][-v ] | [--version ]-печатает номер версии.
[-h ] | [--help ]-печатает список этих ключей.
[-t (title) ] | [--title (title) ]
[-tf/+tf ] | [--titlefirst / --notitlefirst ]
[-dt (doct) ] | [--doctype (doctype) ]
[+dt ] | [--nodoctype ]
[-l (file) ] | [--link (dictfile) ]
[+l ] | [--nolink ]
[-H (regexp)] | [--heading (regexp) ]
[-EH/+EH ] | [--explicit_headings / --noexplicit_headings ]
[-ab (file) ] | [--append_body (file) ]
[+ab ] | [--noappend_body ]
[-ah (file) ] | [--append_head (file) ]
[+ah ] | [--noappend_head ]
[-pp (file) ] | [--prepend_body (file) ]
[+pp ] | [--noprepend_body ]
[-st (file) ] | [--style (URL) ]
[+st ] | [--nostyle ]
[-ec/+ec ] | [--escapechars / --noescapechars ]
[-8/+8 ] | [--8-bit-clean / --no-8-bit-clean]-включает или отключает 8-ми битную обработку символов. Для правильного отображения кириллицы нужно включить.
[-e/+e ] | [--extract / --noextract ]
[-c (n) ] | [--caps (n) ]
[-ct (tag) ] | [--capstag (tag) ]
[-m/+m ] | [--mail / --nomail ]
[-u/+u ] | [--unhyphen / --nounhyphen ]
[-ul (n) ] | [--ulength (n) ]
[-uo (n) ] | [--uoffset (n) ]
[-tw (n) ] | [--tabwidth (n) ]
[-iw (n) ] | [--indent (n) ]
[-s (n) ] | [--shortline (n) ]
[-p (n) ] | [--prewhite (n) ]
[-pb (n) ] | [--prebegin (n) ]
[-pe (n) ] | [--preend (n) ]
[-r (n) ] | [--hrule (n) ]
[-LO/+LO ] | [--linkonly / --nolinkonly ]
[-db (n) ] | [--debug (n) ]
[-pm/+pm ] | [--preformat-marker / --nopreformat-marker ]
Более подробная информация содержится в тексте скрипта txt2html в виде комментариев.
Кодируем помаленьку
Автор: Алексей Федорчук, alv@newmail.ruОпубликовано: 13.04.2002
Оригинал: http://www.softerra.ru/freeos/17363/
Своеобразие исторической судьбы России проявлялась во всем. В том числе и в том – что русский язык самый многокодировочный язык в мире. Что создает, конечно, некоторые трудности в повседневной жизни. Но зато – какой простор для проявления исконно народной смекалки…
Перечисление ныне существующие (то есть используемые) кодировки кириллических символов – уже требует изрядного напряжения интеллекта, особенно если учесть все синонимы, псевдонимы и эпитеты. Здесь и
А еще где-то за кадром остаются "болгарская" кодировка (как легко понять из названия, к Болгарии почти никакого отношения не имеющая), и древняя кодировка того же Mac'а (как помнится, даже не одна), и апокалиптический Unicode…
Легка жизнь пользователей, закосневших в чистом "черном" DOS'е или присягнувших на верность OS/2: как бы то ни было, их CP866 признается всеми – нет, наверное, текстового процессора, не имеющего функции сохранения документа в этом формате. Не сложнее – и мучителям Windows (или мучимым оной): они могут позволить себе просто не знать о существовании иных кодировок, кроме CP1251. Ну а эзотерикам от MacOS – им, подозреваю, ничего, кроме собственной кодировки и не нужно. Не знаю уж, как обходятся Solaris'ты – но и от них сетований как-будто не слышно.
А вот те, кто связал судьбу с открытыми и свободными Unix-подобными системами, обязаны учитывать все изобилие кириллических кодировок. Хотя бы потому, что большинство из них даже не поднимаясь из-за своего десктопа, используют две из них – KOI8 для клавиатурного ввода и CP866 для экранного вывода .
Впрочем, последняя проблема, сложившись исторически, решена также в историческом масштабе времени: во FreeBSD путем загрузки карт перекодирования (screenmap), в современных отечественных (или исконно интернациональных) дистрибутивах Linux – использованием фрагментарного Unicode .
Однако пользователи Unix-систем живут не в безвоздушном пространстве – время от времени им требуется читать документы, созданные на иных платформах (пользователи которых, как уже говорилось, подчас даже не подозревают, что кроме их кодировок существуют какие-либо иные). Причем – чем дальше, тем больше: как я уже говорил, даже в исконную Unix-вотчину проникло тлетворное влияние Microsoft [3].
Первое напрашивающееся решение при этом – использование перекодировщиков. И действительно, таковых создано немало. Самый простой из них – программка iconv. Она являет собой компонент общесистемной библиотеки libc (glibc) и потому гарантированно присутствует в любом дистрибутиве Linux или BSD-клоне. Формат ее предельно прост: iconv -f [исходная_кодировка] -t [целевая кодировка] имя_файла
Она выводит результат своей работы на стандартный вывод, поэтому для сохранения его в файле следует прибегнуть к операции перенаправления вывода: iconv -f enc1 -t enc2 source_file > target_file
Ну а список доступных перекодировок (а заодно и правильное их наименование) можно посмотреть посредством команды iconv --list
Есть и более развитые средства, позволяющие в один присест перекодировать несколько файлов (и даже целый каталог). Среди них – rusconv Олега Паращенко, о которой я некогда писал в своей книжке . Она позволяет перекодировать произвольное количество файлов (в том числе и по маске), с сохранением в текущем или любом другом каталоге. И при этом не только между большинством распространенных кодировок кириллицы (DOS, Windows, KOI, Mac), но и превратить латинскую транслитерацию в читабельный русский текст (или наоборот). Большое достоинство программы – ее прекрасная документированность, руководство пользователя для нее (на русском языке) составляет несколько десятков страниц. Это избавляет меня от описания ее работы – интересующихся отсылаю к сайту автора .
Еще более удобной представляется мне программа d1489 (автор – Андрей Чернов, известный, помимо прочего, и своими трудами по русификации Unix'ов), доступная во FreeBSD в виде порта и пакета (в дистрибутивах Linux она мне не попадалась, может быть, просто не обращал внимания). В отличие от rusconv, она не документирована вообще – с ней нет ни man-, ни info-страниц, лишь очень краткая справка по использованию. Впрочем – ни в чем более она и не нуждается, предоставляя, однако, вполне достаточные возможности.
Пакет d1489 включает в себя две пары утилит – fromwin/towin и fromdos/todos, назначение которых вполне ясно из их имен: это перекодирование между KOI8 и Windows/DOS, соответственно [6]. Есть в ней и еще одна утилитка – a2kfcnv, для трансформации экранных консольных шрифтов из CP866 в KOI8, что может оказаться отнюдь не лишним.
Используется каждая из парных утилит одинаково, хотя и разнообразно (о чем мы узнаем посредством запуска любой команды с опцией -h или -?). Можно дать команду fromwin имя_файла
в результате чего исходный файл в кодировке CP1251 будет замещен им же, но в KOI8. Можно перенаправить результат перекодировки в другой файл – fromwin < Win-файл > KOI-файл
А можно перекодировать и множество файлов, в том числе и по маске (например, все текстовые или html-документы каталога) с записью результатов в другой каталог, скажем fromwin -o output_dir ~/*.html
По умолчанию при перекодировании из KOI8 в DOS/Windows и обратно программа заодно преобразует и символы конца строк в вид, принятый в целевой системе. Что при желании можно подавить опцией -b. Ну а опция -p по возможности пытается сохранить такие атрибуты файлов, как время модификации (насколько это осуществимо при переносе между DOS/Windows и Unix).
Короче говоря, пакет очень удобен, если требуется регулярно переносить большие объемы данных на фиксированные носители (например, Zip-диск или сменный винчестер), позволяя делать это парой-тройкой несложных скриптов. Правда, она не позволяет рекурсивного перекодирования вложенных подкаталогов – но такой возможности я пока не видел ни в одной программе-перекодировщике .
Однако перекодировщики не решают всех проблем обмена документами – достаточно скучно перекодировать все, что потребуется впредь (или, напротив, нужно только сиюминутно). А уж если нужно поправить пару символов в Windows или DOS-документе…
Так что очень желательной видится возможность переключения кодировок терминала, что называется, на лету (или на бегу?). К счастью, и такое не запрещается – благодаря механизму загрузки клавиатурных раскладок и экранных шрифтов (да и карт соответствия, буде потребуется – также). В Linux можно сделать разными способами, в зависимости от того, какой пакет управления консолью – kkb или console-tools, принят в данном дистрибутиве. И потому скажу пока только за FreeBSD.
Там эти функции возложены на две штатные программы из пакета системной консоли (syscons), одна из которых называется vidcontrol, другая – kbdcontrol. Посредством первой можно подгрузить шрифт в любой кодировке, например vidcontrol -f 8x16 cp1251-8x16.fnt
А второй – задать соответствующую ему клавиатурную раскладку: kbdcontrol -l ru.cp1251.kbd
Разумеется, для того, чтобы сварить суп из курицы, нужно как минимум иметь курицу. То есть, применительно к случаю – соответствующие экранные шрифты и клавиатурные раскладки. Благо с первыми проблем нет – в комплект FreeBSD входят консольные шрифты для всех трех главных кодировок русского языка (хотя эстетически, да и эргономически, все они далеки от совершенства).
Для тех, которые с претензиями (как ваш покорный слуга, например) – шрифты для консоли FreeBSD можно изготовить из таковых для Linux-консоли, в отечественные дистрибутивы типа Altlinux входит прекрасная их коллекция . Для этого Linux'овый шрифт сначала разархивируется, а затем дается команда типа dd if=linux_font.psf of=bsd_font.fnt bs=1 skip=4 count=4096
где значение count приведено для шрифта стандартного (80x25) разрешения размером 8x16. Однако теоретически можно сделать и шрифт для высокого разрешения – 8x8. А если исходный шрифт – Unicode (а в дистрибутивах Linux есть и такие), то, вычислив смещение, можно изготовить буковки в любой кириллической кодировке. Впрочем, каюсь, я в вычислениях запутался – нормально у меня получились только фонты 8x16 для CP866 .
С клавиатурными раскладками – несколько хуже: во FreeBSD они имеют место быть только для KOI8 и CP866, но не для CP1251. В Сети последних для Free (а по формату они немного другие, чем для Linux) я тоже не нашел. Осталось изготовить эту раскладку собственноручно – заодно и с переопределением всяких Win-клавиш по собственному разумению .
Наконец, если нет желания менять экранные шрифты, той же командой vidcontrol в форме vidcontrol -l *.scm
можно подгрузить и требуемую карту соответствия. Опять же, если таковая имеется – а штатно она есть только для KOI8 -> CP866. Но и тут принципиальных сложностей не предвидится – с помощью толики терпения и чьей-то матери нужную карту можно склепать вручную.
Однако и средства syscons – не панацея от всех бед. Главный их недостаток – переключение шрифта, раскладки и таблицы соответствия между ними действует на все виртуальные консоли сразу. И потому мечта – сочинять текст в KOI8, время от времени просматривая документы, сохраненные в CP1251, – имеет шанс так и остаться мечтой. А уж о том, чтобы таскать между ними фрагменты, казалось бы, можно забыть.
Можно – если бы не открытие на сайте винницкой фирмы замечательной программки mapchan, позволяющей (цитирую README) "произвольным образом преобразовывать терминальный ввод-вывод". И дающей, таким образом, возможность работать на различных виртуальных консолях с документами в любых кодировках (в общем случае – не только кириллицы, и не только на локальной машине, но и с удаленных терминалах, но этот аспект я затрагивать не буду).
Программа (автор ее представляется как Yura Kalinichenko) являет собой модернизацию одноименной утилиты из SCO Unix и написана, судя по всему, под Linux. Однако ничего Linux-специфичного не содержит и потому должна работать под любым Unix'ом. За любой – не скажу, но под FreeBSD она устанавливается без проблем и работает прекрасно.
Установка ее – стандартна, распаковывается архив и от имени root'а даются команды make make install
Правда, при этом свой исполнимый файл (mapchan же) записывается непосредственно в каталог /bin, а дополнительные компоненты (в частности, собственно таблицы перекодировки ввода/вывода – map-файлы) предлагается руками положить в каталог /etc/mapchan. Если это почему-либо не устраивает – можно обойтись без make install и вручную расписать их куда угодно (например, как $HOME/bin/mapchan и т.д.). Далее программа запускается следующим образом mapchan -s [shell] -f /path/file.map
после чего в текущей консоли грузится указанная опцией -s оболочка, в которой можно наслаждаться чтением и писанием русских текстов в той кодировке, которая определена заданным через опцию -f map-файлом, вне зависимости от того, какая кодировка определена для системы в целом. При этом не затрагиваются ни клавиатурные раскладки (все буквы находятся на тех же местах, что и раньше), ни их переключатели (кириллица/латиница переключаются тем же способом), ни экранные шрифты (вид их остается неизменным). Боле того, все прочие консоли сохраняют общесистемную кодировку. И выделенный мышью фрагмент в консоли с KOI8 в правильном виде вставляется на консоль с Win- или DOS-кодировкой.
Красота, да и только… Дело за малым – обзавестись достаточным количеством map-файлов для всех требуемых случаев. В комплекте таковые имеются для работы с DOS-кодировкой в KOI'шном терминале, и с кодировкой KOI8-U при терминалах с альтернативным DOS (он же – CP866) и с кодировкой ГОСТ'а. Есть и вариант для некоего терминала СМ7238 – я с таким не сталкивался.
А вот самый актуальный ныне случай – для работы с CP1251 при KOI-терминале, – не представлен. Изготовлением соответствующего map-файла следует озадачиться самостоятельно. Благо вследствие формата map-файла это просто: определяются две секции – input и output, которые заполняются соответствиями символов "кто -> во что преобразуется" (очевидно, что содержание секций представляет собой зеркальное отражение). При этом и исходный, и преобразуемый символы могут быть заданы почти любым образом – восьмеричными, шестнадцатеричными или десятичными их кодами, а то и просто символами, заключенными в одинарные кавычки (и даже без оных). Для удобочитаемости символы могут разделяться пробелами (а могут и не разделяться).
Иными словами, берутся любые требуемые кодовые таблицы и перекраиваются требуемым образом. Если же и это лениво – map-файлы для случая Windows и DOS на KOI-терминале можно взять у меня . И вызывать их указанным выше образом при необходимости.
[1] О причинах этого явления написано столько, что повторяться не буду. Отмечу только, что и здесь есть исключение – в OpenBSD штатно предусмотрена только кодировка KOI8 и для вывода.
[2] Хотя и в Linux никто не запрещает применения карт перекодировки – насколько я знаю, именно так по сию пору делается и в Slackware, и Debian.
[3] О чем можно судить хотя бы по тому, что все больше бесплатных web-хостов безальтернативно требуют Windows-кодировки для размещаемых на них страниц.
[4] Офис, web, графика в Linux. СПб: БХВ-Питер, 2001.
[5] http://beta.math.spbu.ru/~prof/w_re/. Правда, последнее время на него очень нелегко попасть.
[6] Архитектурных излишеств типа кодировок Mac и ISO8859-5 не предусмотрено, что, на мой взгляд, ценности программы отнюдь не снижает.
[7] Вроде бы в Tot-Recode для Windows такое было, или память мне изменяет?
[8] Большое спасибо Стасу Гобунову за подсказку, как именно это сделать.
[9] Заинтересованные могут посмотреть результаты на
[10] Результаты – см. предыдущее примечание.
[11] См. прим. [9]. [обратно к тексту]
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с (http://www.softerra.ru/site/rules/)
Командная строка
:q или :q! - выход из редактора без сохранения изменений:x - выход из редактора с записью, если файл был модифицирован
:w или w filename или w! filename - запись файла и возвращение в командный режим
:e filename или :e! filename - загрузка файла filename
:r filename - добавить содержимое указанного файла к редактируемому сразу за текущей строкой
:set nu - включить нумерацию строк
:set nonu - отключить нумерацию строк
:!command - выполнить команду UNIX не покидая редактора
:/word - выполнить поиск слова word в тексте
:/ - повторить поиск слова word далее по тексту
Командный режим
В этом режиме символы клавиатуры выполняют специальные функции (перемещение курсора, стирание частей текста, и т. д.), то есть функции редактирования.Набираемые команды НЕ ОТОБРАЖАЮТСЯ НА ЭКРАНЕ!
Команды Emacs
Некоторые версии Emacs предоставляют пользователю возможность через раскрывающиеся меню получить максимальный доступ к возможностям редактора. PSGML, в свою очередь, добавляет несколько новых окон к меню Emacs. Зачастую при вводе текста и перемещении по нему курсора использование меню требует большего времени, чем потребуется на нажатие соответствующей кнопки. Однако меню становятся полезными при работе с редкоиспользуемыми или труднозапоминаемыми комбинациями кнопок. Эта глава посвящена описанию использования пунктов меню, соответствующих определенным командам.Обычно пользователь "говорит" редактору Emacs что именно нужно делать при нажатии специальных кнопок. Например, С-а (произносится "Control A" - нажатие клавиши А при нажатой клавише Ctrl) означает "переход курсора в начало текущей строки."
Многие команды Emacs выполняются при нажатии клавиши, называемой еще Meta-кнопкой. Некоторые ранние компьютеры имели специальную кнопку, которая именно так и называлась. Эта кнопка использовалась в комбинации с другими кнопками точно также, как в настоящее время используют клавишу Ctrl. На современных клавиатурах клавиша с названием "Meta" отсутствует. Вместо нее можно использовать Escape или Alt.
Комбинация с Meta-кнопкой предшествующая нажатию других клавиш обозначается через "М-". Например, M-f означает нажатие клавиши f при уже нажатой кнопке Escape. Если ваш компьютер или версия Emacs позволяет использовать кнопку Alt вместо метаклавиши, нажимайте ее в комбинации с другими клавишами точно так же, как это обычно делают с клавишами Ctrl или Shift.
Существуют команды, которые требуют нажатой клавиши Escape перед нажатием комбинации с кнопкой Ctrl. Такие комбинации обозначают M-C-x (Meta-Control-x). В документации также встречается обозначение ESC-C-x (если версия Emacs позволяет использовать Alt в качестве метаклавиши, то нужно нажать Alt+Ctrl+x). Данный документ описывает только один вариант использования метаклавиши.
Большое число команд Emacs выполняется при последовательном нажатии двух комбинаций клавиш. Например, нажатие С-x, а затем С-s (сокращенно пишется C-x C-s) приводит к записи текущего файла. Зачастую подобные комбинации группируются таким образом, чтобы по первой комбинации можно было определить к какому "семейству" относится команда. Например, все команды, начинающиеся с C-x - это команды работы с файлами: открытие, сохранение, выход без сохранения и т.п. Большинство этих команд представлены в пункте меню File.
Иногда первая комбинация клавиш вызывает на экран меню потенциально возможных вторых клавиш. Например, нажатие C-h приводит к появлению в окне минибуфера следующей строки:
| C-h (Type ? for futher options) |
Возможности редактора Emacs настолько велики, что трудно предусмотреть такое большое число комбинаций клавиш для их реализации. Поэтому часто возникает необходимость вызвать командную строку, где вручную можно было бы набрать ту или иную команду. Нажатие M-x (x при нажатом Escape) делает доступным командную строку в окне минибуфера. При использовании дополнительных пакетов, таких как PSGML, расширяющих возможности Emacs, командная стока становится просто незаменимой.
Например, команда goto-line не имеет определенной комбинации клавиш (как это исправить будет показано в разделе "Настройка редактора Emacs"). Однако пользователь может заставить курсор перейти в указанную строку. Для этого нужно вызвать через M-x командную строку, набрать там команду goto-line и нажать Enter. Тогда Emacs выдаст в окне минибуфера подсказку:
| Goto line: |
Прежде, чем приступать к исследованию возможностей многошаговых команд, нужно хорошо запомнить комбинацию клавиш, позволяющую прервать операцию - эта комбинация C-g. Например, при нажатии C-x Emacs выводит в окне минибуфера
| C-x- |
Другой пример. К тяжелым, в плане понимания, последствиям приводит двойное нажатие клавиши Escape. В некоторых версиях UNIX последствия такого нажатия настолько необычны, что приводят пользователя в замешательство. В данном случае для отмены действия также нужно нажать C-g.
КОМАНДЫ МИНИБУФЕРА
^X ESC Повторить последнюю команду (`repeat-complex-command'). M-p/M-n Листать команды минибуфера вверх/вниз M-x list-command-history Tab/space/? ДополнитьКоманды прямого форматирования [Inline Markup Commands]
Внутри абзаца с обычным текстом действуют несколько команд разметки, задающие вид текста в выходном формате. Все они начинаются с заглавной буквы, далее следует аргумент, заключенный в угловые скобки: LETTERI<argument>
Аргумент выводится курсивом. I соответствует HTML-тэгамem и var, что обычно используется для выделения слов или обозначения переменных.
Примеры:
Не стоит удалять с машины ядро Linux!
образуется из такой строки:
I<Не стоит> удалять с машины ядро Linux!
Сменить рабочую директорию на directory можно командой cd directory.
порождается
Сменить рабочую директорию на I
B<argument>
Аргумент выводится жирным шрифтом. B соответствует тэгу HTML b. Используется для выделения текста, названий программ и ключей командной строки.
Примеры:
Всегда выполняйте команду shutdown перед тем, как отключить питание.
является результатом
B<Всегда> выполняйте команду shutdown перед тем, как отключить питание.
podchecker допускает опции -warnings и -nowarnings.
появляется из
B
C<argument>
C обозначает код или другой текст, который надо изобразить, как есть, буквально. Соответствует тэгам HTML code, samp, и tt.
Примеры:
Каждая C-программа должна содержать функцию по имени main.
порождается
Каждая C-программа должна содержать функцию по имени C
Логическое значение ЛОЖЬ представляется [1 1 0], а логическая ИСТИНА -- [1 1 1].
порождается
Логическое значение ЛОЖЬ представляется C<[1 1 0]>, а логическая ИСТИНА -- C<[1 1 1]>.
L<reference> or L<description|reference>
Создает ссылку на существующий reference. Если часть description опущена, то видимым текстом ссылки будет reference, в противном случае это будет description. Команда L отдаленно напоминает гиперссылку HTML description, но в POD reference не является унифицированным локатором ресурса (URL).
reference может ссылаться только на сгенерированные метки [labels], которые автоматически создаются трансляторами POD-во-что-то-другое. Такие метки создаются для каждой команды =head и =item. Метка, связанная с командой =head heading будет образована из переведенного в нижний регистр heading, других изменений в heading не делается. А именно, заголовку:
=head1 Заголовок из Нескольких Слов (ЗНС)
будет автоматически сопоставлена метка
заголовок из нескольких слов (знс)
К меткам для =item'ов добавляется префикс item_, пробелы заменяются символами подчеркивания, а не-буквы и не-цифры заменяются на знак процента, за которым следует их шестнадцатеричный ASCII-код. А вы ожидали преобразования попроще? Так, если бы при подготовке данной статьи один из пунктов был бы обозначен, как
=item Автоматическая Генерация Ссылок.
то он получил бы метку
item_Автоматическая_Генерация_Ссылок%2e
поскольку ASCII-код точки равен 46 или 2e в шестнадцатеричном формате.
Пример:
Исходный текст
=head1 Введение
В разделе L<"Концепции"> излагаются основы.
=head1 Концепции
...
=head1 Синхронизация
=over 4
=item Блокировки
=item Race Conditions
=item Разрешение блокировок
=back
То, как справляться с блокировками уже обсуждалось в L<разделе Блокировки|"item_Блокировки"> и L<Разрешение блокировок|"item_Разрешение_блокировок">.
Результат
Команды редактора EX
Редактор vi построен на основе редактора ex. Редактор ex редактирует построчно. Из редактора vi можно вызвать команду ex - : вводится перед командой. Мы рассмотрим наиболее используемые команды. Если необходимо изменить более одной строки командами :s или :w определяется диапазон. Например : для изменения строк с 3 по 15 используется команда :3,15s/from/this/g.:ab string strings Сокращение. Если в редакторе vi появляется слово string, происходит автоматическая замена. Например : команда :ab usa United States of America определяет сокращение для слова "usa". Теперь при вводе слова "usa" произойдет замена на "United States of America". :map keys new_seq Макрос. Замена клавиши или последовательности клавиш . :q Выход из редактора VI. Если были сделаны изменения - редактор сообщит об этом. :q! Выход из редактора VI без сохранения изменений. :s/pattern/to_pattern/options
Замена. Замена выражения pattern на выражение to_pattern. Без использования options производит замену первого вхождения выражения pattern. Если используется опция "g" - все вхождения выражения pattern будут заменены. Например : команда :1,$s/Dwayne/Dwight/g заменит все вхождения выражения "Dwayne" на "Dwight". :set [all] Установка некоторых параметров настройки VI и EX. Команда :set all выводит список всех возможных параметров (обратите внимание на раздел "Настройка VI и EX"). :una string Удаление ранее определенного сокращения командой :ab. :unm keys Удаление ранее определенного макроса командой ":map. :vi filename Начало редактирования нового файла. Если изменения не были сохранены - редактор выдаст предупреждение. :w Записать текущий файл. :w filename Записать файл с именем filename. :w >> filename Добавить содержимое буфера в файл filename. :wq Сохранить изменения и выйти.
Команды, специфичные для конкретного формата
В качестве крайнего средства можно использовать несколько команд, позволяющих автору полностью разделить текст между LaTeX и HTML версиями:Советую прибегать к разделению текстов только в том случае, когда никакая другая специализированная команда или окружение latex2html не в состоянии создать желаемую разметку. Разделение на разные ветви всегда требует дополнительных усилий по их синхронизации.
Команды
i - переход в режим набора методом вставки перед текущим символомa - переход в режим набора методом вставки за текущим символом
R - переход в режим набора текста методом набивки.
Комбинация образцов
Допускается логическая комбинация образцов с использованием следующих знаков: - ``или'', & & - ``и'', ! - ``не''.Последовательности образцов, соединенных одним из знаков читаются слева направо.
Комбинация: ``образец1, образец2'' указывает, что действие выполняется над строками, попадающими в указанный ранг: то есть, начиная от строки, удовлетворяющей ``образец1" и вплоть до строки, удовлетворяющей ``образец2", включая ее саму.
Например:
/02\.95/ & & ($1 !~ /\.su/ $2 !~ /\.su/) - Указывает на строки, содержащие 02.95 и не имеющие .su одновременно в первом и во втором поле.
NR == 100, NR == 200 - Указывает строки с номерами от 100 до 200.
Компиляция message catalog-а :
Полученный файл обрабатывается утилитой для получения файла каталога .msg .ПРИМЕЧАНИЕ: Здесь рассматривается исходная XPG4 версия, однако входящая в состав Linux libc (libc5) отличается ключами командной строки и имеет дополнительные возможности (не XPG). В частности, используя символ # можно определять костанты для генерации *.h файлов. (см. ). Однако в GNU libc (libc6) все приведено в соответствие с XPG (см. ).
$ gencat example.cat example.msg
Конфигурирование .Xdefaults
Не смотря на некоторую сумбурность описания, из него, надеюсь, ясно, в через меню Preferences - Defaults Settings в NEdit можно настроить почти все. Едиственно, следует не забыть сохранить сделанные изменения, дабы сделать их перманентными (через Preferences - Save Defaults).Однако способов изменения некоторых параметров через меню обнаружить не удается. Так, в первозданном (и, возможно, не отвечающем вашему эстетическому идеалу) остались цвета фона и курсора, шрифт надписей меню и цвет его линейки, положение полосы скроллирования и еще кое-что.
Отчаиваться не следует - на сей предмет существует метод левой резьбы. То есть - ручной правки конфигурационного файла /$HOME/.Xdefaults, поисывающего особенности X-приложений.
Секции для NEdit в нем нет. Однако создать ее (хотя бы собственными средствами этого редактора) труда не составит. Для этого достаточно вставить такие строки: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! nedit
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! где строки с восклицательными знаками, естественно, не обязательны, служа всего-навсего ограничителями секции, а строка ! nedit - комментарий, дабы не забыть, о чем, собственно, идет речь.
Теперь дело за малым - нужно создать наполнение секции. Это можно сделать по наитию (и методом проб и ошибок), как в первом варианте этой заметки. А можно обратиться к системе помощи - тому самому ее пункту, где говорится о конфирурировании NEdit и, в частности, о ресурсах X Window (Help - Customizing - X Resources.
Здесь можно найти список почти всех параметров, которые не подлежат изменению через меню Preferences, но которые в принципе можно (хотя и не все - нужно) изменить. Не могу похвастаться, что я разобрался со всеми. И потому приведу этот список полностью, оставив без перевода и комментариев строки, смысл которых пока остается для меня неясным (надеюсь со временем ликвидировать эти прорехи):
nedit.tagFile: (not defined) Насколько я смог понять, нечто, имеющее отношение к программированию на C. Оригинальный комментарий таков: The name of a file of the type produced by Exuberant Ctags or the Unix ctags command, which NEdit will load at startup time (see Features for Programmers). The tag file provides a database from which NEdit can automatically open files containing the definition of a particular subroutine or data type. nedit.shell: /bin/csh Указание на оболочку командной строки, скрипты которой выполняются через меню Shell. Вероятно, хотя пока и не проверено, можно указать и bash, и что-нибудь еще. nedit.wordDelimiters: .,/\\`'!@#%^&*()-=+{}[]":;<>? Знаки, маркирующие (в дополнение к пробелам и табуляции) границы между словами при их выделении мышью (двойным щелчком на слове) или премещении курсора комбинацией клавиш Ctrl+Стрелки nedit.remapDeleteKey: False Указание значения True переопределяет клавишу Delete как Backspace. Комментарий гласит, что это может быть полезно при работе с клавиатурами систем DEC (вероятно, имеется в виду что-то вроде PDP или VAX) и Macintosh. Для пользователей PC, по-моему, практического значения не имеет. nedit.stdOpenDialog: False Возвращение значения True устанавливает стандартный для приложений, основанных на Motif, стиль диалоговых панелей. За незнакомством с последним, смысл опции не вполне понимаю.
nedit.bgMenuButton: [Shift][Ctrl][Meta][Alt][Btn3Down] Способ доступа к контекстному ( или фоновому) меню. По умолчанию для этой цели служит, как и в Windows, правая (третья - отсюда Button 3) кнопка мыши. Однако можно использовать и любой из четырех других вариантов (правда, клавиша Meta, по-моему - это из области Mac?). nedit.maxPrevOpenFiles: 30 Максимальное количество файлов в списке, вызываемом через меню File - Open Previous (то есть ранее открывавшихся или создававшихся). Насколько мне удалось понять, значение это сверху ограничено только размерами дисплея и его разрешением - при большом количестве список уходит за пределы видимости. Список открывавшихся ранее документов хранится в конфигурационном файле /$HOME/.neditdb. nedit.printCommand: (system specific) Этот параметр и серия следующих за ним определяют условия печати документов из редактора NEdit. По умолчанию все они используют системные установки. Насколько я понимаю, лучше их таковыми и оставить, если нет везких причин для иного решения. И понимания, как его реализовать (у меня такового понимания нет). nedit.printCopiesOption: (system specific) nedit.printQueueOption: (system specific) nedit.printNameOption: (system specific) nedit.printHostOption: (system specific) nedit.printDefaultQueue: (system specific) nedit.printDefaultHost: (system specific) К этим пунктам относится сказанное в предыдущем комментарии. nedit.multiClickTime: (system specific) Время ожидания второго щелчка кнопкой мыши, в течении которого он счиается за двойной. Здесь логично сохранить системную установку - не зря же вы ее делали для всех приложений. nedit*scrollBarPlacement: BOTTOM_LEFT Эта строка описывает положение и вид полосы прокрутки. При значении в примере (как ни старнно, это не значение по умолчанию - уже при первом запуске NEdit полоса прокрутки располагается справа) она должна располагаться вдоль левой границы окна и прокручиваться вперед смещением ползунка сверху вниз. Другие возможные значения : BOTTOM_RIGHT, TOP_LEFT и TOP_RIGHT; в двух последних случаях прямой скроллинг осуществляется движением ползунка снизу вверх. nedit*text.autoWrapPastedText: False По умолчанию запрещает автоматический перенос слов при наборе текста. Лучше так и оставить - настроить различные опции переноса слов для каждого конкретного сдучая проще настроить через меню Preferences - Wrap (или Preferences - Default Settings - Wrap), как было описано выше. nedit*text.heavyCursor: False Смысл этой строки не очень понял. Когда я вставлял ее в первозданном виде, курсор у меня просто исчезал вообще. Оригинальный комментарий: For monitors with poor resolution or users who have difficulty seeing the cursor, makes the cursor in the text editing area of the window heavier and darker. nedit*text.foreground: black Переходим к самому интересному - нстройке цветовой гаммы. Это - цвет шрифта набираемого текста. Смысл значения, думаю, понятен, а от рекомендаций воздержусь - товарищей нет на цвет и шритфа. nedit*text.background: white В этой строке определяется цвет фона редактируемого поля. nedit*text.selectForeground: black А здесь определяется цвет текста выделенного первичным способом (левой кнопкой мыши или стрелками указателя курсора при нажатой клавише Shift) фрагмента. nedit*text.selectBackground: gray80 Определение цвета фона выделенного первичным способом фрагмента. Следует заметить только, что число после наименования цвета обозанчает яркость (saturation) его в процентах. То есть gray80 - это светло-серый, а, скажем, gray20 - темно-серый. Во всех относящихся к цветовой гамме пунктах возможны также значения имени цвета с прилагателными - light или dark. nedit*text.highlightForeground: white Смысла этой строки (в отличие от следующей) не понял: изменение цвета в ней у меня не дает никакого видимого эффекта. Потому привожу оригинальный комментарий: Foreground (text) color for highlights (parenthesis flashing) in the text editing area of the NEdit window. nedit*text.highlightBackground: red Насколько установлено эмпирически, определяет цвет подсветки парных элементов (например, открывающей скобки при фиксации курсора на закрывающей). Оригинальный комментарий: Color for highlights (parenthesis flashing) in the text editing area of the NEdit window. nedit*text.cursorForeground: black Ну, понятно, просто цвет курсора. nedit*text.lineNumForeground: gray47 Цвет, которым передается нумерация строк (если эта опция включена). nedit*text.blinkRate: 600 А это частота мерцания курсора в миллисекундах. Если установить значение 0, курсор мерцать не будет. nedit*text.Translations: Не понял, оригинальный комментарий таков: Modifies key bindings (see below). Однако "below" я ничего по этому поводу не обнаружил, по карйней мере в этом разделе. nedit*foreground: black Задает цвет текста меню и диалоговых панелей. nedit*background: gray70 А здесь определяем цвет фона меню, диалоговых панелей и полосы прокрутки. nedit*fontList: helvetica-bold-14 В этой строке можно, наконец, определить гарнитуру, начертание и кегль шрифта интерфейсных элементов. За исключением шрифта в полях, скажем имен файлов при их открытии или сохранении, или в полях ввода кода и параметров в диалогах настройки меню, например (ни в том, ни в другом случае изменить шрифт мне не удалось). Не оказывает эта строка (также как и настройка через меню) и на шрифт вывода сообщений системы помощи, о чем скажу ниже. nc.autoStart: False Этот и следующий параметр, судя по всему, имеют отношение к применению NEdit в системах клиент/сервер. Смысла не понял, привожу оригинальный комментарий: Whether the nc program should automatically start an NEdit server (without prompting the user) if an appropriate server is not found. nc.serverCommand: nedit -server Оригинальный комментарий: Command used by the nc program to start an NEdit server. Далее следует фраза такого содержания, которую я понял как предложение использовать всякого рода расширения имен элементов, такие, как .background и т.д., для изменения цветов, шрифтов и прочих характеристик следующих далее элементов: nedit*statsForm Предлагает поределить вышеуказанные характеристики для статусной строки и строки поиска. При желании одна характеристика может распространяться на оба элемента, для этого вместо (.) следует использовать (*). Например, строка nedit*statsForm*background: gray задает для них единый серый цвет фона. nedit*menuBar В этой и нижеследующих строках можно по той же модели определить характеристики линии главного меню, nedit*textHorScrollBar ... полосы горизонтальной... nedit*textVertScrollBar ... и вертикальной прокрутки. nedit*helpText Эта строка, якобы, позволяет определить характеристики окна системы помощи. Однако у меня строка вида nedit*helpText*fontList: -cronyx-fixed-medium-r-*-*-20-*-*-*-*-*-koi8-r на шрифт сообщений Help'а никакого действия не оказала.
Тем не менее, эту проблему удалось победить методом ползучего эмпиризма, а именно, поместив собственноручно сконструированную строку nedit*font: -cronyx-fixed-medium-r-*-*-20-*-*-*-*-*-koi8-r
Не возьмусь судить, насколько она синтаксически грамотна, но, по крайней мере, после этого шрифт сообщений в окне помощи действительно изменился.
Как можно видеть, в секцию !nedit файла /$HOME/.Xdefaults можно внести изрядное количество строк. Но можно - не значит нужно. Достаточно ограничиться только теми строками, определяющими характеристики, не устраивающие вас по умолчанию. Так, я ограничился настройкой шрифтов текста, меню и системы помощи, а также цветовой гаммы рабочаго поля и интерфесных элементов - и прекрасно себя чувствую. Настолько, что рискнул в приложении 2 привести в качестве примера фрагмент своего файла /$HOME/.Xdefaults. Каковой, изменив при желании, можно просто поместить в свою конфигурацию. За чистоту синтаксиса поручиться не могу, но за работоспособность - готов.
Таким образом, редактированием файла /$HOME/.Xdefaults удается настроить то немногое, что не получается настроить через главное меню. Однако в домашнем каталоге пользователя можно обнаружить еще два конфигурационных файла, имеющих отношение к NEdit -
Конвертор кодировок rusconv
Программа rusconv преобразует файлы между основными русскими кодировками. Утилита предназначена для запуска из командной строки для обработки нескольких файлов одновременно.Загрузить:
Разархивация:
pkunzip -d rscnv311.zip
(32-битное консольное приложение, 155 КБайт)
Разархивация:
pkunzip -d rusconv.3.11.zip
Разархивация:
gunzip rusconv.3.11.tar.gz
tar xf rusconv.3.11.tar
или
tar zxf rusconv.3.11.tar.gz
Установка:
rpm -ihv rusconv-3.11-1.i386.rpm
Архивы также можно загрузить с узла ftp.kiarchive.ru: , , . RPM-пакет собран Виктором Вислобоковым
Особенности:
Копирование элементов
Существуют два способа копирования элементов со всеми подэлементами. Первый способ - это использовать описанные выше комбинации клавиш, чтобы удалить элемент со всеми вложенными элементами и тут же его вставить. Другой способ предусматривает копирование элемента в буфер обмена без удаления. Чтобы проделать это, нужно выполнить следующие шаги:Чтобы ускорить процедуру копирования элемента в буфер обмена, можно оформить описанную выше процедуру в виде макроса в файле .emacs. Запуск этого макроса пускай будет осуществляться комбинацией клавиш C-c w. Текст макроса, копирующего текущий элемент в буфер обмена выглядит следующим образом:
| (defun sgml-copy-element () (interactive) (sgml-backward-up-element) (let ((start (point))) (sgml-forward-element) (kill-ring-save start (point)))) ; assign to ^Cw keystroke (define-key global-map "^Cw" sgml-copy-element) |
Копирование, перемещение и удаление блоков текста
Аналогично многим популярным текстовым процессорам и редакторам, Emacs позволяет вырезать, копировать и вставлять выделенные блоки текста. Корни этих операций для редактора Emacs уходят в бронзовый век компьютерной эры, поэтому описание команд могут показать современному пользователю несколько странными. Для избежания разночтений ниже приводится полезный словарик:| region | Блок текста |
| point | Положение курсора |
| mark | Если перед курсором - начало выделяемого блока, Если после курсора - конец выделяемого блока |
| kill ring | Временная область памяти, куда помещается текст, который позднее будет скопирован или перемещен. В более поздних текстовых процессорах эту область часто называют "clipboard" или "буфером обмена". Хотя kill ring способен удерживать несколько блоков удаляемого или копируемого текста. |
| kill-region | Операция по удалению выделенного блока и сохранению его содержимого во временном буфере в kill ringВ современных текстовых процессорах эта операция известна как удаление блока в "буфер обмена". |
| copy-region | копирование выделенного блока в буфер обмена. |
| yank | Вставка блока, помещенного последним в буфер обмена, в текущую позицию курсора. Современные текстовые процессоры, использующие терминологию "clipboard" (буфер обмена), называют эту операцию "Вставка" ("Paste"). |
В современных версиях Emacs в меню Edit, оперирующему вышеописанными объектами и операциями, все чаще используется современная терминология.
Любая операция копирования, перемещения или удаления начинается с выделения блока текста. Для того, чтобы начать выделение блока, поместите курсор в начало блока и нажмите C-spase (или C-@, обе эти комбинации соответствуют команде set-mark-command), перемещая курсор стандартными клавишами, установите его в конце блока. Операцию выделения можно выполнять в обратном порядке: нажать C-spase в конце блока, а затем установить курсор в начало.
Некоторые версии Emacs отображают цветом выделяемую область. Однако многие версии этого не делают, поэтому так легко забыть какой именно текст выделяется. Это может привести к неприятностям при использовании впоследствии команды delete. Чтобы исключить подобные ситуации, существует команда exchange-point-and-mark (C-x C-x), которая позволяет проверить установленные границы выделенного блока путем "перепрыгивания" курсора в начало/конец блока. Повторное нажатие комбинации C-x C-x возвращает курсор в прежнюю позицию.
Чтобы выполнить операцию удаления блока delete (или "kill"), нажмите C-w или выберите команду Cut из меню Edit. Если блок был удален случайно, операция отката (yank) удалит этот блок из буфера обмена (kill ring) и вернет его обратно нажатием клавиши C-y. Если перед операцией отката курсор был перемещен, то блок текста будет возвращен в текущую позицию курсора.
Наличие в меню Edit пункта Select and Paste(в Xemacs отсутствует - прим. перев.) расширяет возможности использования команды yank. Select and Paste выводит на экран каскадное меню, содержащее несколько последних скопированных в буфер блоков.
Можно скопировать блок в "kill ring", выбрав команду Copy из меню Edit или нажав M-w (команда kill-ring-save). Данная процедура никак не скажется на редактируемом файле, но сделает доступным многократное использование однажды скопированного в буфер блока.
В текстовых процессорах, использующих буфер обмена (clipboard), удаленный или скопированный в буфер текст замещает уже находящийся там текст. В таких редакторах если планируется что-либо удалить или скопировать, чтобы позднее вставить фрагмент, то операцию по перемещению выделенного блока в буфер нужно выполнять непосредственно перед вставкой текста. Команда yank-pop редактора Emacs позволяет копировать блоки текста независимо от того, когда он был помещен в буфер. Количество удерживаемых в буфере обмена блоков зависит от версии Emacs.
Пример. В нижеприведенном тексте требуется переместить строку со словом "red", поставив ее после строки со словом "blue".
| yellow red black white blue green |
| yellow black white blue green |
| yellow black blue green |
| yellow black blue white green |
| yellow black blue red green |
Краткий справочник. Комбинации клавиш Emacs и PSGML
| C-f | forward-char | Перемещение на один символ вправо |
| C-b | backward-char | Перемещение на один символ влево |
| C-Left | backward-word | Перемещение на одно слово влево |
| M-b | previous-word | Перемещение на одно слово влево |
| C-Right | backward-word | Перемещение на одно слово вправо |
| M-f | next-word | Перемещение на одно слово вправо |
| C-v | scroll-up | Перемещение на одну страницу вперед |
| C-a | beginning-of-line | Перемещение в начало строки |
| C-e | end-of-line | Перемещение в конец строки |
| M-v | previous-page | Перемещение на одну страницу назад |
| M-b | previous-word | Перемещение на одно слово влево |
| M-f | next-word | Перемещение на одно слово вправо |
| C-p | previous-line | перемещение на одну строку вверх |
| C-n | next-line | перемещение на одну строку вниз |
| C-M-a | sgml-beginning-of-element | Перемещение на первый символ данных текущего элемента |
| C-M-e | sgml-end-of-element | Перемещение на последний символ данных текущего элемента |
| C-c C-d | sgml-next-data-field | Перемещение курсора в следующую позицию, где можно вводить данные |
| C-c C-n | sgml-up-element | Перемещение вверх по иерархии элементов в конец закрывающего тэга |
| C-M-u | sgml-backward-up-element | Перемещение вверх по иерархии элементов в начало открывающего тэга |
| C-M-d | sgml-backward-element | Перемещение в начало следующего вложенного элемента |
| C-M-f | sgml-forward-element | Перемещение в конец следующего вложенного элемента |
| C-d | delete-char | Удаление символа |
| C-@ | set-mark-command | Начало выделения |
| C-space | set-mark-command | Начало выделения |
| C-w | kill-region | Удаление выделенной области в буфер обмена |
| C-k | kill-line | Удаление фрагмента от курсора до конца строки |
| C-x C-x | exchange-point-and-mark | "Перепрыгивание" курсора в начало/конец выделенного блока |
| C-y | yank | Вставка удаленного текста в текущую позицию |
| M-d | kill word | Удаление слова |
| M-i | overwrite-mode | Переключатель Insert/Replace. Нестандартная команда Emacs, установленная строкой в файле ".emacs". |
| M-q | fill-paragraph | Выравнивание параграфа |
| M-w | kill-ring-save | Копировать в буфер обмена (kill ring) |
| M-y | yank-pop | Последовательная вставка в текущую позицию блоков, помещенных в буфер kill ring |
| M-C-\ | indent-region | Выравнивание строк выделенного фрагмента. В режиме PSGML - выравнивание тэгов, чтобы раскрыть структуру элемента. |
| C-q | quoted-insert | Вставка символьного эквивалента нажатой клавиши, даже если это командная комбинация |
| C-c C-e | sgml-insert-element | Ввод элемента через командную строку минибуфера |
| С-с < | sgml-insert-tag | Вставка открывающего тэга. Удобно использовать при добавлении тэгов к существующему тексту, поскольку содержание элемента можно редактировать |
| C-c / | sgml-insert-end-tag | Вставка закрывающего тэга. Удобно использовать при добавлении тэгов к существующему тексту |
| C-c C-r | sgml-tag-region | Вставка открывающего и закрывающего тэгов элемента для выделенного фрагмента текста |
| C-c - | sgml-untag-element | Удаление открывающего и закрывающего тэгов элемента. |
| C-c C-k | sgml-kill-markup | Удаление отмеченного курсором тэга |
| C-c Enter | sgml-split-element | Или, "вставить новый элемент, идентичный текущему". Разбить элемент вставкой закрывающего и открывающего тэгов |
| C-c o | sgml-comment | Макро-вставка в .emacs-файл. См. описание |
| C-M-k | sgml-kill-element | Удаление текста от текущей позиции курсора до конца следующего вложенного элемента |
| M-Tab | sgml-complete | Режим "дописывания" при вводе тэгов и других значимых слов |
| C-c C-q | sgml-fill-element | Выравнивание текущего элемента |
| C-c + | sgml-insert-attribute | Редактирование атрибутов текущего элемента с использованием подсказки |
| C-c C-a | sgml-edit-attributes | Редактирование атрибутов текущего элемента с использованием формы в отдельном окне Emacs |
| C-h | Меню справочных средств | |
| C-h ? | help-for-help | Описание использования встроенной подсказки |
| C-h a | command-apropos | Вывод на экран всех команд, где встречается указанное выражение |
| C-h k | describe key | Вывод описания комбинации клавиш, нажатой после C-h k |
| C-c C-c | sgml-show-context | Или, после C-c C-a, завершение редактирования атрибутов |
| C-x ' | next-error | Найти следующую ошибку в окне сообщений об ошибках |
| C-c C-o | sgml-next-trouble-spot | Переместить курсор к следующей потенциальной проблеме |
| C-c C-v | sgml-validate | Отправить документ на обработку |
| C-x 0 | delete-window | Закрыть текущее окно |
| C-x 1 | delete-other-windows | Закрыть все окна, кроме текущего |
| C-x 2 | split-window-vertically | Разделить окно по горизонтали |
| C-x o | other-window | Переход в другое окно |
| C-x b | switch-to-buffer | Отобразить другой буфер в текущем окне |
| C-x C-b | list-buffers | Отобразить список открытых буферов в новом окне |
| C-x C-s | save-buffer | Сохранить содержимое буфера в файле на диске |
| C-x C-w | write-file | Сохранить содержимое буфера в файле на диске под новым именем (если нужно) |
| C-x C-c | save-buffers-kill-emacs | Перед выходом из редактора запросить о необходимости сохранения измененных файлов |
| C-x C-f | find-file | Открывает и считывает файл в буфер |
| C-x i | insert-file | Вставка содержимое файла в буфер в текущую позицию |
| C-g | keyboard-quit | Прекращение текущей многошаговой операции |
| C-_ | undo | Откат последней команды |
| C-x ( | start-kbd-macro | Начать запись макрокоманды |
| C-x ) | end-kbd-macro | Закончить запись макрокоманды |
| C-x e | call-last-kbd-macro | Выполнить последнюю записаную макрокоманду |
| C-u (number) C-x f | set-fill-column | Устанавливает правую границу в столбце (number) |
| M-x | execute-extended-command | Отображение командной строки в окне минибуфера |
| C-s | isearch-forward | Прямой инкрементный (пошаговый) поиск |
| C-r | isearch-backward | Обратный инкрементный (пошаговый) поиск |
| M-% | query-replace | Предлагает ввести образец для поиска и текст для замены |
Сгенерировано TEItools
Крестоносцы
ОЛЕГ ТАТАРНИКОВ,Опубликовано: 24.3.1997
© 2002, Издательский дом "КОМПЬЮТЕРРА" | http://www.computerra.ru/
Журнал "Компьютерра" | http://www.computerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.computerra.ru/offline/1997/189/431/
Введение
Ты так гонишься за тенью,
что теряешь наличие.
Из книги Иова
Концепции Интернета, первоначально разработанные в унитарной, централизованной армейской системе министерства обороны США, быстро вышли из "диктаторских пут" и воспринимаются сегодня как идеи всемирной общедоступной информационной магистрали. Любые попытки ограничения доступа, цензуры и внешнего воздействия на Сеть однозначно воспринимаются мировым сообществом в штыки. За широким внедрением Интернета в нашу жизнь не стоит никакая организация: это самоорганизующаяся система, и главный ее двигатель - все человечество. В этом основное отличие всемирной Сети от коммерческих сетей, в этом ее привлекательность для миллионов и ее сила. В таком свете неприглядно выглядят сторонники массовой "коизации" информационного обмена в России, стремящиеся загнать всех российских пользователей в прокрустово ложе единой кодировки. Тем более что носители этой идеологии составляют абсолютное меньшинство российских пользователей Интернета, пусть даже и самое активное. Причем благие намерения, которыми они при этом руководствуются, никак не служат оправданием для насильственного ограничения свобод и причинения дополнительных неудобств огромной армии пользователей, число которых продолжает стремительно расти. Ибо известно, куда таковыми намерениями обычно мостятся дороги.
Поводом для написания данной статьи послужили многочисленные послания, приходящие по электронной почте автору и многим другим "русскоязычным" абонентам Интернет-ресурсов в нечитабельном виде, то есть совершенно непригодные для чтения и никакой расшифровке не поддающиеся (проще говоря, безвозвратно загубленные - состоящие из одних "крестов"). Причем основными "виновниками" этого оказались провайдеры Интернет-ресурсов, как раз и обязанные оградить своих клиентов от подобных казусов.
Пытаясь разобраться во всех существующих проблемах и найти возможные пути решения, я обратился непосредственно к тем, кто максимально заинтересован в преодолении существующих трудностей, то есть к разработчикам программного обеспечения, Интернет-провайдерам и, естественно, их клиентам.
При всех очевидных разногласиях, существующих между этими группами (каждая из которых преследует несколько разные цели с одним общим знаменателем - избавить себя от необязательной работы), необходимость их сближения для понимания общих проблем очевидна.
Итак, существуют три основных Интернет-ресурса (проблема с русским языком для них одна, а решения могут быть и различные):
В ближайшей перспективе, видимо, не удастся уйти от использования в Сети кодировки KOI8-R (сказывается инерция крупнейших Интернет-провайдеров). Остается лишь минимизировать ущерб от такой "сектантской" приверженности. Но даже при всеобщем стремлении к единству, будущее, по общему мнению, принадлежит набирающей силу универсальной кодировке Unicode, а в дальнейшем целесообразен перевод всех Интернет-ресурсов на HTML-формат (или какой-либо другой, который придет ему на смену) с передачей адресату текста вместе со всеми используемыми в нем шрифтами и версткой, что решит сразу несколько проблем, в том числе и с национальными алфавитами.
Электронная почта
Прибежали в избу дети, второпях зовут отца:
Тятя, тятя, наши сети притащили мертвеца.
А. С. Пушкин
Электронная почта - это частное дело двух человек (отправителя и получателя). В идеале производитель клиентской программы может обеспечить пользователя возможностью перевода из кодировки (одной из возможных, реально - это две-три), в которой сообщение поступило, в локальную, принятую на данной компьютерной платформе и/или операционной системе, и обратно (в соответствии, например, с именами в MIME charset). Но только возможностью! Чтобы пользователь всегда мог от нее отказаться и передавать сообщение как ему угодно. В любом случае этого не должен делать сервер. Вообще, какие-либо действия с корреспонденцией (за исключением пересылки) необходимо запретить категорически, ибо они напоминают перлюстрацию писем - не его (сервера) это собачье дело, он лишь почтальон, транспорт. Пока общие правила не выработаны, а программы работают "криво" - в ход идут всевозможные обходные маневры, который только усугубляют положение.
Единственный выход из этого - возложить всю ответственность на отправителя (по умолчанию). По отдельной договоренности можно, конечно, предоставить ему и другие возможности, но оставить право выбора. А что же мы видим сегодня? Владельцы серверов включают "неестественный интеллект" и насильственно перекодируют любое сообщение в KOI8-R. Помилуйте, господа! Откуда вы знаете, как и на каком языке я пишу послания в нашей многонациональной стране? Почему вы думаете, что я его не шифрую и не кодирую как мне заблагорассудится? Почему вы мните себя всемогущими и всеведущими и наделяете себя правом уничтожать частную информацию (а именно так зачастую и происходит). Посмотрите на кодовые таблицы. Что такое перекодировка? Это прибавление (или вычитание) к коду символа некоторого числа, определяющегося разницей между положениями символа в кодовых таблицах. Если в результате двойного или неправильного перекодирования полученный код "выскочит" из диапазона 0-255, то информация о символе будет утеряна! В качестве упражнения попробуйте перекодировать в KOI8-R, например, текст, представленный в альтернативной DOS-кодировке, принимая ее за Windows 1251, а потом попытайтесь что-либо восстановить…
Фанатики "запудрили мозги" даже фирме Netscape, и теперь браузером Netscape Navigator вообще невозможно пользоваться: он принудительно перекодирует, например, из Windows 1251 в KOI8-R, причем без возможности отключения и только в одну сторону - при отправке.
В конце концов, существуют Uuencode, MIME, Quoted-printable и прочие шифровальщики 8-битных символов, придуманные именно затем, чтобы обеспечить гарантированную передачу сообщений даже при "обрезании" 8-го бита (о чем будет сказано ниже), чтобы было удобно всем и каждый мог бы использовать "родную" кодировку, - а у нас пытаются всех загнать в одно стойло. Конечно, далеко не все почтовые программы могут автоматически корректно восстановить текст из бессодержательного набора букв, цифр и знаков препинания, в которые он после этого превращается. А что делать? Если вы не намерены производить массовые рассылки неизвестным абонентам, то со своими адресатами всегда можете договориться. Причем в этом случае неплохо воспользоваться и каким-либо специальным шифром (а такую возможность начисто отвергают сторонники серверной перекодировки).
Да, посылая письма неизвестному адресату (с которым вы не успели договориться о приемлемом для вас обоих формате), вы рискуете попасть впросак. Но это должно быть на вашей совести! Здесь проще прибегнуть ко всем кодировкам одновременно или написать по-английски. Или по-русски, но английскими буквами (что многие и делают, даже вопреки потугам "слишком умных" провайдеров). Нынешнее положение вещей недопустимо! Программы от версии к версии изменяют правила оформления, форматы данных и кодирование. Серверы обретают "неестественный" интеллект и "непроходимую" настойчивость, а пользователи, вместо того чтобы заниматься делом, - ищут средства для "обмана". И существующая ситуация настолько зыбкая, что гарантий не может дать никто, а благодаря всевозможным ухищрениям, положение только ухудшается. Посудите сами, если вам прислали письмо в какой-то конкретной кодировке (из двух-трех возможных реально), пусть даже неудобной для вас, - его можно перекодировать и самостоятельно. Если же по пути оно прошло через две-три "насильственные" трансформации, то информация безнадежно утеряна.
Конференции по интересам
>>>> А вот зайца кому?
>>> Мне!
>> Й чОЕ!!
> i mne!!!
and me too!!!!
Телеконференции - это единственное место, где вопрос, какую кодировку применять, перестает быть личным делом каждого. Если вы отправляете сообщение для публичного прочтения, то, очевидно, его необходимо унифицировать.
Конечно, поддерживать несколько различных кодировок для конференции довольно глупо, разумно остановится на одной. Исторически - это KOI8-R, пусть она и остается до лучших времен. В конце концов, участие или неучастие в обсуждениях - это также личное дело каждого и его собственная проблема. Хочешь участвовать в существующих телеконференциях - "коифицируйся", не хочешь - создавай свои (на своем сервере и в "своей" кодировке). Есть участники - есть конференции, уйдут участники - пропадут и конференции.
По моему личному мнению, информационная ценность публичных телеконференций довольно низкая, серьезные обсуждения уходят в специализированные списки рассылки, избегая информационного "засорения", оперативную информацию всегда можно почерпнуть в on-line, а поболтать - на chat. "Агрессивные" фидошники, отстаивая свою сеть как альтернативу Интернету, ожидают, порой, ответа на свои послания месяцами, а несовпадение пришедших вопросов и ответов на них, рождает дополнительную путаницу.
Группа участников телеконференций не самая многочисленная в Сети, однако, как показывает опыт, самая влиятельная и… консервативная: "Ну КОИ8 все же было принято использовать. News, скажем, в ней приходится читать. До сих пор. А раз мне что-то приходится читать в КОИ8, все остальные кодировки меня раздражают" (Михаил Исаев, из обсуждения русской кодировки в телеконференции relcom.talk).
Однако и здесь больше вопросов, чем ответов. Больная проблема поддержки русского языка время от времени всплывает и в существующих конференциях, заставляя страсти разгораться с новой силой. Участвуя в этих обсуждениях, не стоит полагаться на мнения отдельных участников: некоторые из них, несмотря на юный возраст, - "махровые" консерваторы, о других складывается впечатление как о не обременяющих себя какой-либо полезной деятельностью болтунах, а всех их, похоже, объединяет чувство принадлежности к некому клану, основным атрибутом которого является приверженность к использованию кодировки KOI8-R. Может, она и необходима-то лишь для этого? Как хорошо почувствовать себя "крутым", установив на своей машине поддержку KOI8-R, и смотреть свысока на тех, кто этого еще не сделал, обзывая их при этом лохами или, по крайней мере, ламерами.
Но все же я выяснил точки зрения достаточно серьезных и известных в этой области людей: Андрея Чернова, разработчика почтовой программы UUPC/@ и инициатора предложения RFC 1489 (Internet Request For Comments), регистрирующего употребление русской кодировки KOI8-R в качестве рекомендательной для любого представления информации в сети, содержащего кириллицу (причем, как следует из заявки, - кириллицу вообще, без учета мнения других кириллических народностей), координатора релкомовских конференций Дмитрия Мартынова, а также других известных мне людей, причастных к становлению и развитию Интернет-технологий в России. Их мнения не во всем совпадают, и, уж конечно, не все они являются сторонниками "драконовских" мер.
Выступления в конференциях никого ни к чему не обязывают, поэтому приходилось проверять и перепроверять информацию, причем, как правило, тут же, не выходя из Интернета. В общем, основная часть сведений почерпнута в результате виртуального обмена. Причем несомненным достоинством последнего является возможность его принудительного отключения в любую минуту. Так как конференции являются публичными и общедоступными, я оставляю за собой право свободно цитировать некоторые мнения, а соображения, высказанные в личной переписке, - с согласия авторов.
Итак, ключевое мнение: "Не было бы стерверов в 1251 - поставили бы виндовозники на своих машинах KOI8-R, никуда бы не делись"(Дмитрий Мартынов). А тем временем Windows-"стерверов" становиться все больше и больше…
Русская кодировка
Для настоящего понимания духа предмета
особенно важно овладеть определениями.
С. К. Клини, Математическая логика
Что такое кодировка? Это метод компьютерного представления множества различных символов, включающего буквы алфавита, знаки пунктуации, цифры и специальные знаки.
Обсуждая обременительное сосуществование нескольких различных кодировок для представления русских букв и связанные с ним проблемы, озираются чуть ли не на Кирилла и Мефодия. Выпендрились, понимаешь... Забывая, что даже американцы, по общему мнению, "затачивающие" все под себя, до недавнего времени имели по крайней мере две кодировки: EBCDIC (Extended Binary Coded Decimal Interchange Code) и ASCII (American Standard Code for Information Interchange).
EBCDIC-схема издавна применялась фирмой IBM в мэйнфреймах и использовала 8 бит для представления символов. Но американцы решили сэкономить (американский набор символов самый маленький, даже англичанам требуются дополнительный значки, например, для обозначения фунтов стерлингов) и приняли схему ASCII, где для кодирования символов используется только 7 бит из байта. Американцы решили, что для представления печатных символов с лихвой хватит 128 позиций (в самом деле: 27 строчных букв, 27 прописных, 10 цифр, десяток знаков препинания и все), да еще и запас останется.
Были и другие кодировки, и долгое время все они сосуществовали на равных. Но вдруг правительству США "взбрело в голову" поддержать ASCII-кодировку на государственном уровне, и все подравнялись на главного заказчика. А централизованное и плановое советское народное хозяйство даже такой малости не сделало, а наоборот, видимо, в издевательских целях, приняло несколько ГОСТов по кодировкам, а затем и вообще пустило это дело на самотек. Скоро все "мертворожденные" ГОСТы были забыты, и мы сегодня пользуемся тем, что нам "подарили" американские "русификаторы" (национальная принадлежность конкретных русификаторов в данном случае значения не имеет, так как все "живущие" локализации делались с подачи западных фирм или по их "вине").
Таблицы символов Extended ASCII (ISO8859-5, DOS 866, WINDOWS 1251, Macintosh)
Без конца сбиваясь, при луне
Трое лбов считали ребра мне.
Сбились в третий...
Сбились в пятый раз...
Как все плохо делают у нас!!!
С. Статин
Расширение таблицы ASCII произошло по требованию европейских стран (причем, опять же, вплоть до правительственного вмешательства). Для представления печатных символов большинства европейских алфавитов пришлось "вернуть" только восьмой бит в байте. Лишний бит - это еще 128 символов, и там смогли разместиться все диакритические знаки национальных алфавитов. Так была создана таблица символов Extended ASCII. Однако уже созданное к тому времени американское программное обеспечение было рассчитано на 7-битную кодировку, и возникло множество проблем, описание которых выходит за рамки данной статьи.
Наш алфавит отличается от латинского полностью, и символов в нем больше (66), поэтому он, как и некоторые другие европейские алфавиты, не уместился в таблицу Еxtended ASCII (ISO 8859-1, или Latin-1, ISO - International Standards Organization, то есть Международная организация по стандартизации). Пришлось придумывать отдельные таблицы на каждый язык, и наша получилась пятой по счету - ISO 8859-5.

Полученный в результате чистый продукт так и не прижился. ISO 8859-5 подкосила и российская компьютерная раздробленность, и разработка IBM - PC, в операционной системе которого Билл Гейтс и Microsoft применили псевдографику (вертикальные и горизонтальные черточки, различные уголки, прямоугольники и т. д.), занявшую места русских букв в таблице ISO 8859-5. Пришлось срочно "распихивать" русские буквы по местам, не занятым псевдографикой. Забавно, что стандартов никто не принимал (точнее, их было несколько, поэтому никто не обращал на них внимание), но проблема утряслась, и в результате русификации MS-DOS появилась "альтернативная" кодировка 866.

Почему вышеупомянутой фирме Microsoft не подошла 866-я для Windows, понятно - отпала необходимость в псевдографике. А вот ISO 8859-5 не подошла, похоже, из принципа делать все самостоятельно (хотя А. Чернов утверждает, что и CP1251, и CP878 (KOI8-R) основываются на стандартах фирмы IBM - и Microsoft тут совершенно ни при чем, CP - Code Page, то есть кодовая страница). Так или иначе, но для "русских" Windows была принята кодировка Windows-1251 (CP1251), самая распространенная сегодня.

Не забыть бы также и пользователей компьютеров Macintosh, которым вообще никто не указ! Для них сделали специальную кодировку, просто так, для праздника, чтобы им жизнь медом не казалась и они бы использовали только "родной" софт.

А ISO 8859-5, чтобы не обиделась, стали величать основной, но ею все равно почти никто не пользуется.
Теперь представим себе российского программиста, создающего информационную систему для своего предприятия. Ему нужна соответствующая кодовая таблица и программа, которая ее поддерживает. Если программа "сильно" американская (не обрабатывает восьмой бит), то он ее модифицирует или пишет свою. В конце концов проблема решается.
Сложнее обстоит дело с коммуникационными программами. Электронная корреспонденция ходит разными, подчас непредсказуемыми путями. И "злобная" американская машина может "обрезать" (обнулить) 8-й бит. Сейчас таких машин практически не осталось (хотя мне сразу же указали на такого "монстра", как CompuServe), во всяком случае, они не являются промежуточными при пересылке.
Однако когда Интернет в России только появился (90-91-й годы), эта возможность была далеко не гипотетическая, а очень даже реальная. Так что следующая кодировка - KOI8-R, использовавшаяся в середине 80-х, когда были еще живы 7-битные терминалы, достаточно хорошо проявила себя и в новом, сетевом применении. Сложилась определенная, довольно консервативная российская сетевая культура, представители которой занимают пока ключевые посты, так что даже массовый наплыв пользователей Microsoft Windows (более 90 процентов клиентов) пока не может ее снести. Кто победит, и победит ли кто вообще - посмотрим. Думаю, что проблема отомрет сама собой (причем, может быть, и вместе со структурой в ее нынешнем виде), и для этого есть все основания. А пока процветает "насильственная коизация".
Таблица символов KOI8-R
Представьте себе письмо, написанное по-русски, отправленное электронной почтой и нарвавшееся по пути на "злобный" американский сервер (а у нас, порой, между соседними домами письма через Америку ходят - провайдеры никак не договорятся), срезающий у всех писем восьмой бит. После такого "обрезания" те буквы, которые были русскими, становятся латинскими. Теми, чей номер в таблице меньше ровно на 128. Значительное число букв нашего алфавита имеет фонетические аналоги в латинском. Например, П и P, Р и R. К тому же есть несколько совпадающих и по написанию. Значит, целесообразно расположить русские буквы таким образом, чтобы они отличались от похожих латинских на 128! Тогда потеря восьмого бита превратит сообщение в некую транслитерацию (состоящую из одной латиницы), смысл которой все-таки можно восстановить и прочитать по-русски. Неприятно, но понятно.
KOI8-R (код обмена информацией, 8 бит) - это и есть такая таблица. И именно она с самого начала применяется для обмена почтой и новостями в России. Первые письма так и ходили на языке "ruglish", том самом фонетическом эквиваленте, когда "здравствуй" выглядит как "zdrawstwuj". Однако все письма читались! А что делать - mnogie do sih por tak pishut. Но сегодня это уже по другим причинам.

Итак, KOI8-R сегодня - сетевая кодировка de facto. Почему? Вышеописанными соображениями уже можно было бы пренебречь. Сегодня некоторые приверженцы ссылаются на описание кодировки в RFC 1489 (Internet Request For Comments), предложенное в июле 1993 года Андреем Черновым, а значит, и "стандартность". Ну и что? В других RFC предлагается и ISO 8859-5 (например, в RFC 1700). Да и вообще, RFC - это рекомендации, как и все в Интернете. А если рекомендации не согласуются с жизнью и причиняют неудобства абсолютному большинству пользователей, то не следует ли принять другие, более удобные рекомендации?
С точки зрения большинства пользователей, безусловный лидер - Windows 1251. Единственный "серьезный" аргумент против нее (за исключением традиции) высказал Д. Мартынов: с позиции программиста 1251-я плоха, потому что буква "я" попадает на место 0xFF, из-за чего некоторые программы на Си, считающие (char)(getchar())==-1 признаком ошибки, ведут себя с этой буквой неадекватно. Но тогда нехороша и KOI8-R, у которой там же "Ъ", и годится только "мертвая" ISO 8859-5.
Кроме того, "безнадзорная" кодировка KOI8-R существует в таких безобразных реализациях, что серьезно встает вопрос о профессионализме при ее использовании. То есть там буква "Е", то нет, то есть псевдографика, то нет. Все существующие шрифты в этой кодировке "кривые" (абы только писалось), и работать с ними неприятно. Предвижу возражения о несостоятельности таких обвинений, но ведь факт пренебрежительного отношения к шрифтам в KOI8-R о чем-то говорит (я нарочно проверил добрый десяток). Не предусмотрены и специальные русские эпистолярные символы: длинное тире и кавычки елочкой. "Разработчики" этих шрифтов явно не подозревали, что минус, знак переноса и тире - разные символы. Так что вряд ли и эта кодировка станет единственной сетевой в России. И задержать ее может только консерватизм сегодняшних серверов-"крестоносцев" (на них все настроено именно под нее) и несовершенство программного обеспечения.
То, что провайдеры утверждают о невозможности что-либо изменить, - враки! В свое время возникла гораздо более серьезная, причем всемирная проблема с IP-адресами (стало не хватать адресов при кодировании принятым тогда способом), а на них вообще все держится. Однако же под давлением общественности пришлось осуществить необходимые реформы. А можно было бы также сказать: "у нас все и так хорошо работает, просто будем давать новые адреса по мере выбытия владельцев старых, а остальные потерпят". Просто, удобно, и не надо ждать, пока все перестроятся.
Появление новых, более демократичных провайдеров и продолжающаяся экспансия Windows-клиентов и серверов может резко изменить положение, превратив вчерашних "диктаторов" в тихую секту, типа "адвентистов седьмого дня".
А существует ли вообще кандидат на единую кодировку? Да, и похоже, его вступления в права осталось ждать недолго, хотя и совсем по другим причинам…
| Платформа | Число посещений | Удельный вес, % |
| Windows | 19959 | 52,3 |
| Macintosh | 9460 | 24,7 |
| OS/2 | 3567 | 9,34 |
| Unknown | 2004 | 5,25 |
| Unix | 1708 | 4,47 |
| Amiga | 1265 | 3,31 |
| Sega Saturn | 131 | 0,34 |
| WebTV | 52 | 0,13 |
| NeXT | 10 | 0,02 |
| VM/CMS | 6 | 0,01 |
Сайт www.medlux.ru показателен еще и тем, что отношения к компьютерной тематике не имеет (наличие лекарств в аптеках Москвы и другая медицинская информация), а обращения к нему происходят в основном из стран СНГ.
(Информацию предоставил Web-мастер Александр Зотов.)
| Количество посещений | Платформа |
| 39030 | Win95 |
| 27094 | Windows неопозн. |
| 10321 | Win16 |
| 2903 | WinNT |
| 1440 | Win32 |
| 1254 | FreeBSD |
| 1181 | SunOS |
| 863 | Unix unknown |
| 595 | Macintosh |
| 583 | OS/2 |
| 540 | Linux |
| 192 | Mac_PowerPC |
| 156 | HP-UX |
| 132 | AIX |
| 97 | BSD/386 |
| 80 | OSF1 |
| 34 | AlphaServer |
| 28 | BSD/OS |
| 16 | OpenVMS |
| 14 | IRIX64 |
| 7 | Alpha |
| 6 | WebTV |
MS - 93,3%, Unix - 5,1%, Mac - 0,9%, OS/2 - 0,7%.
Нас спасет Unicode
Откуда у меня такой оптимизм относительно использования Unicode? Этот стандарт разрабатывается консорциумом Unicode, куда входят представители таких фирм, как Taligent, Microsoft, Xerox, NeXT Computer, Sybase, и других. Появился он в операционных системах Unix, NeXT, Windows NT, а затем и в Windows 95 и служит для универсального представления символов. Ему не нужны отдельные таблицы, как в ISO 8859-1,2,3,4,5… Символы представляются шестнадцатью битами (двумя байтами), и каждый символ фактически содержит код языка, к которому он принадлежит, что дает возможность выбора языковых и шрифтовых средств исключительно на основе кода символа, а не с помощью дополнительных указаний на кодовую таблицу типа charset: koi8-r. Таким образом, даже если заголовок письма неверен, испорчен или вообще отсутствует, содержание все равно восстанавливается. Другая возможность, решающая в пользу применения Unicode - употребление смешанных языков в корреспонденции, что особенно актуально для нашей многонациональной страны (в конце концов, в Unicode можно включить и все используемые сегодня кодировки). По утерянной традиции русского дворянства все письма положено писать на смеси "французского с нижегородским", а продвинутые смогут цитировать и Лао Цзе в подлиннике. В Unicode можно включить и специальные типографские и оформительские символы, принятые для разных стран. В общем, отличный кандидат на универсальную кодировку (если угодно, с последующим перекодированием у "несознательных" клиентов, ведь никто не собирается отменять "исторические" традиции, сложившиеся в различных операционных системах, а Unicode сам сохранит такое соответствие). Кроме того, поддержку Unicode обеспечивает и Java - модный сегодня язык программирования для Интернета и сетевых приложений.
Общее число иероглифов (включая те, что используются в одном- единственном древнем манускрипте) превышает 50 тысяч. Причем японская/китайская иероглифическая письменность устроена так, что сочинить новый иероглиф может, в принципе, любой. Тут уж и 32 разрядов не хватит. На практике, правда, изобретение иероглифа считается высшим пилотажем и попускается только великим, а не всякому с улицы. Однако в 50-х годах японцам все это самим надоело, и они оставили только 1850 иероглифов плюс некоторые наиболее излюбленные прочие, а остальные велели писать алфавитом. Но, как всегда, нашлась куча несогласных, которые явочным порядком продолжают использовать "отмененные" иероглифы. Тем не менее эти 1850 с плюсом в Unicode вполне умещаются. В Китае несколько сложнее, но и там предприняты шаги для упрощения письменности.
|
Компьютер понимает по-китайски ("Popular Science" #8, 1996. Перевод "Наука и жизнь" #1, 1997.) Большие проблемы для широкой компьютеризации Китая создает иероглифический китайский шрифт. Если для большинства других языков хватает стандартной клавиатуры со 102 клавишами, то при 13 тысячах иероглифов клавиатура заняла бы большой стол. И даже упрощенный вариант письменности "всего" с 5 тысячами знаков не позволяет представить себе портативный китайский персональный компьютер. Сейчас большинство китайских пользователей работает на английском языке, а если приходится все же печатать китайские тексты, то пишут их произношение латинскими буквами (кстати, в 50-х годах пытались ввести такую систему письма, но позже отказ от иероглифов был сочтен непатриотичным). Некоторые фирмы выпускают специальные клавиатуры для китайского языка. На клавишах нанесены отдельные элементы иероглифов. Чтобы скомпоновать целый иероглиф, приходится использовать до шести клавиш. Поэтому сейчас разрабатываются программы распознавания китайской речи, устной и письменной, чтобы компьютеру можно было диктовать или писать специальным электронным пером прямо на экране. Американская фирма "Моторола" предложила недавно программу распознавания китайского письма, делающую при работе всего 5 процентов ошибок даже при использовании всех 10 тысяч иероглифов. Надо сказать, дело облегчается тем, что практически у всех китайцев хороший и почти одинаковый почерк. Фирма "Эппл" разработала программу для печати под диктовку на основном (пекинском) диалекте. Не оставлены и попытки ввода китайских текстов с клавиатуры. Одна канадская фирма создала 10-клавишную клавиатуру с наиболее распространенными элементами иероглифов. Компьютер работает со специально разработанной подсказывающей программой. При нажатии одной-двух клавиш на экран выводится ряд иероглифов, имеющих в себе эти элементы, и оператору остается только выбрать нужный. В среднем на создание одного иероглифа при такой системе уходит 2,7 удара по клавишам. В самом Китае фирмой "Сяочжун Компьютер" предложена клавиатура из 24 клавиш, основанная не на внешнем виде, а на произношении иероглифов. |
И не только для белых
Сидит собака и стучит лапами по клавиатуре.
- Собака, ты что делаешь?
- Почту пишу.
- А как же они с тобой переписываются?
- А я им не говорю, что я собака.
Раньше, для того чтобы любой пользователь мог войти в Интернет, ему необходимо было кое-что знать о своем компьютере и грамотно настроить специальную программу (а то и не одну). В общем, каждый счастливый обладатель сетевого доступа чувствовал себя неким гуру. В последнее время, особенно с появлением таких операционных систем, как Windows 95, большинство ожидает от машины, что она сама себя настроит, наладит, договорится с другими машинами, а пользователю останется только получать удовольствие. И это недалеко от истины. Конечно, необходимо признать и существование того, что старожилы называют ламерством, то есть навязчивое желание малообразованных неофитов навязать свою точку зрения на проблему, с которой тот недавно познакомился "на лету". Но таковы реалии сегодняшнего дня, ничего с этим не поделаешь, остается только смириться, предоставив полную свободу пользователю в рамках некой осознанной необходимости. В конце концов процесс так или иначе нормализуется, и все встанет на круги своя. Все необходимые средства сегодня интегрированы в операционные системы, остается лишь прочитать пару страниц руководства, и если бы не русский язык, то думать вообще бы не пришлось. Но, к сожалению, обладание "великим и могучим" не дает закостенеть мозгам и отвлекает людей от их непосредственной деятельности.
Итак, мы имеем несколько кодировок для представления кириллицы. Все они объективно существуют, все используются. Провайдеры желают иметь в Интернете одну русскую сетевую кодировку. Так как и почта, и новости исторически ходили в KOI8-R, им ничего не хочется менять и они готовы распространить это и на другие ресурсы (в том числе и на WWW). Пользователи не желают ничего "подкручивать" и налаживать в своих программах для того, чтобы обмениваться информацией по-русски. По большому счету, правы последние. Слишком дорогую цену им порой приходится платить, перенастраивая программы, работающие с Сетью (а их становится все больше и больше). К тому же клиенты справедливо считают это работой тех, кто им доступ в эту Сеть и предоставляет. Конечно, со временем все установится, каждый найдет своего провайдера, ибо спрос, как известно, рождает и предложение, а клиент всегда прав!
Для тех, кто не хочет ничего налаживать, существуют готовые решения, многие провайдеры предоставляют собственные программы (правда, далеко не всегда лучшие). Например, для DOS есть пакет под названием UUPC (в DOS'овской модификации А. Чернова - UUPC/@). Вы можете его установить, пользоваться только им, только под DOS и "поминать" время от времени господина Чернова. Зато он будет конвертировать отправляемую корреспонденцию в кодировку KOI8-R, приходящую - в альтернативную, соблюдать международные стандарты и думать о российской доле. Вам об этом думать не надо. Строго говоря, протокол UUCP, которым пользуется программа UUPC, не относится к Интернет-протоколам и безнадежно устарел. Для того, чтобы почта дошла до адресата, ее необходимо преобразовать в Интернет-формат, что происходит на сервере провайдера (если, конечно, он поддерживает UUCP).
Основные аргументы в пользу UUPC - его неприхотливость к ресурсам, способность работать на "слабых" компьютерах под DOS, благосклонное отношение к частому пропаданию модемного соединения и простота установки/настройки. Для тех, кто хочет или может себе позволить только электронную почту, UUPC - идеальное решение, аналогов которому нет и скорее всего уже никогда не будет.
Если хочется чего-нибудь покрасивее - поставьте Windows и возьмите Microsoft Internet Mail & News. Они довольно аккуратно сделаны, желающие могут выбрать KOI8-R, и программы сами все перекодируют туда/обратно в CP1251 и проставят правильный charset (а без указания - не перекодируют). Пожалуй, это единственный иностранный продукт, способный корректно работать со всеми российскими "заморочками" и ориентированный на будущее. Поддерживается MIME-стандарт (Multipurpose Internet Mail Extensions), в том числе восьмибитная кодировка, а также кодировки Base64 и Quoted printable. Принятые звуковые и видеофрагменты пакет правильно экспортирует в соответствующие приложения.
Поскольку Internet Explorer, в состав которого входит Internet Mail, является браузером, то он может отправлять послания и в HTML-формате. Господин Чернов, по его утверждению, "заставил" Microsoft приобщиться и к KOI8-R, причем корректно "подкрутить" и ввод форм, и имена кнопочек в Explorer, и при этом ему не удалось его "сломать", как в случае с Netscape, так что для Windows 95 скоро не будет никаких проблем, если конечно сами провайдеры, по доброте душевной, не постараются.
Возможность работы с отложенной доставкой реализована великолепно. Кроме того, Internet Mail позволяет управлять модемным соединением: самостоятельно устанавливает связь, отправляет и получает почту. По окончании приема/передачи модем автоматически отключается. Можно даже составить расписание автоматических сеансов связи.
О программах Microsoft Mail & News я в последнее время слышал только хорошее (дырки латаются очень быстро!), хотя сам ими не пользуюсь. Даже недостаток - не показывают картинок в тексте письма (как это делает Netscape), интерпретируется многими как достоинство (не будете без конца порнографию смотреть). Может быть, слишком простая книжка адресов (невозможно организовать иерархию), и все... Зато нет проблем с русскими буквами! Хочешь так, хочешь этак. Простые, приятные и красивые программы (новый Netscape Communicator 4.0, похоже, смотрел уже на Microsoft, но кроме интерфейса ничего не высмотрел и по-прежнему для российского употребления практически не пригоден).
Таким образом, несмотря на то, что я с момента выпуска и по сей день работаю с программами Netscape, рекомендую пользователям Windows 95 именно Microsoft Mail & News. Да и Internet Explorer становится гораздо лучше. И к тому же работает...
Для любителей трудностей
Всякое изменение тела, будь то болезнь или здоровье, сводится к перемещению веществ в пространстве… но демоны не могут произвести этого движения, так как это доступно только богу. Отсюда ясно, что демоны не могут произвести никакого, по крайней мере фактического телесного изменения и что в силу этого подобные превращения должны быть приписаны какой-либо тайной причине.
"Молот ведьм"
Существует несколько способов обработки передаваемой электронной почты (аналогичные рассуждения применимы и к новостям), а соответственно, и возможностей безнадежно испортить сообщение. Эти способы естественным образом вытекают из того, как организована передача почты. Пользователь взаимодействует с почтовой программой, которая позволяет ему отправлять и принимать письма, организовывать хранение, вести адресные книги и т. д. Можно сказать, что основная функция почтовой программы - предоставить удобный пользовательский интерфейс. Чтобы отправить или получить письмо, почтовая программа обращается к почтовому серверу, который не имеет пользовательского интерфейса, зато владеет тонкостями маршрутизации корреспонденции. Затем напрямую или через промежуточные машины письмо передается другому почтовому серверу, который обслуживает адресата. Тот кладет письмо в персональный почтовый ящик, откуда его забирает почтовая программа получателя.
Предположим, что письма надо перекодировать. По "сложившийся традиции" это может сделать и почтовая программа, и сервер. Первому варианту я уже выказал предпочтение, и с учетом существующей практики ущерб от такого решения минимален.
Перекодировка доставщиком
Съесть не съем, но надкушу каждое…
У провайдеров Интернет-услуг за годы работы "сложилось мнение", что будет гораздо лучше, если программное обеспечение почтовой машины само будет перекодировать почту. Тогда единственное, что нужно сделать пользователю, - отключить шифрование восьмибитных символов (иначе, по понятной причине, никто не сможет потом что-либо восстановить). Подчеркну еще раз, что я активный противник такого подхода и даже многие провайдеры считают его временной мерой.
Отправлением/доставкой почты на сервере занимаются две программы. Первая служит для отправки почты и называется "SMTP-сервер". SMTP (Simple Mail Transfer Protocol) - это протокол передачи писем в Интернете. Служба SMTP и принимает письма, складируя их на почтовой машине. Непосредственно пользователю, по его инициативе, письма передает другая программа - "POP3-сервер" (Post Office Protocol).
Дальше все очевидно: сервер SMTP "заставляют" переводить письма из кодировки отправителя в сетевую кодировку (сегодня это KOI8-R). Сервер же POP3 должен переводить письма из KOI8-R в ту кодировку, которую хочет принимать получатель. В какую только?.. И из какой?..
Откуда и куда конвертировать
Откуда берут информацию о кодировке письма:
Первый подход перекладывает ответственность на почтовую программу пользователя. Она должна включить в заголовок письма правильный charset. Это был бы самый правильный подход для какой-нибудь Германии, но только не для России. У нас даже координаторы конференций используют неправильный charset, а потом обвиняют слишком умный софт, который все делает через задницу (читай - соблюдает стандарты), когда у всех остальных (читай - не соблюдающих никаких соглашений, а просто "делающих как я") - все нормально. При всеобщей безответственности и поголовном "обмане" программ и стандартов такое решение приводит к печальным последствиям.
Второй подход примитивен. Администратор почтовой машины раз и навсегда определяет, что клиентская машина с таким-то сетевым именем или адресом работает в кодировке, скажем, Windows 1251. И теперь вся корреспонденция, отправляемая с данной машины, считается представленной только в этой кодировке. А если у машины нет постоянного адреса, как обычно и бывает, а пользователь, соединяясь с провайдером, получает на время каждого сеанса динамический IP-адрес, но все равно обращается к своему почтовому серверу и почтовому ящику, то такое решение не работает. Я уж и не говорю о том, что с этой машины нельзя будет отправлять ничего другого.
Выделенный виртуальный сервер. Давайте запустим на одной почтовой машине три-четыре почтовых сервера одновременно, по одному на каждую кодировку, и каждому серверу присвоим отдельное имя, например: win.mail.access.ru, alt.mail.access.ru, koi.mail.access.ru, iso.mail.access.ru. Предложим пользователям Windows обращаться за своей почтой на сервер win.mail.access.ru, пользователям DOS - на alt.mail.access.ru и т. д. Клиенту достаточно при конфигурации своей почтовой программы правильно указать адрес почтовой машины. Причем в этом случае, разделив уходящий SMTP-поток и приходящий POP3 на разные кодировки, можно получить дополнительную гибкость. Предположим, что Netscape, как было сказано выше, принудительно переводит Windows 1251 в KOI8-R, а обратного процесса не производит. Тогда мы определяем в нем SMTP - KOI, а POP3 - Win, и, таким образом, исходящую корреспонденцию перекодирует Netscape, а входящую - сервер. Можно попробовать и другие цепочки с экзотическими адресатами - вариантов много. Это, на мой взгляд, самое правильное решение (если вообще что-то надо делать). Пользователь все равно должен проставить имя сервера, и не надо считать его таким глупым и не оставлять никакой свободы, как в предыдущем случае. И всегда можно зарезервировать вариант по умолчанию, который ничего не делает, а просто передает, как ему и положено. У меня именно такой провайдер. И я его хвалю не потому, что он мой, - а он мой, потому что так делает.
Идея автоматического определения кодировки при всей кажущейся заманчивости мне совсем не понравилась. Надежно определить, в какой кодировке представлен текст, да еще с нашей грамотностью, по технологии распознавания сомнительно. Конечно, такой программе достаточно лишь научиться отличать русский язык от абракадабры. А если мне вздумается писать по-татарски! Причем некоторые провайдеры высказывают мнение, что нераспознанные письма не следует отправлять адресату! Ну и как их назвать после этого? Отправлять по почте любую абракадабру - конституционное право пользователей.
Универсального решения сегодня в любом случае не существует. Даже тогда, когда пытаешься предусмотреть все. Из приведенного в конференции примера Григория Наумовца: "Недавно мне было нужно разослать одно сообщение на кириллице через mailing list нескольким десяткам людей с разными серверами (одни перекодируют КОИ8<->1251, другие нет) и мэйлерами (от Eudor'ы до Bmail'а). Думаю, надо сделать так, чтобы кириллица у всех была сразу же видна без переключения фонтов или кодировок. Поэтому включаю в письмо четыре куска: (1) English, (2) КОИ8, (3) 1251 и (4) такой, который должен превратиться в КОИ8 в случае перекодировки POP-сервером или софтом получателя по таблице КОИ8->1251. Ну и? Все равно от одного из Dmail-овских адресатов пришел ответ: "не могу прочесть письмо, так как в нем нет строки begin" (???). Оказывается, один серверок по дороге оказался еще умнее меня и зачем-то закатал мое письмо в Base64".
World Wide Web
" Всемирная паутина" живет по своим законам. Вопросы верстки в HTML уже давно раздражают профессионалов, для них это два шага назад. Среди попыток преодолеть эту проблему имеются и такие, которые походя решают и нашу "русскую" задачу.
Что мы имеем сегодня? Идиотизм положения с кодировками здесь налицо - классический русский камень на распутье у каждого сайта: "выберите вашу кодировку". Это совершенно ненормальная ситуация. Приходится дублировать (растраивать и учетверять) содержимое, повышая вероятность ошибок и ляпов, причем такое решение рождает больше вопросов, чем ответов. Как поступать, например, с заполнением форм (интерактивных опросных листов) или server-parsed HTML (с макроподстановками) и др.?Из современных альтернативных решений можно привести два:
В общем, ни одно из них не удовлетворительно, хотя и удобнее простого дублирования. Первое грешит некоторыми неудобствами в использовании и увеличением времени доступа. Второе не всегда выполнимо, так как основывается на том, что локальный браузер передает на сервер некоторую информацию о себе, включающую иногда и тип платформы/операционной системы, что не всегда верно и не гарантирует наличия у пользователя шрифтов в нужной кодировке.
Следует принимать во внимание, что количество пользователей, работающих исключительно с электронной почтой, будет неуклонно уменьшаться, а число on-line-пользователей будет постоянно расти. И таким пользователям потребуются дополнительные услуги и, естественно, лучшее качество отображения и разнообразный сервис. Нынешний пользователь российской сети - это в основном программист (около трех четвертей, по некоторым опросам), а они, как известно, неприхотливые, грязные, ленивые и неряшливые. До тех пор, пока в "паутину" не попадут гуманитарии (в том числе и полиграфисты, художники и дизайнеры), сдвигов в лучшую сторону не будет.
Поэтому будем ориентироваться, как всегда, на запад (и преимущественно - "дикий", то есть американский), где это уже случилось (а по некоторым тенденциям, и у нас не за горами). Такому пользователю вряд ли объяснишь про "обрезание" восьмого бита, а вот неряшливую верстку, ошибки и "кривые" шрифты он сразу заметит. Где выход?Их пока два:
Про PDF- формат особенно распространятся не буду, хотя, с моей точки зрения, это лучший выход (не зависящий ни от кодировки и языка, ни от платформы и операционной системы). К сожалению, фирма Adobe "проспала" волну Интернета, и хотя Acrobat-файлы поддерживаются многими Web-браузерами (обычно существует соответствующий plug-in), они не становятся стандартом.
CSS-расширения напоминают древние стадии развития языков программирования и средств разработки (как и в целом Интернет, при всей новизне своих технологий, постоянно напоминает что-то архаичное - то в одной своей части, то в другой). Желающие могут ознакомиться с ними на W3, а нам это показалось временной мерой (а может быть, и "мертворожденной").
Web-шрифты на страже русской язычности
Итак, в Интернет пришли гуманитарии. HTML-документы эволюционируют от простых
и 3D-кнопок к профессиональным, хорошо оформленным страничкам, цель которых - привлечь и удержать посетителей-непрограммистов. Одним из важнейших недостатков нынешних средств разработки Web-страниц, с точки зрения полиграфистов, явилось отсутствие возможности жесткой установки шрифта, вследствие чего дизайнер не может быть уверен в том, что клиент увидит на экране именно то, что им было задумано.
Наилучшим решением, гарантирующим правильность и качество шрифтов, считается сегодня встраивание их непосредственно в Web-документы и передача пользователю (обычно только для просмотра). Предлагается использовать оба основных типа шрифтов: TrueType и PostScript. Шрифты TrueType при надлежащем хинтовании позволяют получить более качественное изображение на экране, а PostScript-шрифты, будучи производственным стандартом в издательском деле, обеспечивают качественную печать.
Использование встраиваемых шрифтов сдерживается лишь увеличением размера HTML-файла и, как следствие, продолжительностью передачи при сохранении достойного качества воспроизведения.
До последнего времени указывать конкретные шрифты в HTML было практически невозможно. Дизайнер выбирал шрифт, включал его в определение Web-страницы, а пользователь, не имеющий такого шрифта на своей машине, лицезрел тот, который автоматически (по умолчанию) подставлял браузер (в нашем, русском случае, браузер мог подставить шрифт, в котором вообще нет русских букв). Даже сами пользователи не всегда могли изменить умолчания, заложенные в браузерах, и результат еще дальше уходил от проектирования (если вообще сохранялся). Многие, конечно, использовали графическое представление текста, но это приводило к довольно громоздким файлам, которые к тому же не читались текстовыми браузерами (такими, например, как Lynx). При встраивании шрифта в документ эти проблемы устраняются. Пользователь увидит именно те шрифты, которые были заложены при проектировании, даже если они не установлены на его компьютере. Ведущие изготовители браузеров объявили о программной поддержке встроенных шрифтов.
Другое преимущество встроенных шрифтов - достигаемое качество при отображении и печати (это особенно актуально для больших документов, которые трудно читать с экрана). При посылке шрифта вместе с документом в него включается вся информация о символах, включая хинтование и другие средства шрифта, применяемые его создателями для улучшения качества отображения и печати. Причем планируется передавать только те символы, которые были использованы в документе (подмножество шрифта), что обеспечит дополнительную экономию.
Дальнейшее уменьшение размеров передаваемых файлов может быть обеспечено дополнительной компрессией (сжатием и по возможности без потерь). По мере того как в подготовке публикаций на Web участвуют все более творческие люди, к тому же не понимающие коммуникационных проблем, размеры файлов будут постоянно расти.
Для того чтобы использовать подмножество шрифта, необходимо, чтобы приложения, используемые при создании документа, поддерживали этот метод. Microsoft Office 97 имеет такую возможность, позволяет встраивать шрифты в документ, проверять документ на вхождение в него шрифтов и ассоциировать зашифрованную версию шрифта с документом. Некоторые шрифты не будут допускать встраивание в документ, и на них указанная возможность не будет распространяться. Когда такой документ с легально встроенными шрифтами придет по назначению, они будут расшифрованы.
Программные средства сжатия шрифтов основываются на технологиях Agfa MicroType Express и Adobe CFF, обеспечивающих сжатие без потери качества. MicroType Express работает со шрифтами TrueType и PostScript, а CFF только со шрифтами PostScript. Сжатие средствами Agfa полностью сохраняет информацию оригинала и в сочетании с методом передачи подмножества шрифта обеспечивает 90-процентное сжатие для шрифтов на основе латинской графики и до 99 процентов - для китайского, корейского и "нам" подобных. В отличие от методов "сжатия с потерями", применяемыми при хранении изображений и фильмов, технология MicroType Express сохраняет полное соответствие исходных литер и их вида на страницах Интернета, поддерживая декомпрессию "на лету". При этом сохраняются и все хинты, что обеспечивает высокое качество отображения и печати. Microsoft Internet Explorer обязался поддерживать эти технологии.
Open Type
Компании Microsoft и Adobe совместно работают над новым универсальным шрифтовым форматом под названием Open Type, сочетающим в себе TrueType и PostScript. Частью создаваемой технологии является и сжатие шрифтов. В Open Type будет усовершенствовано управление существующими шрифтами и создан формат, который обеспечит работу с новым поколением компьютерных шрифтов, рассчитанных на Web-использование. Существенная часть этой работы посвящена кросс-лицензированию шрифтов, а также технологии, которая обеспечит работу обоих форматов с разными платформами. Формат Open Type обеспечит встраивание шрифтов TrueType или PostScript в документ и простую процедуру инсталляции и использования проектировщиками и пользователями Web-страниц. Microsoft объявила о намерении сделать шрифты Open Type стандартным элементом своей базовой операционной системы. Adobe собирается поддерживать Open Type в новых версиях своих программных продуктов для графических, издательских и Интернет-приложений.
Перспектива превращения Open Type в новую архитектуру шрифтов для издательской деятельности во "Всемирной паутине" символизирует окончание ведущейся сейчас "шрифтовой войны". Поскольку такие лидеры в деле информационных технологий, как Agfa, Adobe и Microsoft обязались улучшить качество передачи текста на Интернете вообще и WWW в частности, новая технология использования подмножеств, сжатия и встраивания шрифтов в HTML-документы имеет несомненное будущее. Способность сохранять информацию, содержащуюся в шрифте, и качественно ее воспроизводить обеспечит Web-страницы гарантированным соблюдением стиля и дизайна, а нас, "русскоговорящих", освободит от обязанности поддерживать кодировки на все случаи нашей излишне разнообразной жизни.
Тенденции же перевода и передачи электронной корреспонденции в HTML-формате сведут на нет и все "почтовые" проблемы. Таким образом, можно с уверенностью заявить: владельцы серверов - руки прочь от всевозможных перекодировок, ваш "скорбный труд" все равно пропадет всуе!
По "Всемирной паутине", не снимая тапочек
- рТЙЧЕФ. лБЛ ДЕМБ?
- Da normal'no, a u tebja?
Из разговора
Здравствуйте, уважаемый пользователь! Представляем вам глобальную сеть Интернет. Здесь вы найдете все, что вам только может понадобиться. Пользоваться Интернетом проще простого: устанавливаете программы, полученные от вашего поставщика услуг Интернета, запускаете браузер (он же броузер, он же смотрелка, он же бродилка), дозваниваетесь поставщику и попадаете на его сервер. Изучив содержимое сервера, вы обнаруживаете гиперссылку на страницу анекдотов (например, http://www.kulichki.com/anekdot/), которая находится на другом сервере. "О! Анекдоты!" - думаете вы и, предвкушая удовольствие, щелчком перемещаетесь на другой сервер. Страница с анекдотами медленно появляется на вашем мониторе. Позвольте... А где же анекдоты? Это не анекдоты. Это набор греческих или каких-то других значков. Вероятно, какая-то ошибка на их сервере. Вы возвращаетесь к поставщику и находите ссылку на страницу политических новостей. "Ну, как там Чубайс?" - думаете вы, загружая новости. После чего оказывается, что Чубайс отныне говорит на смеси английского и непонятно какого еще языка, состоящего из прописных букв русского алфавита. Вы застываете в недоумении. Почему у поставщика на сервере все по-русски, а у остальных - нет?..
Ведущие разработчики программного обеспечения сосредотачивают свои усилия в области WWW-средств и мультимедиа, ясно показывая нам, чего следует ожидать в этой области в недалеком будущем.
Однако в результате непрерывной "войны браузеров" потери в первую очередь несет потребитель. Увеличиваются требования к производительности компьютеров (главным образом - к памяти), усложняются программы, появляется новое оборудование. Все эти средства предназначаются в основном "техноэлите". Таким образом, теряется огромное количество потенциальных пользователей. А нынешним клиентам Сети при каждом обращении необходимо перерабатывать "тонны угля", чтобы в результате получить мифический "алмаз", доступный далеко не каждому.
Телевизионный Web-терминал (WebTV), напротив, - такое же простое устройство, как видеомагнитофон или телефонный автоответчик. На обычном пульте управления добавляется только одна кнопка - WEB. Я не упомянул бы о приставках WebTV, если бы не обнаружил их присутствие уже и в России.
Применение Web-телевизоров сегодня сдерживается в основном неразвитой инфраструктурой сети и слабыми средствами коммуникаций (особенно в нашей стране). Для массовой передачи информации требуется принципиально иная пропускная способность каналов связи, современное оборудование и простое в обращении программное обеспечение. Однако вспомните: еще год назад перегружать Web-странички большим количеством картинок считалось дурным тоном и неуважением к пользователю, а теперь скорость связи даже по обычным линиям возросла настолько, что стали возможны переговоры голосом по Интернету, и телефонные компании начинают серьезно беспокоиться за свое будущее.
Возможно, главным подходом к использованию WebTV в ближайшее время будет передача текстовой информации, конференций (например, по "мыльным операм"), одиночных изображений и фрагментов видео с отсроченным просмотром.
Реальное использование WebTV во всем мире ограничивается сегодня немногими приложениями: новостями по требованию (включая погоду и спортивные результаты), обозрением кинофильмов, передач и телевизионных программ, а также коммерческими заказами. Успех будет зависеть, вероятно, от того, насколько просто зрители будут получать такую информацию и насколько удобным будет обращение к Интернет-ресурсам. Большинство людей были бы счастливы пользоваться телевизором вместо компьютера, если цена на дополнительное оборудование не окажется слишком высокой (сейчас она составляет около 300-400 долларов за устройство), а работа будет достаточно удобной. Электронная почта - главная возможность, которая выведет WebTV на массовый рынок в ближайшем будущем.
В любом случае, WebTV - это другая среда использования Интернета, поскольку основными "пользователями" телевизоров являются бабушки, дедушки, дети и домохозяйки. Придется приспосабливаться и к их нуждам.
Каким образом, господа провайдеры, вы объясните им необходимость KOI8-R? - О.Т.
Ya v AustraliY i ottuda tebe privet !
prejnyaya stranichka tchitalasy cherez KOI8. A chto mne s novoy sdelaty? okolo 40 statey po russkim fontam prochel........Pochemu ne dogovoritesy pabotaty s odnoy kodirovkoy. Drug, my vse jelaem chitaty smotrety vashy sayty.
RASKAJI KAK VY USTRAIVAETESY S KODIROVKAMIY, POJALUYSTA!!!!!!!!!!!!!!!!
Телефон редакции: (095) 232-2261
E-mail редакции: site@computerra.ru
По вопросам размещения рекламы обращаться к Алене Шагиной по телефону +7 (095) 232-2263 или электронной почте reclama@computerra.ru
Кристоф Шпиль [Christoph Spiel]
Крис руководит расположенной в Верхней Баварии (Германия) компанией, консультирующей по вопросам Open Source Software. Не смотря на то, что по образованию он физик (он получил ученую степень Доктора Философии в Мюнхенском Технологическом Университете), его главные интересы вращаются вокруг численных методов, гетерогенных сред программирования и разработки программного обеспечения. Связаться с ним можно по адресу cspiel@hammersmith-consulting.com.Copyright (C) 2002, Christoph Spiel.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 75 of Linux Gazette, February 2002
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.
Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette/linux.ru.net/lg75/articles/rus-spiel.html
Крис руководит расположенной в Верхней Баварии (Германия) компанией, консультирующей по вопросам Open Source Software. Не смотря на то, что по образованию он физик (он получил ученую степень Доктора Философии в Мюнхенском Технологическом Университете), его главные интересы вращаются вокруг численных методов, гетерогенных сред программирования и разработки программного обеспечения. Связаться с ним можно по адресу cspiel@hammersmith-consulting.com.
Крис руководит расположенной в Верхней Баварии (Германия) компанией, консультирующей по вопросам Open Source Software. Не смотря на то, что по образованию он физик (он получил ученую степень Доктора Философии в Мюнхенском Технологическом Университете), его главные интересы вращаются вокруг численных методов, гетерогенных сред программирования и разработки программного обеспечения. Связаться с ним можно по адресу cspiel@hammersmith-consulting.com.
Крис руководит расположенной в Верхней Баварии (Германия) компанией, консультирующей по вопросам Open Source Software. Не смотря на то, что по образованию он физик (он получил ученую степень Доктора Философии в Мюнхенском Технологическом Университете), его главные интересы вращаются вокруг численных методов, гетерогенных сред программирования и разработки программного обеспечения. Связаться с ним можно по адресу cspiel@hammersmith-consulting.com.
Copyright (С) 2001, Christoph Spiel.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (suralis-s@mtu-net.ru)
Сайт рассылки:
Кто занимается стандартизацией locale ?
Изначально стандарт на средства POSIX locale был заявлен Международной организацией по Стандартизации и в составе стандарта POSIX ( Portable Operating System Interface for Computer Environments ):Позднее он был принят комитетом как IEEE Std. 1003.1-1990 а позже введен в стандарт ANSI C ( ISO 9899:1990 ).
В дальнейшем, в позднейших выпусках POSIX
:
и в выпусках 1994 и 1996 г.г. дополненных POSIX.2a, POSIX.2b, стандартный набор средств для локализации был расширен, сделан более переносимым и был более документирован.
Свой вклад в развитие localе
внесla также , образовав Joint Internationalization Group (JIG) и выпустив документы XPG2, XPG3, XPG4 (X/Open Portability Guide) включающие в себя также главы о локализации :
В настоящее время происходит постепенный переход на стандарт POSIX 1996 и сосуществуют самые различные реализации, включающие в себя элементы как старого POSIX 1988, так и нового POSIX
1996 в той или иной мере.
Практически все современные коммерческие реализации Unix-ов имеют полную реализацию стандартов POSIX.1 (вызовов) и POSIX.2
(утилит) версии 1996 (в отношении locale).
Из Free реализаций наиболее известны две : 4.4BSD Lite libc и GNU libc
(получившая дальнейшее развитие в ) также поддерживающие POSIX 1996 .
В недалеком будущем возможно включение в стандарты локализации стандарта (16-битныx символов) и возможности работы с ними.
В других операцонных системах, таких как Windows NT, Windows'95, OS/2 Warp, Nowell Netware и т.д. также существуют средства локализации, в общих чертах повторяющие средства локализации POSIX.
Language Modes
Как уже говорилось, под этим подразумевается язык не человеческий, а программистский. И список поддерживаемых режимов включает, не считая чисто текстового (Plain), почти все известные мне (и многие неизвестные) языки программирования и разметки. Здесь и C и C++, Java и JavaScript, Ada, Fortran, Pascal, Python, Tcl, awk, языки командных оболочек линии bash и линии csh, языки разметки SGML/HTML и LaTeX, PostScript, SQL и прочая, и прочая, и прочая. Разумеется, есть и режим собственного языка NEdit Macro.Первое видимое следствие переключения языкового режима - появление подсветки синтаксиса соответствующего языка (если, конечно, эта опция включена, о чем - ниже). Так, по умолчанию в NEdit задействован режим Plain text. В этом случае. скажем, тэги в html-документе, подобном данному, показываются теми же черными (для примера) буквами), что и его содержание. Если же переключиться в режим SGML/HTML, тэги, их аргументы и значения последних заиграют различными цветами. Впрочем, при открытии файла определение его типа обычно происходит автоматически, по расширению (и обычно - правильно), и соответствующий языковый режим включается сам собой.
Однако различие между языковыми режимами не исчерпывается цветовой гаммой. Многие макросы (о которых - в следующем разделе) имеют языковую привязку. И появляются в меню Macro только тогда, когда включается соотвествующий их языку режим.
Разумеется, подсветка синтаксиса необходима в первую очередь программистам. Хотя и всем прочим, хоть иногда просматривающим исходники web-страниц, тоже не вредит. А вот следующая группа настроек
Language
Информация, полученная из "человеческого" мира и предназначенная для машинной обработки, как правило имеет специальный арибут : язык или language (lang). Причем, не только текстовая, но например audio :Content-Description: Russian Argo audio sample :-) Content-Type: audio/basic Content-Language: ru
(, )
Однако нас инересует именно текстовая
информация.
Большинство языков мира имеют письменнось, а некоторые языки даже несколько (например кириллица и глаголица для славянских языков или kana и kanji в японском и т.д.). Определенная система письменности называется script. Системы письменности существуют самые разнообразные (например узелковое :-), но большинство письменностей - это изображение
последовательности специальных символов
(character).
* ПРИМЕЧАНИЕ : Объяснение концепции символа
выходит далеко за рамки данного документа. Мы не будем вдаваться в филологические и философские подробности, а рассмотрим лишь узкий аспект -- способы представления символов
(национального) языка для автоматической (машинной) обработки. Тогда термин "символ" (character) можно определить как "единицу текстовой информации" (unit of textual information), которая передается письменно и участвует в машинной обрабоке. Очень важно четко представлять себе, что речь идет об "абстрактном"
символе.
LaTeX
Позвольте мне сначало рассказать, что такое LaTeX и с какими целями он создавался. LaTeX -- это огромный пакет дополнительных макросов для системы предпечатной типографской подготовки TeX, созданной профессоромДоналдом Кнутом. Если не слишком придираться, то говоря "система LaTeX" или просто "LaTeX", мы будем иметь в виду "TeX плюс все макросы LaTeX". Собственно LaTeX был написан Лесли Лэмпортом [Laslie Lamport], который решил, что хотя TeX и очень могуч, но его слишком сложно использовать для повседневных задач. За основу он взял систему Scribe. Scribe делает упор на логическую структуру документа вместо физической разметки (для тех читателей, которые хорошо разбираются в HTML добавлю, что тэг является примером логической разметки, а тэг -- соответствующей ей физической разметки).LaTeX -- как и классический plain TeX -- позволяет на обычном компьютере создавать, готовить для печати и распечатывать документы с полиграфическим качеством оформления. Замысел был таков: автор готовит статьи или даже книги на своем личном компьютере, а затем относит дискету в полиграфический салон для того, чтобы документ был распечатан на фотонаборной машине высокого разрешения, и, наконец, получает переплетенную книгу (... затем рассылает ее во все книжные магазины квадранта альфа, делает на этом миллионы, а через два года получает Межгалактическую Пулицеровскую премию. -- ну хорошо, я несколько преувеличиваю:).
В последующих раздела я изложу очень короткое введение в LaTeX, но всем, кто хочет изучить LaTeX, я бы рекомендовал Не столь краткое введение в LaTeX [Not So Short Introduction to LaTeX]. Этот 95-страничный документ можно бесплатно скачать из Сети: смотрите в .
LaTeX устанавливается вместес большинс твом современных Linux-дистрибутивов. Проверить правильность его установки можно с помощью команды:
latex --version
Моя система отзывается на нее так:
TeX (Web2C 7.3.1) 3.14159 kpathsea version 3.3.1 Copyright (C) 1999 D.E. Knuth. Kpathsea is copyright (C) 1999 Free Software Foundation, Inc. There is NO warranty. Redistribution of this software is covered by the terms of both the TeX copyright and the GNU General Public License. For more information about these matters, see the files named COPYING and the TeX source. Primary author of TeX: D.E. Knuth. Kpathsea written by Karl Berry and others.
Latex2html
Пока все нормально. LaTeX позволяет подготовить великолепно выглядящие документы на Postscript'е, а "единоутробная" утилита pdf делает то же самое, но в переносимом формате документов. Разве мы не говорили, что нам нужет и HTML тоже? Конечно говорили! Но тут LaTeX нам не помощник, для этого нам нужен другой инструмент: latex2html. Эта утилита преобразует исходные файлы LaTeX в набор html-файлов, связанные гиперссылками в соответствии со структурой исходного документа.Загрузить latex2html можно с его домашней страницы: http://www.latex2html.org. Можно взять его и на , а лучше с одного из зеркал. Для того, чтобы выяснить, установлен ли latex2html в вашей системе выполните команду:
latex2html --version
должно быть что-то вроде этого:
This is LaTeX2HTML Version 2K.1beta (1.57) by Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Что следует изменить для того, чтобы сделать документы LaTeX пригодными для обработки latex2html? Хорошая новость -- почти ничего! Убедитесь, что в преамбуле указаны пакеты html и makeindex, т.е. как минимум добавьте следующее
\usepackage{html,makeidx}
в преамбулу вашего документа. Теперь файл my_document.tex может быть преобразован в HTML следующим вызовом
latex2html my_document.tex
LDP
Проект Linux Documentation Project (LDP) был начат с целью предоставить новым пользователям быстрый путь получения информации о конкретном предмете. Он не только содержит серию книг о администрировании, работе в сетях и программировании, но и огромное число небольших работ, посвященных конкретным проблемам, написанных теми кто сталкивался с ними. Например, если вы хотите узнать о печати,возмите Printing HOWTO. Если хотите знать как работает ваша Enthernet карта под Линукс,возмите Enthernet HOWTO и так далее. Первоначально многие из этих работ были в текстовом или HTML формате. Но с течение времени стало ясно, что должен существовать лучший путь хранения и обработки этих документов. Путь, который позволил бы вам читать документ с веб страницы, в виде текстового файла на CD-ROM, или даже на карманном PDA. И ответ был найден - SGML.Лингвистика и компютеры.
Linux :
(чуть-чуть устарел)
Дает массу полезной информации по русификации дисплея и клавиатуры,
включению 8-bit в различных программах и использованию русских шрифтов.
(еще более устаревшая версия...)
c
Дает быстрый способ установки locale на машину.
( home: ) и его коллекция locales, charmaps и NLS :
LISP - язык программирования Emacs.
Более серьезные настройки в редакторе Emacs осуществляются через написание процедур на языке LISP. Например, чтобы присвоить какой-либо клавише выполнение определенной команды, нужно вставить в конфигурационный файл строку, написанную на LISPе.В языке программирования LISP, также как и в C, все определяется через функции. Можно использовать свои собственные функции, или библиотеки функций, написанных другими пользователями, - пакеты, чтобы настроить работу Emacs. PSGML - пакет, разработанный на LISPе. Однако, прежде, чем устанавливать PSGML, разберемся с более простыми случаями установки LISP-функций.
Все LISP-функции запускаются из файла .emacs.
ПРИМЕЧАНИЕ: Поскольку DOS не поддерживает длинные имена файлов, то версии Emacs под DOS и 16-bit MS Windows используют для автоматического запуска функций файл с именем _emacs.
Поначалу синтаксис новых функций, помещаемых в файл .emacs можно копировать у уже существующих функций, заменяя нужные места в названиях и командах. Поясним это на примере. Команда goto-line вызывается при нажатии комбинации M-g. Соответствующая функция в файле .emacs выглядит следующим образом:
| (global-set-key "\eg" 'goto-line) ; M-g prompts for line number to enter |
Обычно команда goto-line не имеет комбинации клавиш, поэтому в таком редакторе нужно сначала нажать M-x, а затем из командной строки запустить команду goto-line. У программистов и пользователей SGML часто возникает необходимость перейти в строку с определенным номером, поэтому целесообразно вместо команды использовать комбинацию клавиш.
Если комбинация M-g не определена, то добавьте приведенную выше строку в файл .emacs, сохраните файл и перезапустите Emacs. Теперь при нажатии M-g в окне минибуфера появится сообщение:
| Goto line: |
После ввода номера строки редактор перейдет в указанную строку.
Другая популярная команда многих текстовых процессоров - overwrite-mode, которая переключает режим ввода текста между insert (Вставка) и replace (Забой). Пользователь, работающий с текстом скорее всего предпочтет работать в режиме вставки, чем каждый раз для перевода в режим Забоя вводить четырнадцатибуквенную команду. Целесообразно отредактировать файл .emacs, добавив в него строку, присваивающую комбинации M-i выполнение команды overwrite-mode. Воспользуемся в качестве заготовки строкой, определяющей комбинацию M-g.
Команда LISP, которая присваивает комбинации клавиш некую функцию Emacs - global-set-key. Эта команда имеет два параметра: комбинацию клавиш и присваиваемую ей команду. Клавиша Escape обозначается через "\e". Таким образом, комбинация M-i будет выглядит в LISPe "\ei". Следует помнить, также, что перед присваиваемой командой должна стоять одиночная кавычка "'" (это означает в LISP, что присваиваемая команда - символьное выражение). И последнее, символом комментария в LISP является ";", игнорируется все, что идет после этого знака.
Итак, строка в файле .emacs, которая присваивает комбинации клавиш M-i выполнение команды overwrite-mode выглядит следующим образом:
| (global-set-key "\ei" 'overwrite-mode) ; toggle overwrite mode |
| (global-set-key "^T" 'kill-word) ; enter ^T here with C-q C-t |
ЛИСП
M-x load-file / library Загрузить файл с ЛИСПОМ .elc, .el M-x byte-compile-file Откомпилировать файл То же из Shella: emacs -batch -f batch-byte-compile FILES... M-x byte-recompile-directory Перекомпилировать файлы в директории M-x disassemble Декомпиляция ЛИСП-функции M-x insert-kbd-makro Вставить описание функции Last-modified: Sun, 31 Aug 1997 19:11:09 GMTЛокализация и почта. MIME.
Вместо введения - кусок перевода :MIME - Multi-purpose Internet Mail Extensions. Свободно-доступный набор спецификаций, предлагающий способ обмена текстами с различным набором символов и multimedia e-mail среди множества различных компьютерных систем, которые используют стандарты Internet для обмена почтой.
Если Вы уже имели дело с обычной текстовой электронной почтой, теперь, благодаря MIME
Вы можете создавать и читать сообщения, имеющие следующие дополнительные возможности :
MIME поддерживает не только некоторые, раз и навсегда заданные типы нетекстовой информации, например 8-bit 8000Hz-sampled mu-LAW audio, или GIF images, или PostScript-программы, но и позволяет Вам также определять Ваши собственные типы данных.
Перед тем, как стандарт MIME
стал широко распространенным, у Вас также была возможность создавать сообщения, содержащие, скажем, PostScript документы и звуковое сопровождение, но чаще всего сообщение было закодировано в собственном, не переносимом формате. Это означало, что Вы не могли прочитать это сообщение на системе от другого поставщика, даже если оно прошло неповрежденным через почтовый шлюз. Теперь же, в зависимости от совершенства Вашей MIME почтовой системы, есть неплохой шанс, что это будет "просто работать".
Самое ценное в MIME то, что это "четырехколесный протокол". Протокол MIME
был аккуратно разработан для выживания в среде самых разнообразных SMTP, UUCP и других Procrustean протоколов передачи почты, которые любят перемешивать, перепутывать и перекодировать заголовки и текст почтового сообщения.
. . .
Стандарт MIME определен в :
| : | MIME Part One: Format of Internet Message Bodies |
| : | MIME Part Two: Media Types |
| : | MIME Part Three: Message Header Extensions for Non-ASCII Text |
| : | MIME Part Four: Registration Procedures |
| : | MIME Part Five: Conformance Criteria and Examples |
Или см. напрмер на Yahoo! :
Для пользователя здесь выигрыш в том, что у сообщения (или части сообщения) типа text/plain,
text/html появился параметр charset=Xxxxx
, однозначно задающий кодировку сообщения. Если charset= не проставлен, кодировка предполагается ISO_8859-1
(набор символов Latin-1).
Другое полезное свойство MIME
- закодированные заголовки. Дело в том, что стандартный RFC-822 предполагал, что заголоки писем From: , To: и т.д. 7-ми битные. Для обхода этой проблемы была предложена схема MIME. И теперь заголовки могут иметь вид :
Subject: Re: =?KOI8-R?Q?=C1?=
Предположим теперь, что наша операционная система - UNIX (POSIX). Здесь мы имеем дело с 3-мя различными объектами:
Само по себе, текущее значение locale
( установленное через LANG=) ( а точнее значение категорий LC_CTYPE и LC_COLLATE
) оказывает влияние только на обработку
символов, но никак не на ввод/вывод.
Как мы уже знаем, средствами locale
и стандартного UNIX никак нельзя ни повлиять, ни даже спросить
текущее значение аппаратной
конфигурации (кодировки).
С другой стороны, почтовые сообщения в MIME могут содержать различные даже в пределах одного сообщения.
Задача почтовой программы (MUA
- Mail User Agent)-- правильно отобразить различные charset для text/plain и text/html. Это легко сделать в оконных системах (Windows, X-Windows, e.t.c.) где доступна информация о шрифтах, но невозможно
для стандартного UNIX терминального .
В наиболее старой и известной программе для работы с MIME - (взять можно ) впервые столкнулись с данной проблемой. Именно для была впервые введена переменная окружения MM_CHARSET
которая задавала "текущий" charset
(набор символов) на консоли. Предполагалось, что пользователь его знает (или сам установил). Но постепенно эта переменная стала трактоваться как значение текущей кодировки аппаратного окружения (фонтов, e.t.c.) и современные почтовые программы (mh, elm) активно используют эту переменную.
Любая современная почтовая программа должна обязательно поддерживать UNICODE
и UTF-8. См. : Internet Mail Consortium / .
Содержание ""
Last change : 08-10-1999
Локализация и POSIX.
Если мы говорим о файле, то в идеологии POSIX, - это просто плоская последовательность байтов. Внутреннее содержимое не стандартизовано никак. Поэтому невозможно определить, какую информацию содержит файл, а если он содержит текстовую информацию -- в какой она кодировке. То же самое можно сказать о потоках : stdin/stdout-- это потоки байтов (кодов). Кодировка (т.е. соответствие символ-код (CES)) полностью потеряна и нигде не указывается. И POSIX
вовсе не гарантирует, что CES (кодировка) stdin
будет совпадать с текущей локализацией, заданной через LANG=.
Точно тактая же ситуация с терминальным : кодировка терминала совершенно неизвестна приложению.
К сожалению, в стандарте POSIX
поддержка Charset не имеет полностью идеологически стройной и ясной концепции. Понятие Charset существует только для locale API и тех функций, которые зависят от locale.
Более того, в "чистом" POSIX
вообще невозможно
узнать (получить) имя Charset после вызова . Единственный способ, узнать Charset текущей locale
- это воспользоваться не-POSIX функцией XPG
(но определенной в Single UNIX, SVID
и Unix98) : (определена в файле ). Тогда текущий Сharset можно получить так :
| #include ... setlocale(LC_ALL,""); printf ("Current charset = %s\n",nl_langinfo(CODESET));
| |
Надо ли говорить, что некоторые UNIX
(например ) не имеют этих XPG-extensions и не имеют функции как таковой вообще. (Что очень странно, поскольку в том же POSIX определена утилита c keyword-ом codeset которая "как-то" это имя определяет...) Например, популярная система до сих пор не имеет функции (как впрочем не имеет и утилиты , увы !).
Еще один способ определения текущего Charset-а - это разбор
переменной окружения . По стандарту POSIX переменная LANG=
задается в форме LANG=language_TERRITORY.Codeset. Например, переменная
(управляющая поведением подсистемы )может иметь "подстановки" :
%L
The value of the LC_MESSAGES category.
%l
The language element from the LC_MESSAGES category.
%t
The territory element from the LC_MESSAGES category.
%c
The codeset element from the LC_MESSAGES category.
Таким образом, если задать LANG="ru_RU.KOI8-R", то мы получим :
%L
= "ru_RU.KOI8-R"
%l
= "ru"
%t
= "RU"
%c
= "KOI8-R"
Исходные тексты этих функций открыты и широко доступны.
Таким образом, установив LANG=ru_RU.KOI8-R
мы получим сообщения на русском языке в кодировке KOI8-R, а установив LANG=ru_RU.ISO_8859-5
- в кодировке ISO. На некоторых системах точно так же работает переменная MANPATH=.
К сожалению, поле Charset - опционально и по стандарту можно использовать сокращенную форму : LANG=ru_RU или даже LANG=ru. (См. ключ -f ). Поэтому, если ваша система это поддерживает, задавайте максимально длинное имя для LANG=
, указывая Charset. (получить список можно по ). К сожалению, само тоже может различаться.
Довольно значительное число ошибок происходит из за того, что в языке С
определен тип переменных char (хотя точнее было бы назвать его : byte). Это во-первых, жестко привязывает нас к 8-ми битным кодировкам. А во-вторых, кодировка не определена. Поэтому, если мы задаем строку (массив char), в которой употребляются символы не ASCII (с кодами >128) : char string[]="Проверка"; -- результат совершенно непредсказуем и непереносим. Еще больше проблем вызывает идея .
Также вызывает удивление существование (и синтаксическая корректность) типов signed / unsigned char (что такое "отрицательный" символ? Вот unsigned short int
-- понятно)... Если вы планируете работу вашей программы в многоязычном окружении, неплохо бы предусмотреть атрибут Сharset у любой строки символов char *. Или полностью переходить на UNICODE (wchar_t) в качестве внутренней кодировки.
Содержание ""
Last change : 02-11-1999
Локализация, интернационализация, глобализация.
Так уж сложилось, что языком разработчиков вычислительных машин был английский язык. ;-)По мере распространения компьютеров и (ПО) программного обеспечения для них по всему миру, постепенно стала нарастать потребность в обработке информации не только на английском, но и на других - немецком, японском, русском, e.t.c. -- национальных языках.
Потребность в такой многоязыковой поддержке ощущали как пользователи
программного обеспечения - для решения своих конкретных задач, так и производители
ПО - для расширения рынков сбыта.
Таким образом сложилась идея инернационализации
( internationalization, или сокращенно i18n
) программных продуктов.
Термин интернационализация
( i18n ) подразумевает под собой такой способ проектирования ( дизайн ) ПО, при котором возможность многоязыковой поддержки закладывается с самого начала.
Самым желательным вариантом реализации многоязыковой поддержки является такой, при котором нацонально-зависимая
часть приложения хранится отдельно от приложений в виде набора данных : объектов локализации. При этом возможность гибкого и простого изменения языкового окружения под конкретные требования происходит без перекомпиляции этих приложений.
Таким образом, локализация ( localization, или сокращенно l10n ) - это процесс адаптации ПО под конкретные национальные требования . А технически, локализация - это изготовление отдельных объектов локализации в соответствии c требованиями конкретного языка.
Локализация, как она есть.
Hа правах v0.59 Alpha версии, сильно глюкаво. Исправления ожидаются и принимаются.Последние изменения : 13-04-2000.
Локализация (l10n), интернационализация (i18n) :
Локализация от Microsoft.
Фирма уделяет значительное внимание локализации продуктов и захвате национальных рынков программного обеспечения. Первый европейский офис был открыт в 1982 г. В мае 1983 г. была выпущена операционная система MS-DOS 2.1 с поддержкой японского языка для компьютеров IBM 5550 и NEC PC-9801.Стоит также сказать, что ожидаемая операционная система Windows 2000 (Windows NT 5.0) будет иметь полную поддержку UNICODE, от файловой системы до шрифтов и Notepad. Кроме того, она будет содержать классическую схему локализации : будет разделен исполняемый код и национально-зависимые части. Вся информация, имеющая отношение к "национальной специфике" будет вынесена в "объекты локализации". Таким образом, национальные версии будут отличаться только небольшим числом файлов.
Наиболее полное описание модели локализации от Microsoft можно найти в книге Nadine Kano : "Developing International Software for Windows 95 and Windows NT". Эта книга есть на MSDN.
посвященные разного рода текстовым процессорам
Автор: Алексей Крюков, basileia@yandex.ruОпубликовано: 20.03.2002
Оригинал: http://www.softerra.ru/freeos/16826/
Статьи, посвященные разного рода текстовым процессорам под Linux, традиционно принято начинать с общих рассуждений о назначении и пользе данного класса программ. И для этого есть серьезные основания. Ведь первое и естественное желание, возникающее у Windows-мигранта, впервые обратившегося к Linux, заключается в том, чтобы продолжить работу со своими данными, представленными, скорее всего, в текстовой форме. Начиная поиск подходящего софта, пользователь видит перед собой несколько облегченных редакторов (которым, соответственно, для серьезной научной работы – грош цена), а также монументальный StarOffice, до сих пор не способный нормально работать с русскими текстами. Ныне это положение меняется благодаря активной разработке проекта OpenOffice.org и ожидаемому StarOffice 6.0. И всё же принудительная сила реальности заставляет признать, что Linux традиционно ориентирован на подготовку файлов в простом текстовом формате, а вовсе не на работу с документами в режиме WYSIWYG.
Данное явление может оцениваться по-разному. Можно, конечно, в совершенстве освоить какой-нибудь текстовый редактор и после этого свысока поглядывать на пользователей текстовых процессоров, неспособных избавиться от привычки злоупотреблять оформительскими эффектами. Увы, практика показывает, что некоторые элементы оформления текста необходимо вносить уже на этапе его ввода. Скажем, выделение полужирным и курсивом часто несет смысловую нагрузку. Ну а если речь идет о тексте научном, то в нем наверняка понадобятся подстрочные примечания и таблицы. И еще хуже, если придется ссылаться на иностранную литературу: тогда не обойтись без совмещения в одном документе нескольких кодовых страниц, каковое, естественно, потребует смены шрифтов.
Таким образом, единственным выходом из положения становится подготовка документов на языках текстовой разметки (TeX и HTML), позволяющих задать нужные элементы форматирования в виде тегов. Однако изучение языка разметки требует определенных усилий, и не всякому пользователю дается легко. К тому же не всем приходится составлять многостраничные оригинал-макеты. Сочинять же служебное письмо со справочником по командам LaTeX на коленях – занятие едва ли осмысленное. Вот тут-то и приходит на помощь текстовый процессор LyX, представляющий собой уникальную попытку соединить одно из основных достоинств Linux – интеграцию с системой LaTeX с возможностью подготовки документов в визуальном режиме.
По LyX существуют неплохие руководства на русском языке. Это труды и Алексея Федорчука, послужившие отправной точкой при написании этой статьи. Но, во-первых, развитие LyX не стоит на месте, и некоторые рекомендации этих авторов, скажем так, слегка устарели. А во-вторых, их работы – это, прежде всего, руководства по русификации, построенные по принципу: делай так-то – получишь такой-то результат. Я же хотел бы подробнее описать сам механизм взаимодействия LyX с LaTeX, так, чтобы, во-первых, стал ясен внутренний смысл практических действий по начальной настройке программы, и, во-вторых, чтобы пользователю легче было понять, в каком случае LyX действительно может облегчить его работу, а в каком – проще заняться написанием исходников LaTeX напрямую.
Итак, LyX – это не что иное, как графическая надстройка над системой LaTeX, наличие которой в установленном виде необходимо для его нормального функционирования. И если открыть подготовленный в LyX файл в простом текстовом редакторе, можно увидеть нечто внешне сходное с исходником LaTeX. На это как будто указывает знак backslash, с которого начинаются все команды. Однако же аргументы этих команд не заключаются в фигурные скобки, а просто отделяются пробелом, да и в качестве знака комментария используется символ # (а не %, как в LaTeX). Кроме того, странное впечатление производит структура текста с многочисленными переносами строк: с новой строки начинается каждая команда. И лишь когда мы дадим команду распечатать текст (или просмотреть DVI или postscript), программа в качестве промежуточного этапа сгенерирует настоящий документ LaTeX (файл с расширением .tex), который при желании можно будет разыскать где-то в недрах каталога /tmp.
Для чего же понадобилось создавать специальный язык разметки, нужный только как переходный этап? На этот вопрос легко ответить всякому, кому приходилось видеть html-код, сгенерированный визуальными редакторами. Этот ход оттого и получается неудобочитаемым, что такие редакторы стремятся "на лету" исполнять команды пользователя, не пытаясь воссоздать их внутреннюю логику. А ведь язык LaTeX значительно сложнее, чем html, и последствия могут быть хуже. Приведу такой пример. Для пометки текста на иностранном языке в LaTeX обычно используются команды-декларации \selectlanguage{}. Такая команда будет действовать до появления следующей декларации, отменяющей ее, например:
Русский текст. \selectlanguage{english} Some text in English. \selectlanguage{russian} Снова русский текст.
Однако можно сделать и по-иному, заключив команду переключения языка в фигурные скобки вместе с относящимся к ней текстом, так, чтобы она действовала только на него:
Русский текст. {\selectlanguage{english} Some text in English.} Снова русский текст.
Очевидно, что первый способ предпочтительнее для выделения целых абзацев текста, второй же – для фрагментов в несколько слов. Ясно также, что программе куда легче оценить объем каждого отрывка при компиляции текста для печати, чем пытаться судить о намерениях пользователя в процессе редактирования. Так вот, LyX прекрасно справляется с этой задачей, так что в данном конкретном случае к расставленным им командам LaTeX сложно придраться самому строгому критику. Ну а для того, чтобы обеспечить сохранение данных в процессе работы, как раз и нужен упрощенный язык разметки, по возможности снимающий все разночтения, подобные описанному выше. Преобразование своего внутреннего формата в документ LaTeX, по существу, является основной задачей программы, и потому львиная доля настроек LyX связана именно с регулированием этого процесса.
LyX и LinuxDoc
Один из доступных стилей в LyX SGML(LinuxDoc). Его можно использовать, чтобы читать и писать документы из LinuxDoc документации. Чтобы прочитать SGML документ, он должен быть переведен сначала в LyX формат с помощью утилиты sgml2lyx. Чтобы сделать sgml документ, просто выберите стиль SGML из окна стилей документов и вставьте название и автора (они обязательны), а потом просто пишите тело документа.В этом режиме LyX не показывает все возможности редактирования,а только те что поддерживаются LinuxDoc.
Существуют строгие взаимоотношения между LyX и LinuxDoc, достаточно сказать, что sgml2lyx утилита в пакете sgml-tools и не в дистибутиве LyX. Также, SGML документация в пакете sgml-tools, среди всех форматов, также и в формате LyX.
LyX
Необязательно -LyX сочетает мощь SGML с простотой использования обычного ворд-процессора.Но это не WYSIWYG программа, а WYSIWYM (What You See Is What You Mean - "То-Что-Ты-Видишь-Это-То-Что-Ты-Имел-Ввиду") приложение,т.к. то что вы видите на экране это не обязательно то , что будет видеть пользователь после обработки вашего документа SGML процессором. То как LyX отображает документ, похоже на то как визуализирует его Jade, но не полностью. Хотя достаточно близко, чтобы представить себе как будет выглядеть документ. Секции и под-секции пронумерованы и выделены жирным шрифтом, для представления таких вещей как тэги
и используются разные шрифты. Большинство тэгов спрятано от вас во время редактирования, т.к. LyX пишет в TeX,а затем экспортирует TeX в SGML.
Macro
Этот пункт разделяется на две секции. Первая, стабильная, предназначена для создания и запуска пользовательских макрокоманд. В ней можно видеть:
включение режима протоколирования макросов (Learn Keystrokes, Alt+K); нормальное завершение (Finish Learn, повторное Alt+K) и прерывание (Cansel Learn, Ctrl+.) протоколирования; воспроизведение (Replay Keystrokes, Ctrl+K) и повторение (Repeat, Ctrl+.) запротоколированных макрокоманд.
Вторая секция - настраиваемая, в нее можно включить макрокоманды, как идущие в комплекте, так и созданные собственоручно. Например, с помощью протоколирования - иначе они не сохраняться по завершении текущего сеанса.
В комплекте с той версией NEdit, которая имеется в моем распоряжении, идут макросы для:
дополнения частично напечатанных слов путем сопоставления их со словарем (Complete Word, Alt+D), некий Fill Sel v/Char (из комментариев в теле макроса я не очень понял, что это, к тому же пункт этот не активизирован) ответы на письма - с цитированием (Quote Mail Reply) и без оного (Unquote Mail Reply)
Кроме того, имеется серия языково-зависимых макросов, предназначенных для программирования на C++. Они появляются в меню только при включении соответствующего языкового режима. Однако, как и в случае с Shell, не видно причин, по которым нельзя было бы исключить из меню заведомо не нужные макросы, заменив их собственными. Именно это и будет темой заключительных разделов саги.
А пока посмотрим, что же такое понимается в NEdit под пунктом
Мая 2002 года
Последняя версия (3.11) была выпущена в конце 1998 года. За это время появилось много разных конверторов кодировок на любой вкус. Я не вижу смысла в дальнейшем развитии rusconv, так как она программа содержит большинство необходимых функций, а всё остальное можно сделать с помощью набора скриптов.
За три года существования программы свои отзывы прислали более полусотни пользователей, общее впечатление - благоприятное. Сообщений об ошибках прислано не было, но это не означает, что их нет. Я обнаружил следующее:
Временные файлы (в unix-версии) создаются с помощью небезопасной функции "mktemp". Теоретически злоумышленник может испортить данные пользователя. При перезаписи файла теряются исходные права доступа. В windows 95 использование маски "*.*" приводит к ошибке - имена файлов дублируются. Один раз имя файла возвращается как есть, а во второй раз - в формате 8.3. Не поддерживается буква "ё" (jo) в кодировке koi8 (много лет назад её не следовало использовать).
Эти неточности уже никогда не будут исправлены, по крайней мере, мной. Начиная с 2002 года весь пакет (программа, исходники, документация и прочее) распространяется по лицензии public domain. Вы можете делать с ним всё, что хотите, в том числе и исправлять ошибки. Для поддержки буквы "ё" выпущен патч . Его нужно скопировать в папку с исходными текстами и перекомпилировать программу. Файл содержит досовские концы строк, под Unix'ом, возможно, для некоторых компиляторов придётся преобразовать их в обычные.
Если вам хочется использовать не rusconv, а что-то другое, то рекомендую обратить внимание на iconv и . Программа iconv является стандартной для Linux'a и большинства Unix'ов. Она знает практически все существующие кодировки. Утилита enca пытается автоматически определять язык и кодировку данных. Обе программы портированы под windows и другие операционные системы.
htpp://uucode.com/rusconv/index.html
Oleg A. Paraschenko
Majordomo
Под русификацией Majordomo мы подразумеваем приведение сообщений, отправляемых Majordomo, в ответ на запросы к такому виду, чтобы почтовый клиент не строил догадок относительно кодировки сообщения, а точно знал ее. Патч, который можно взять , предназначен для Majordomo 1.94.5 и устанавливает кодировку сообщений в koi8-r.
Make Backup Copy и Sort Open Prev. Menu
Это также простые переключатели. Первый разрешает или запрещает создание резервных копий редактируемого файла. Включение его приводит к тому, что при перезаписи измененного документа предыдущая его версия сохраняется в виде файла с расширением *.bck.
С помощью Sort Open Prev. Menu можно включить алфавитную сортировку ранее открывавшихся файлов, входящих в список File - Open Previous. При выключении этой опции файлы в нем следуют в хоронологическом порядке.
Осталось рассмотреть лишь немногие настройки Preferences, такие, как
МАКРОКОМАНДЫ И Т.П.
^u <команда> Выполнить команду n раз (n - число) M-x <функция> Выполнить функцию по имени M-x set-variable Установить значение переменной M-x global-set-key <функция> Повесить на клавишу функцию. ^X ( клавиши ^X ) задать макрокоманду ^X e выполнить макрокоманду name-last-kbd-makro присвоить ей имя insert-last-kbd-makro воспроизвести клавиши LISP кода insert-kbd-makro вставить lisp-код по функции. M-x disassemble дизассемблировать функцию.
Макросы
Существует полезная команда редактора ex для редактора vi - abbreviate. Она используется для сокращения наиболее часто применяемых фраз. Синтаксис команды : :ab string thing to substitute for. Например : если вам необходимо вводить слово "Humuhumunukunukuapua`a", но вы не хотите каждый раз набирать его полностью - используйте команду ab. Для данного случая она будет выглядеть так :
:ab 9u Humuhumunukunukuapua`a
Теперь если вы введете 9u - вы получите полное значение. При вводе 9university замены не произойдет.
Для удаления сокращения используется команда unabbreviate. Для данного случая - :una 9u. Команда :ab выдаст список всех сокращений.
Другая полезная команда редактора ex - map. Существуют две разновидности команды - для командного режима и для режима вставки текста - map и map! соответственно. Работает сходно с командой ab - последовательность символов заменяется обычно командами редактора vi.
Манипулирование символьно/строковым форматированием
~ Изменить регистр символа в позиции курсора. < Выполнить сдвиг влево на величину shiftwidth. "<<" - сдвиг текущей строки влево (использует аргумент count). > Выполнить сдвиг вправо на величину shiftwidth. ">>" - сдвиг текущей строки вправо (использует аргумент count). J Объединить текущую строку с последующей. Аргумент count определяет количество строк.
Manual-e
rusconv v.3.11 manual
Description.
Rusconv is intended for converting text between russian encodings: alternative (for DOS, codepage 866), KOI-8 (for UNIX), Macintosh, Windows (codepage 1251) and latinica (russian text spelled latin letters). Rusconv also can convert from DOS/windows text file format to UNIX one and back. Files can be converted to several encodings simultaneously, any number of files can be converted simultaneously. Designed for use from command line and from command scripts. Windows version supports long file names and local network files.
Synopsys.
rusconv (-h|--help) rusconv [options] -(alt|koi|mac|win) +(alt|koi|mac|lat|win) [--] [output_dir] rusconv [options] -(cr2crlf|crlf2cr) [--] [output_dir] rusconv [options] -(dos2unix|win2unix|unix2dos|unix2win|d2u|w2u|u2d|u2w) [--] [output_dir]
1. rusconv (-h|--help)
Prints help.
2. rusconv [options] -(alt|koi|mac|win) +(alt|koi|mac|lat|win) [--] [output_dir]
Program converts content of files in
from encoding -xxx to encoding +xxx. Results are placed in files with the same names but with another extensions. Files are created in directory [output_dir], or in current one if output directory is not specified.
You should specify one and only one encoding from which to convert:
flag encoding
-alt - alternative (DOS) -koi - KOI-8 (UNIX) -mac - Macintosh -win - Windows
You can specify several encodings to convert to:
flag encoding
+alt - alternative (DOS) +koi - KOI-8 (UNIX) +lat - latinica +mac - Macintosh +win - Windows
Default extensions are:
extension for encoding
.alt - alternative (DOS) .koi - KOI-8 (UNIX) .lat - latinica .mac - Macintosh .win - Windows
To specify you own extensions for files with convert results use commands:
extension for files contained text in encoding
-aext extension - alternative (DOS) -kext extension - KOI-8 (UNIX) -lext extension - latinica -mext extension - Macintosh -wext extension - Windows
When converting to only one encoding you can use command
-ext extension
Depending on encoding to which you convert it is interpreted as one of command '-aext extension', '-kext extension', '-lext extension', '-mext extension' or '-wext extension'.
Flag '-o' is used for overwriting. Instead of creating new files rusconv changes content of existing files.
Rusconv also can convert from DOS/windows text file format to UNIX one and back. In DOS and windows end of line is coded by two chars, in UNIX - by one char. For converting from one format to another use flags
-cr2crlf - from UNIX text file format to DOS/windows one -crlf2cr - from DOS/windows text file format to UNIX one
DOS and windows versions are verbose by default. UNIX version prints only warnings and error messages. To redefine default mode use flags
'-s' - silent work, no any message will be printed '-v' - verbose work, all messages will be printed
Windows operating system runs rusconv in separate window which should be closed after program finished. To avoid this and to let user to see report rusconv after all files converted waits for key pressed. Behavior can be changed by flags
'-close' - to finish after all files converted '-noclose' - do not close window with report, by default
Flags '-close' and '-noclose' are used only in windows version. DOS and UNIX versions ignore them.
Symbols '--' stands for 'end of flag'. All after this symbols is a file list.
3. rusconv [options] -(cr2crlf|crlf2cr) [--] [output_dir]
In this case rusconv converts only type of lines and doesn't convert from one encoding to another. In DOS and windows end of line coded by two chars, in UNIX - by one char.
-cr2crlf - from UNIX text file format to DOS/windows one -crlf2cr - from DOS/windows text file format to UNIX one
Default extensions for files are:
extension text file format
.cr - UNIX type .crlf - DOS/windows type .crl - DOS/windows type (used in DOS version)
To specify you own extension use command
-ext extension
Other flags are used as in section '2'.
4. rusconv [options] -(dos2unix|win2unix|unix2dos|unix2win|d2u|w2u|u2d|u2w) [--] [output_dir]
For most often tasks - converting general russian text from DOS to UNIX, from Windows to UNIX and back - it is enough only one flag:
-dos2unix (or -d2u) - from DOS to UNIX -win2unix (or -w2u) - from Windows to UNIX -unix2dos (or -u2d) - from UNIX to DOS -unix2win (or -u2w) - from UNIX to Windows
This flags are abbreviations. During command line parsing they are replaced by:
-dos2unix (or -d2u) by '-alt +koi -crlf2cr'
-win2unix (or -w2u) by '-win +koi -crlf2cr'
-unix2dos (or -u2d) by '-koi +alt -cr2crlf'
-unix2win (or -u2w) by '-koi +win -cr2crlf'
Examples.
1. Example for windows.
Files file1.txt and file2.txt are converted from encoding KOI-8 to all other encodings. Results are placed in files file1.alt, file1.koi, file1.lat, file1.mac, file1.win, file2.alt, file2.koi, file2.lat, file2.mac, file2.win in directory e:\txt.
E:\EX>rusconv -koi +alt +koi +win +mac +lat file1.txt file2.txt e:\txt\ ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\file1.txt -> e:\txt\file1.alt, e:\txt\file1.koi, e:\txt\file1.mac, e:\txt\file1.lat, e:\txt\file1.win: ok. .\file2.txt -> e:\txt\file2.alt, e:\txt\file2.koi, e:\txt\file2.mac, e:\txt\file2.lat, e:\txt\file2.win: ok. 2 file(s) converted.
2. Example for windows.
Type of lines of text network files \\server\d\files\*.txt is converted from UNIX format to DOS/windows format.
E:\EX>rusconv -cr2crlf -o \\server\d\files\*.txt ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ \\server\d\files\EC-1845.TXT -> \\server\d\files\rcB180.TMP -> \\server\d\files\EC-1845.TXT: ok. \\server\d\files\HUMOR_PR.TXT -> \\server\d\files\rcB181.TMP -> \\server\d\files\HUMOR_PR.TXT: ok. \\server\d\files\NON_PAS.TXT -> \\server\d\files\rcB183.TMP -> \\server\d\files\NON_PAS.TXT: ok. 3 file(s) converted.
3. Example for UNIX.
Content of .html-files in directory win/
is converted from windows style of russian text to UNIX style. Results are placed in files with the same name in directory koi/.
rusconv -v -win2unix -ext html win/*.html koi/ ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ win/faq.html -> koi/faq.html: ok. win/feedback.html -> koi/feedback.html: ok. win/index.html -> koi/index.html: ok. 3 file(s) converted.
Return code.
Number of converted files.
manual-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Manual
rusconv v.3.11.
Руководство пользователя.
Назначение.
Программа rusconv служит для преобразования русскоязычных текстов - перевода их в кодировки: альтернативную (кодовая страница 866, для DOS), koi8 (для UNIX и Русской Сети), Windows (кодовая страница 1251), Macintosh и latinica (russkij tekst latinskimi bukvami). Возможен перевод из DOS/windows-формата текстовых файлов в UNIX-формат и обратно. Один файл можно переводить сразу в несколько кодировок, можно переводить сразу несколько файлов. Разработан для использования из командной строки и из командных файлов. Windows-версия понимает длинные имена файлов и сетевые файлы.
Описание.
Способы запуска:
rusconv (-h|--help) rusconv [options] -(alt|koi|mac|win) +(alt|koi|mac|lat|win) [--] [output_dir] rusconv [options] -(cr2crlf|crlf2cr) [--] [output_dir] rusconv [options] -(dos2unix|win2unix|unix2dos|unix2win|d2u|w2u|u2d|u2w) [--] [output_dir]
1. rusconv (-h|--help)
Выводит на экран текст помощи.
2. rusconv [options] -(alt|koi|mac|win) +(alt|koi|mac|lat|win) [--] [output_dir]
Программа переводит содержимое файлов в списке
из кодировки -xxx в кодировку +xxx. Результаты сохраняются в файлах с теми же именами, но с другими расширениями. Они создаются в директории [output_dir], либо, если выходная директория не задана, в текущем каталоге.
Необходимо указывать ровно одну кодировку, из которой надо переводить. Для этого используются флаги:
флаг кодировка
-alt - альтернативная (DOS) -koi - КОИ-8 (UNIX) -mac - Macintosh -win - Windows
Можно переводить сразу в несколько кодировок. Для этого надо дать не менее одного из флагов:
флаг кодировка
+alt - альтернативная (DOS) +koi - КОИ-8 (UNIX) +lat - latinica +mac - Macintosh +win - Windows
По умолчанию к именам файлам добавляются такие расширения:
расширение для кодировки
.alt - альтернативной (DOS) .koi - КОИ-8 (UNIX) .lat - latinica .mac - Macintosh .win - Windows
Чтобы задать свои расширения для файлов с результатами перевода, используйте команды:
расширение для файлов, содержащих текст в кодировке
-aext расширение - альтернативной (DOS) -kext расширение - КОИ-8 (UNIX) -lext расширение - latinica -mext расширение - Macintosh -wext расширение - Windows
При переводе только в одну кодировку можно использовать команду
-ext расширение
В зависимости от кодировки, в которую происходит преобразование, это воспринимается как одна из команд '-aext расширение', '-kext расширение', '-lext расширение', '-mext расширение' или '-wext расширение'.
Флаг '-o' используется для перезаписывания. Вместо того чтобы создавать новые файлы, rusconv изменяет содержимое переводимых файлов.
Кроме преобразования кодировок, rusconv позволяет изменять тип строк. В DOS и windows конец строки кодируется двумя символами, в UNIX - одним. Для перевода из одного формата в другой предназначены флаги
-cr2crlf - из UNIX-формата текстовых файлов в DOS/windows-формат -crlf2cr - из DOS/windows-формата текстовых файлов в UNIX-формат
DOS и windows-версии по умолчанию разговорчивые. В UNIX-версии по умолчанию выводятся только предупреждения и сообщения об ошибках. Чтобы задать режим работы, используйте флаги
'-s' - работа без вывода на экран любых сообщений '-v' - вывод на экран всех сообщений
Операционная система windows запускает rusconv в отдельном окне, которое должно закрываться после окончания программы. Чтобы окно не закрывалось, и пользователь мог просмотреть отчет о проделанной работе, rusconv после перевода всех файлов ждет нажатия любой клавиши. Поведение можно изменить с помощью флагов
'-close' - завершаться сразу после окончания перевода файлов '-noclose' - не закрывать окно с отчетом, по умолчанию
Флаги '-close' и '-noclose' имеют смысл только в windows-версии. В DOS и UNIX-версиях они игнорируются.
Сочетание символов '--' служит для указания конца флагов. Все, что стоит после него, является списком файлов.
3. rusconv [options] -(cr2crlf|crlf2cr) [--] [output_dir]
В данном случае изменяется только тип строк, преобразования кодировок не происходит. В DOS и windows конец строки кодируется двумя символами, в UNIX - одним.
-cr2crlf - из UNIX-формата текстовых файлов в DOS/windows-формат -crlf2cr - из DOS/windows-формата текстовых файлов в UNIX-формат
Расширения по умолчанию для создаваемых файлов:
расширение формат текстового файла
.cr - UNIX-формат .crlf - DOS/windows-формат .crl - DOS/windows-формат, используется в DOS-версии
Для установки своего расширения можно дать команду
-ext расширение
Остальные флаги используются аналогично пункту '2'.
4. rusconv [options] -(dos2unix|win2unix|unix2dos|unix2win|d2u|w2u|u2d|u2w) [--] [output_dir]
Для полноценного переноса русских файлов между наиболее популярными операционными системами достаточно использовать флаги
-dos2unix (или -d2u) - из DOS в UNIX -win2unix (или -w2u) - из Windows в UNIX -unix2dos (или -u2d) - из UNIX в DOS -unix2win (или -u2w) - из UNIX в Windows
Они являются всего лишь сокращениями. При разборе командной строки они заменяются:
-dos2unix (или -d2u) на '-alt +koi -crlf2cr'
-win2unix (или -w2u) на '-win +koi -crlf2cr'
-unix2dos (или -u2d) на '-koi +alt -cr2crlf'
-unix2win (или -u2w) на '-koi +win -cr2crlf'
Примеры использования.
1. Пример для windows.
Файлы file1.txt и file2.txt из кодировки КОИ-8 переводятся во все остальные кодировки. Результат сохраняется в файлах с именами file1.alt, file1.koi, file1.lat, file1.mac, file1.win, file2.alt, file2.koi, file2.lat, file2.mac, file2.win в директории e:\txt.
E:\EX>rusconv -koi +alt +koi +win +mac +lat file1.txt file2.txt e:\txt\ ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\file1.txt -> e:\txt\file1.alt, e:\txt\file1.koi, e:\txt\file1.mac, e:\txt\file1.lat, e:\txt\file1.win: ok. .\file2.txt -> e:\txt\file2.alt, e:\txt\file2.koi, e:\txt\file2.mac, e:\txt\file2.lat, e:\txt\file2.win: ok. 2 file(s) converted.
2. Пример для windows.
Тип концов строк текстовых сетевых файлов \\server\d\files\*.txt
преобразуется из UNIX-формата в DOS/windows-формат.
E:\EX>rusconv -cr2crlf -o \\server\d\files\*.txt ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ \\server\d\files\EC-1845.TXT -> \\server\d\files\rcB180.TMP -> \\server\d\files\EC-1845.TXT: ok. \\server\d\files\HUMOR_PR.TXT -> \\server\d\files\rcB181.TMP -> \\server\d\files\HUMOR_PR.TXT: ok. \\server\d\files\NON_PAS.TXT -> \\server\d\files\rcB183.TMP -> \\server\d\files\NON_PAS.TXT: ok. 3 file(s) converted.
3. Пример для UNIX.
Содержимое .html-файлов из директории win/
переводится из windows-версии русского текста в UNIX-версию. Результат сохраняется в файлах с теми же именами в директории koi/.
rusconv -v -win2unix -ext html win/*.html koi/ ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ win/faq.html -> koi/faq.html: ok. win/feedback.html -> koi/feedback.html: ok. win/index.html -> koi/index.html: ok. 3 file(s) converted.
Код возврата.
Количество переведенных файлов.
manual.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Массивы
Допускается использование массивов. Массивы не объявляются, а принимают значения из контекста, например:
x[NR] = $0 - элементу массива x, индексированному NR, присваивается обрабатываемая строка.
x["apple"] - элементы массива могут индексироваться не числовым значением, т.е. строкой.
Математические выражения.
В txt2html есть две возможности для записи математических символов и выражений. The system used is the standard LaTeX mode surrounded by %equation delimeters. Например, выражение
создано так:
%equation
E = m c^2
%equation
as txt2html parses your file, it will extract the latex source and generate a gif file from it. This is then automatically placed as an image in your resulting html file.
Создание выражений без текста также возможно с помощью %math команд. Например, следующее выражение:
Знаменитая формула Эйнштейна
описывает взаимосвяз материи и энергии.
создано так:
Знаменитая формула Эйнштейна
%math E = m c^2 %math
описывает взаимосвяз материи и энергии.
Обратите внимание, что выравнивание здесь происходит не по правому краю. Любые предложения о том, как это исправить, приветствуются.
МЕч-чяшпАБЛ
аБЮчзп рщьвЦ ДЮуыэп (ъчт АБЮчзчы Юужьэп) щпвКрпуБАО МЕч-чяшпАБЛН. +щп ьАъчшЛвЦуБАО тшО ъчзпвп щуячшЛХьЕ ДЮпсэущБчр БузАБп р щуАзчшЛзьЕ ФушОЕ.
мЕч чячвщпГпуБ чБчяЮпжущьу щпяьЮпуэКЕ рпэь вщпзчр. ¦щу Emacs, чъуЮпФьчщщпО АьАБуэп чяКГщч чБчяЮпжпуБ руАЛ рпХ ррчт. Emacs ЦъЮпршОуБ МЕч ьщпГу.
Emacs щьзчстп щу ъчрБчЮОуБ зчэпщтК, АчАБчОИьу ьв чтьщчГщчсч вщпзп, п зчэпщтК, АчАБчОИьу ьв щуАзчшЛзьЕ, ъчрБчЮОНБАО, БчшЛзч уАшь рК чАБпщпршьрпуБуАЛ р ъЮчФуААу ьЕ щпячЮп. ¦пз БчшЛзч рК чАБпщпршьрпуБуАЛ ячшуу Гуэ щп АузЦщтЦ р АуЮутьщу зчэпщтК, рАу вщпзь МБчы зчэпщтК АЮпвЦ жу чБчяЮпжпНБАО. мБч АшЦжьБ ъчтАзпвзчы тшО чзчщГпщьО зчэпщтК. ¦пз БчшЛзч рзшНГпуБАО МЕч, чзчщГпщьу зчэпщтК чБчяЮпжпуБАО щуэутшущщч р ъЮчФуААу щпячЮп. бпзчу ъчрутущьу ъЮутщпвщпГущч тшО Бчсч, ГБчяК ЦруЮущщКы ъчшЛвчрпБушЛ ъчшЦГпш яКАБЮКы ЮувЦшЛБпБ, р Бч жу рЮуэО МБч ъчврчшОуБ щуЦруЮущщКэ ъчшЛвчрпБушОэ ъчшЦГьБЛ эпзАьэЦэ чяЮпБщчы АрОвь. ¦К эчжуБу ьвэущьБЛ МБч ъчрутущьу, ЦАБпщчрьр чАчяЦН ъуЮуэущщЦН (АэчБЮьБу Юпвтуш ).
¦Ашь зчэпщтп щу эчжуБ яКБЛ рКъчшщущп, чщп р ъуГпБпуБ МЕч-чяшпАБь АччяИущьу чя чХьязу. аччяИущьу чя чХьязу АчъЮчрчжтпуБАО врЦзчрКэ Аьсщпшчэ ьшь эьспщьуэ МзЮпщп. ¦Ючэу Бчсч, зчстп ъЮчьвчХшп чХьязп, шНячы щпяЮпщщКы ъуЮут МБьэ ррчт АяЮпАКрпуБАО.
+узчБчЮКу зчэпщтК ъуГпБпНБ р МЕч-чяшпАБь ьщДчЮэпФьчщщКу АччяИущьО. +щь ъчЕчжь щп АччяИущьО чя чХьязпЕ, щч яув врЦзчрчсч Аьсщпшп, ь щпяЮпщщпО Юпщуу ьщДчЮэпФьО щу АяЮпАКрпуБАО. Tщчстп МБь АччяИущьО счрчЮОБ рпэ, ГБч зчэпщтп рКъчшщущп, р АшЦГпу, уАшь МБч Орщч щу щпяшНтпуБАО ъЮь ъЮчАэчБЮу ЮутпзБьЮЦуэчсч БузАБп. Tщчстп утьщАБрущщчы ФушЛН зчэпщтК ОршОуБАО ъуГпБЛ АччяИущьО, тпНИусч рпэ АъуФьДьГуАзЦН ьщДчЮэпФьН. +пъЮьэуЮ, зчэпщтп а-Е = ьАъчшЛвЦуБАО, ГБчяК щпъуГпБпБЛ АччяИущьу, чъьАКрпНИуу ъчвьФьН БчГзь р БузАБу ь уу БузЦИьы АБчшяуФ р чзщу. ¦чэпщтК, БЮуяЦНИьу тшО Арчусч рКъчшщущьО тшьБушЛщчу рЮуэО, ГпАБч рКрчтОБ рч рЮуэО ЮпячБК АччяИущьО, впзпщГьрпНИьуАО щп `...', п р зчщФу, зчстп чщь впзчщГьшьАЛ, Ашчрч `done'.
TщДчЮэпБьрщКу АччяИущьО ьв МЕч-чяшпАБь АчЕЮпщОНБАО р яЦДуЮу, щпвКрпуэчэ `*Messages*'. (+К уИу щу чяЙОАщьшь, ГБч Бпзчу яЦДуЮ; тшО ъчшЦГущьО ячшЛХуы ьщДчЮэпФьь ч щьЕ АэчБЮьБу Юпвтуш .) ¦Ашь рК ъЮчъЦАБьшь АччяИущьу, зчБчЮчу щутчшсч чБчяЮпжпшчАЛ щп МзЮпщу, рК эчжуБу ъуЮузшНГьБЛАО р яЦДуЮ `*Messages*' ь Ащчрп ъчАэчБЮуБЛ усч. (©чАшутчрпБушЛщКу АччяИущьО ч ъЮчэужЦБчГщКЕ ЮувЦшЛБпБпЕ ГпАБч АрчЮпГьрпНБАО р МБчэ яЦДуЮу р чтщч.)
юпвэуЮ яЦДуЮп `*Messages*' чсЮпщьГущ чъЮутушущщКэ ГьАшчэ АБЮчз, МБч ГьАшч вптпуБ ъуЮуэущщпО message-log-max. ¦пз БчшЛзч яЦДуЮ тчЮпАБпуБ тч МБчсч ЮпвэуЮп, зпжтпО щчрпО АБЮчзп ЦтпшОуБ чтщЦ АБЮчзЦ ьв щпГпшп. аэчБЮьБу Юпвтуш , ГБчяК ЦвщпБЛ, зпз ЦАБпщчрьБЛ ъуЮуэущщКу, Бпзьу зпз message-log-max.
мЕч-чяшпАБЛ ьАъчшЛвЦуБАО Бпзжу тшО чБчяЮпжущьО эьщьяЦДуЮп: чзщп, зчБчЮчу ьАъчшЛвЦуБАО тшО АГьБКрпщьО пЮсЦэущБчр тшО зчэпщт, щпъЮьэуЮ, ьэущь Дпышп тшО ЮутпзБьЮчрпщьО. ¦чстп ьАъчшЛвЦуБАО эьщьяЦДуЮ, МЕч-чяшпАБЛ щпГьщпуБАО Ач АБЮчзь ъчтАзпвзь, зчБчЮпО чяКГщч зчщГпуБАО трчуБчГьуэ; зЮчэу Бчсч, р МБчы АБЮчзу ъчОршОуБАО зЦЮАчЮ, Бпз зпз чщп АБпщчрьБАО рКяЮпщщКэ чзщчэ. ¦К рАустп эчжуБу рКыБь ьв эьщьяЦДуЮп, щпяЮпр C-g. аэчБЮьБу Юпвтуш .
Mg - emacs-like text editor
Чтобы заставить mg работать с русскими буквами, достаточно создать файл ~/.mg, содержащий строчку:
meta-key-mode
MIME :
MIME FAQ из USENET группы comp.mail.mime :
или то же в HTML :
MIME Overview, by Mark Grand
The Internet Mail Consortium [Inernationalization]
MIME RFC: RFC-2045..2049
Многооконное редактирование
Редактировать сразу несколько файлов можно либо пользуясь командной редактора :e filename, либо указав все необходимые файлы в командной строке при вызове редактора (например: vi file1 file2 file3). В последнем случае вы двигаетесь по списку файлов с помощью команд:
:n - переходим к следующему файлу в списке
:rew - возвращаемся к редактированию первого файла в списке
Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла.
Модифицирующие клавиши
Ctrl: в сочетании с другими клавишами расширяет сферу их применения. Например, нажатие клавишщи Home перемещает курсор в начало строки, тогда как в сочетании с нажатием клавиши Ctrl (то есть Ctrl+Home - в начало документа.
Shift: расширяет выделение относительно позиции курсора при нажатии клавиш управления последним (аналогично действию клавиши Shift в Windows).
Alt: используется, в частности, для выделения колонок и прямоугольных фрагментов. (For the effects of modifier keys on mouse button presses, see the section titled "Using the Mouse")
"MOVA" --- скрипты для работы со словарями в формате "MOVA"
Предлагаемые скрипты используйте на условиях GNU GPL.
Скрипты используют стандартные утилиты UNIX - grep, sed, fmt, а для работы в консоли еще и groff, less. Они проводят поиск в текстовом файле и выводят найденные строчки в графическую оболочку. Плюсы такого механизма работы: 1) возможность поиска в словаре по словосочетаниям и без учета регистра (и не только по первому слову) 2) простота программы, легкость ее модификации и отладки 3) большая скорость работы (основные задержки приходятся на загрузку словарного файла в оперативную память с жесткого диска и при работе графического интерфейса)
Обратите внимание на размер оперативной памяти: если памяти достаточно (например, 64 Mb при использовании fvwm2), то повторные вызовы словаря намного быстрее первого, так как текст словаря остается в дисковом кэше и сразу становится доступными по мере надобности (исключается медленное копирование словаря с жесткого диска в оперативную память). Но работа при 32 Mb (при поиске без хеширования) практически невозможна (так как страницы со словарем быстро вытесняются на диск из оперативной памяти - при этом каждый новый запуск поиска включает чтение словаря с жесткого диска, что приводит к 1-2 с ожидания результата, но если начинает работать swap (при работе поиска), то время ожидания становится намного больше).
Сейчас movaTK и movaMTK использует хеширование при поиске слов сначала словарной статьи (опции -W и -B), это позволяет пользоваться словарем (с данными опциями) при меньших размерах ОЗУ. Словари отхешированы по первым двум буквам словарной статьи и хранятся в файле с названием словаря и добавлением к его названию слова ".hash". Цифра идущая за двухбуквенным сочетанием в строчке из файла хеша означает порядковый номер байта на котором кончается блок в котором все словарные статьи начинаются с данного двубуквенного сочетания. Если запросить поиск слова для которого нет хешированного двубуквенного начала, то включается обычный поиск (без использования хеша). К сожалению, маленький (а иначе индексирование не дает выигрыша) индексный файл получается при индексировании по ограниченному числу слов. Если же нужно иметь возможность поиска по всем словам словарной статьи (и, особенно, словосочетаниям), то хеширование не дает никакого выигрыша IMHO.
Основная работа по поиску строк и форматированию выполняется bash
скриптом - mova . В коммандной строке скрипту можно задать опции поиска, слово или последовательность слов для поиска и, в конце, полный путь к файлу словаря, в котором производится поиск. При этом, он будет искать слово сначала словарной строки (опция "-W"), первую часть слова сначала словарной строки (опция "-B"), последовательность слов внутри словарной строки (опция "-S", можно использовать как русско-английский словарь), последовательность символов (включая пробелы) внутри словарной строки (опция "-T"). Затем найденные строки пропускаются через sed фильтр, который добавляет к каждой словарной статье пустую строчку и форматирование по вариантам значения слова. В консоли лучше использовать аналогичные опции со строчными буквами (при этом подключается groff и less фильтры, а невидимые в koi8-r символы транскрипции перекодируются в видимые) см. screenshot
. Обычно, mova в X-ах не используется самостоятельно, а вызывается из Tcl/Tk скриптов -
movaTK, см. screenshot

movaMTK использует другой способ вывода информации в окна (он удобнее, если нужно оставить на экране перевод ранее найденых слов, хотя работает медленнее). См. screenshot

movaTK и movaMTK раскрашивают в красный цвет транскрипцию и подставляют соответствующий фонт для символов между квадратными скобками. Голубым отмечаются английские слова, зеленым и наклонным шрифтом - служебные (грамматические еще выделяется жирным шрифтом). Слово или буквы поиска выделяются коричневым цветом. Часть словарной статьи до двух пробелов выделяется шрифтом FONT_FIND (этот же шрифт используется в желтой строчке ввода и для выделения слова в сером окне истории поиска).
Выйти из movaTK и movaMTK можно нажав "Esc"
Над и под скролбаром находятся квадратные кнопочки - с их помощью можно искать выделенное мышкой слово в уже выведенной словарной статье.
Напомню, как работают с этими оболочками. Слово или слова выделяются мышкой (при этом лишние пробелы не мешают). Затем из xterm или встроенной кнопкой (для fvwm2 отредактируйте файл .fvwm2rc в своей директории) запускается соответственный Tcl/Tk скрипт. Например, так
DestroyMenu "Utilities"
AddToMenu "Utilities@utilities-menu.xpm@^white^"
+ "Mueller7%mova_32x22.xpm%" Exec movaTK -W Mueller7GPL.koi&
+ "Mueller7 M%mova_32x32.xpm%" Exec movaMTK -W Mueller7GPL.koi& Оболочками можно пользоваться и без мышки. Для этого введите слово для перевода вручную в верхней (желтой) строке. При этом поиск с опцией "-W" запускается нажатием клавиши "Enter"; "-B" -
"Shift-Enter"; "-S" - "Ctrl-Enter"; а "-T" - "Alt-Enter".
Еще один важный управляющий скрипт: mova_sendTK. С его помощью можно послать выделенную мышкой строчку на перевод в первое открытое окно
movaTK для каждого словаря. Если открытого окна movaTK для
Mueller7GPL.koi нет, то будет запущена новая movaTK для этого словаря. Запускать mova_sendTK нужно с опциями для поиска, аналогичными для movaTK и mova. Если Вы хотите иметь возможность запускать поиск в словаре из любой программы на десктопе нажатием клавиш на клавиатуре, то добавьте в Ваш .fvwm2rc следующие строчки:
# Now some keyboard shortcuts.
#Keys for Mueller's dictionary
Key z A M Exec mova_sendTK -W &
Key В A M Exec mova_sendTK -W &
Key x A M Exec mova_sendTK -B &
Key Ъ A M Exec mova_sendTK -B &
Key a A M Exec mova_sendTK -S &
Key Т A M Exec mova_sendTK -S &
Key s A M Exec mova_sendTK -T &
Key Ш A M Exec mova_sendTK -T &
После перезапуска X-ов Вы получите возможность вызывать поиск выделенного мышкой слова в movaTK нажатием Alt-a (для поиска с опцией -S), Alt-s (для поиска с опцией -T), Alt-z
(для поиска с опцией -W), Alt-x (для поиска с опцией -B). Если клавиатура будет в koi8-r кодировке, то соответствующие клавиши будут работать также. Причем клавиши с Alt будут работать в любом месте десктопа и из окон большинства программ. Если запущенного movaTK нет, то нажатие этих клавиш запустит новый movaTK. Сечас mova_sendTK посылает указание переводить выделенное слово/слова извесным мне словарям (доступным в Интернете в формате "MOVA"). Список словарей для запуска находится в теле скрипта.
Иногда, wish не хочет посылать данные в уже открытую программу и говорит, что у него проблемы с секретностью. Попробуйте выполнить
xauth add :0 . `mcookie`
и затем добавьте в персональный .xserverrc
exec X :0 -auth ~/.Xauthority
и перезапустите X-ы
Словари, скрипты, настроечные файлы и описания размещаются согласно FHS (File Hierarchy Standard) - в /share/dict/, /share/mova/, /share/doc/mova/. При этом существует точка привязки всех используемых директорий (внутри скриптов это переменная DIR=/usr/local/). Точку привязки можно изменить в настроечных файлах - .movarc" или
.movarc_СЛОВАРЬ помещенных в домашнем каталоге или в DIR/share/mova/ или теле скрипта (при отсутствии настроечных файлов). Для инсталяции пакета скопируйте запакованный файл в корневую директорию "/" и выполните команды:
tar -xzf Mueller7GPL.tgz
tar -xzf script_mova.tgz
Для словарей с транскрипцией нужно добавить Sil-IPA шрифты в
XF86Config:
FontPath "/usr/X11R6/lib/fonts/sil_ipa/"
Родной сайт (http://www.sil.org/computing/fonts/encore-ipa.html) Sil-IPA шрифтов имеет еще и набор TrueType фонтов. Данные фонты распространяются под особой Free лицензией и для коммерческого использования нужно договариваться с авторами фонтов отдельно.
Все установки шрифтов и используемый по умолчанию словарь меняются в начале файла Tcl/Tk скриптов: в movaTK и movaMTK:
set FONT_FIND -*-*-bold-r-*-*-17-*-*-*-*-*-koi8-r
set FONT_TEXT -*-*-medium-r-*-*-17-*-*-*-*-*-koi8-r
set FONT_D -*-*-medium-o-*-*-17-*-*-*-*-*-koi8-r
set FONT_DG -*-*-bold-o-*-*-17-*-*-*-*-*-koi8-r
set FONT_IPA -*-silsophiaipa-*-r-*-17-*-*-*-*-*-*-*
set DIR /usr/local/
set DIR_TMP /tmp/
set DIC Mueller7GPL.koi
Можно также сделать отдельный файл настроек в домашнем каталоге с названием
".movarc", тогда будут считываться установки из этого файла. Если при запуске mova или movaTK/movaMTK в коммандной строке не указано название словаря, то по умолчанию будет запускаться поиск в словаре с именем
DIC. Пример соответствующего ".movarc",
-*-*-bold-r-*-*-20-*-*-*-*-*-*-koi8-r
-*-*-medium-r-*-*-20-*-*-*-*-*-koi8-r
-*-*-medium-o-*-*-20-*-*-*-*-*-koi8-r
-*-*-bold-o-*-*-21-*-*-*-*-*-koi8-r
-*-silsophiaipa-*-r-*-20-*-*-*-p-*-*-*
/usr/local/
/tmp/
Mueller7GPL.koi
Для индивидуальной настройки словарей, скажем для словарей европейских языков в ".movarc_СЛОВАРЬ" (где СЛОВАРЬ - имя файла словаря) нужно выставить подходящие фонты для FONT_FIND. Пример соответствующего
".movarc__СЛОВАРЬ",
-*-*-bold-r-*-*-20-*-*-*-*-*-*-1
-*-*-medium-r-*-*-20-*-*-*-*-*-koi8-r
-*-*-medium-o-*-*-20-*-*-*-*-*-koi8-r
-*-*-bold-o-*-*-21-*-*-*-*-*-koi8-r
-*-silsophiaipa-*-r-*-20-*-*-*-p-*-*-*
/usr/local/
/tmp/
И ".movarc" и ".movarc__СЛОВАРЬ" можно положить в директорию с настройками всего пакета - DIR/share/mova/. Они будут использоваться при отсутствии соответствующих файлов в домашней директории.
В самой верхней голубой строчке находятся кнопки:
Help - при нажатии выведится русский текст с краткой инструкцией по использованию оболочек.
Dictionary - выбор активного словаря. Открыть меню можно щелчком мышки или нажатием Alt-d
New Diary - при нажатии на эту клавишу слово отмеченное мышкой становится именем текущего Diary файла.
Add to Diary - добавляет содержимое окна вывода словарной статьи в конец текущего файла Diary.
Rewrite Diary - сохраняет текст в окне вывода словарной статьи в текущем файле Diary (по умолчанию это .mova) в домашнем каталоге пользователя. Предыдущее содержимое этого файла будет уничтожено.
Read Diary - можно выбрать Diary для вывода в окно. Открыть меню можно щелчком мышки или нажатием Alt-r
В директории DIR/share/mova/icons/ находятся иконки, специально сделанные для данного пакета, поместите их в директорию используемую windows manager для хранения иконок. mova_22x15.xpm; mova_32_22.xpm; mova_48x32 - для movaTK, а mova_22x22.xpm; mova_32_32.xpm; mova_48x48 - для
movaMTK. См. screenshot

Вы можете скачать последнию версию (версия 4.0) скриптов на www.chat.ru/~mueller_dic/script_mova.tgz или www.geocities.com/mueller_dic/script_mova.tgz.
20.7.99 Дмитрий Мищенко предупреждает пользователей FreeBSD, что команда fmt имеет в ней другие ключи (изменения должны быть внесены в mova: "fmt -s -w 45" нужно заменить на "fmt 45".
6.10.99 Игорь Готс предлагает возможность сохранения всех переведенных за день слов в специальном log файле. Для этого в файле mova замените:
&/g'|fmt -s -w 45;}
на
&/g'|fmt -s -w 45|tee -a /tmp/Mueller.`date|sed 's/[ ].*//g'`.log;}
Не забудьте вычищать старые логи каждую неделю :-)
Все вопросы, замечания и предложения присылайте Евгению Цымбалюку на mueller_dic@koi.chat.ru
#bn { DISPLAY: block } #bt { DISPLAY: block }
Начало работы
Редактор vi позволяет создавать новые файлы и редактировать существующие. Для запуска vi используйте команду vi сопровождаемую именем файла. Например для редактирования файла temporary наберите vi temporary и нажмите клавишу "Enter". Можно запустить vi без имени файла - в этом случае для сохранения результатов работы сообщите имя файла редактору позже.
Когда вы запускаете vi - на экране с левой стороны вы видите тильды (~). Так обозначаются пустые строки. В нижней части экрана отображается имя текущего файла и размер :
"filename" 21 lines, 385 characters Если это новый файл сообщение будет выглядеть следующим образом :
"newfile" [New file] При запуске vi без имени файла - нижняя часть экрана будет пустой. Если не отображается одно из этих сообщений - возможно у вас неверный тип терминала. Наберите :q и "Enter" для выхода из vi и установите поддерживаемый тип терминала. Если не знаете как - спросите совет у лаборанта.
Напечатать сначала третье, а затем второе поля каждой строки
SED: /[^ ]* [ ]*\([^ ]*\) [ ]*\([^ ]*\).*/s//\2\1/p (30.5 c.)
AWK: {PRINT $3 $2} (38.9 c.)
SED: /[^ ]* [ ]*\([^ ]*\) [ ]*\([^ ]*\).*/s//\2\1/p (30.5 c.)
AWK: {PRINT $3 $2} (38.9 c.)
Напечатать третье поле каждой строки
SED: /[^ ]* [ ]*[^ ]* [ ]*\([^ ]*\).*/s//\1/p (29.0 c.)
AWK: {PRINT $3} (33.3 c.)
SED: /[^ ]* [ ]*[^ ]* [ ]*\([^ ]*\).*/s//\1/p (29.0 c.)
AWK: {PRINT $3} (33.3 c.)
Напечатать все строки, содержащие "olga", "mike" или "mal"
SED: /olga/p
/olga/d
/mike/p
/mike/d
/mal/p
/mal/d (15.8 c.)
AWK: /olga\bverb mike\everb mal/ (29.9 c.)
SED: /olga/p
/olga/d
/mike/p
/mike/d
/mal/p
/mal/d (15.8 c.)
AWK: /olga|mike|mal/ (29.9 c.)
Напечатать все строки, содержащие "olga"
SED: /olga/p (11.6 c.)
AWK: /olga/ (25.6 c.)
Наращиваем мускулы Макросы и Shell
Надеюсь, мне удалось продемонстрировать, если и не все богатство штатных возможностей редактора NEdit, то - изрядную его долю. Однако величие программы в том, что штатными средствами его функциональность не исчерпывается. Поскольку может быть почти неограниченно наращена с помощью внутреннего языка макрокоманд - раз, и с помощью подключения скриптов командной оболочки - два.
Вкратце о возможности создания собственных макросов (путем написания их кода руками) я уже упоминал. Однако есть и другой способ, который для начала может оказаться более простым - протоколирование действий. Для этого требуется всего-навсего:
включить режим протоколирования (через меню Macro - Learn Keystrokes или через комбинацию Alt+K); произвести посредством клавиатуры (но не с помощью мыши!) все необходимые действия в той последовательности, в какой мы хотим их сохранить на будущее; завершить режим протоколирования (через меню Macro - Finish Learn или повторным нажатием комбинации клавиш Alt+K); в случае ошибки при наборе команд - прервать протоклирование (через меню Macro - Cansel Learn) и, включив протоклирование по новой, повторить требуемые действия уже без ошибок.
Запротоколированная последовательность действий будет фуркционировать в течение данного сеанса работы с NEdit. И может быть вызвана первый раз через меню Macro - Reply Keystrokes и, в дальнейшем, через Macro - Repeat. Однако при следующем запуске NEdit будет утрачена.
Чтобы этого не случилось, следует сохнанить ее в меню для потомства. Для этого, успешно завершив протоклирование данного макроса, отправляемся в меню Preferences, выбираем там пункт Default Settings, а в нем - опцию Customize Menu. Каковая, в свою очередь обнаруживает, как уже говорилось, пункт Macro Menu, вызывающий панель Macro Commands.
В списке доступных команд (в левой части панели) фиксируемся на пункте New. В поле Menu Entry задаем название команды и, при необходимости, название более высокого уровня для группы сходных команд, например, таким образом: Group commands>Command1
(без пробелов перед и после знака >). Здесь же можно приписать команду к какому-либо из доступных языковых режимов, например, Group commands>Command1@SGML/HTML
будет указывать, что данная команда активизируется только при выборе языкового режима SGML/HTML.
Затем заполняем поле Accelerator. Здесь за нашей командой можно закремить какую-либо клавишу (из числа, например, функциональных, или Windows-клавиш) или их комбинацию: например, сочетание клавиш Alt или Ctrl, возможно, в сочетании с Shift, с какой-либо буквой, желательно, имеющей мнемонический смысл.
Для этого достаточно просто зафиксировать зафиксировать курсор в поле Accelerator и нажать требуемую клавишу (например, F12) или их комбинацию (скажем, Ctrl+литера). Следует только внимательно следить, чтобы эта клавишная комбинация не использовалась для вызолва штатных функций NEdit: в этом случае приоритет в любом случае будет за последними, а, возможно, клавишная комбинация не будет вызывать ни старого, ни нового закремленного действия.
Вслед за этим можно заполнить поле Mnemonic, введя в него какую-либо букву из имени нашей команды (как оно указано в поле Menu Entry). При вызове меню буква эта будет подчеркнута и, теоретически, может использоваться для быстрого вызова команды (сочетанием ее с клавишей Alt). Однако на деле это работает далеко не всегда. Вернее, почти всегда не работает, поскольку болшинство букв латинского алфавита уже задействованы для штатных команд NEdit.
Наконец, последнее из предварительных действие - это включение, по потребности, переключателя Requires Selection. Он предназначен для команд, которые осуществимы только с предварительно выделенными фрагментами (типа компирования, вырезания и т.д.).
А вот теперь нажимаем экранную клавишу Paste Learn/Replay Macro (правой части панели). И текст макроса волшебным образом появляется в поле Macro Command to Execute. Где может быть любым образом отредатирован, дополнен, сокращен и т.д. После чего жмем клавишу OK, выходя их режима редактирования Macro Menu - и с удовольствием и пользой применяем новую функцию на практике. Если все работает нормально - сохранаяем текущюю ситуацию через Preferences - Save Defaults для увековечивания внесенных нами изменений.
Каковые, как уже говорилось, фиксируются в секции nedit.macroCommands:
файла . nedit из пользовательского каталога. Где также могут быть отредактированы непосредственно.
Таким образом можно насытить меню редактора NEdit командами для выполнения часто требуемых, но отстутствующих в штатном комплекте действий. Например, как будет показано ниже, для ввода тэгов HTML. Однако и этого может показаться недостаточным для полного счастья. Например, возникнет потребность в систематическом исполнении каких-либо внешних программ. Например, команд оболочки.
Конечно, на сей предмет можно прибегнуть к стандартному окну термиала - во-первых, к строке минитерминала (вызываемой через меню Shell - Execute Command, или клавишной комбинацией (Alt+X) - во-вторых, и к непосредственному вводу команд в поле редактирования NEdit с последующим их запуском (через меню Shell - Execute Command Line) - в третьих. Однако все это - не предел комфорта.
К тому же подчас необходимо, чтобы команда оболочки выполнялась в отношении редактируемого в данный момент в NEdit документа. Примером чего служит приведенная в прошлом разделе команда ispell для проверки орфографии. И тут нам на помощь приходит возможность редактирования меню Shell (через Preferences - Default Settings - Customize Menu - Shell Menu).
Выбрав соотвествующие пункты приведенной последовательности, вызываем панель Shell Commands и выбираем из списка доступных команд пункт New. Подобно тому, как это проделывалось для макросов, заполняем поля Menu Entry, то есть имени команды (также, возможно, иерархически построенного и привязанного к языковому режиму), Acceleretor (для закремления комбинаций клавиш) и Mnemonic (для выделения литеры быстрого вызова).
Затем определяемся c входными элементами команды в строке переключателей Command Input. Здесь можно предписать команде исполняться для выделенного фрагмента (selection), текущего окна (window), каждого элемента документа (either) или ни для чего (none). Объяснить смысл каждого переключателя в общем виде я несколько затрудняюсь, но на практике смысл их в отношении каждой конкретной команды обычно достаточно прозрачен.
Аналогично - и с выходными элементами команды. Каковые могут быть показаны в текущем или новом окне, а также в виде диалоговой панели.
Следующая ниже группа переключателей при установке в положение On предписывает:
замещать элемент ввода элементом вывода (Output replace input); сохранять текущий файл перед выполнением команды (Save file before executing command); перечитывать его же после выполнения таковой (Re-load file after execute command).
Определившись и с этим, можно непосредственно задавать команду вместе со всеми требуемыми параметрами и их значениями. Это делается в поле ввода команды (Shell Command to Execute), точно также, как в командной строке консоли или терминального окна.
Однако можно и набрать команду непосредственно в поле редактирования NEdit, после чего просто скопировать (с помощью мыши или клавишных комбинаций) ее в поле ввода команды. Преимущество последнего способа в том, что предварительно (с помощью меню Shell Execute Command Line) можно проверить работоспособность команды и, руководствуясь сообщениями об ошибках, ее отредактировать. Можно, разумеется, и просто скопировать успешно запускаемую команду и окна терминала...
Завершив создание новой команды, принимаем введенные изменений (через экранную кнопку Apply) или выходим из режима редактирования Shell через OK. А, выполнив проверку правильности созданной команды, сохраняем ситуацию (через Save Defaults) для использования в дальнейшем.
Наследие Emacs
Однако уже первое знакомство с TeXmacs убеждает в самостоятельном характере этой программы, который подчеркивается ее оригинальным (и весьма приятным) графическим интерфейсом. Более того, признаки влияния Emacs в ней отнюдь не бросается в глаза, если не считать заимствованной из этого редактора системы и некоторых рудиментов концепции буферов. То и другое, скажем так, терпимо, хотя и не представляется особенно полезным. Ведь потребность в визуальных редакторах обычно возникает у недавних Windows-мигрантов, а не у людей, досконально освоивших Emacs со всеми его клавиатурными комбинациями. Ну а список буферов в TeXmacs всё равно ограничивается окнами открытых документов, так что заимствованный из Emacs пункт меню можно было бы с успехом переименовать в и переместить из начала строки меню куда-нибудь поближе к ее концу.
Правда, есть у TeXmacs и еще одна черта, роднящая его не только с Emacs, но и с консольными редакторами вообще. В программе практически полностью отсутствуют диалоговые окна, так что в тех случаях, когда вызванная тем или иным способом команда требует задания каких-либо параметров, общение с пользователем происходит через строку состояния. Что, конечно, не очень удобно. Например, если пользователь выберет в меню команду , ему придется последовательно отвечать на вопросы о величине каждого из четырех полей, не забывая присовокуплять к введенной цифре название единицы измерения (например, cm, mm или in). Впрочем, похоже, что это не концептуальная особенность программы, а просто следствие нежелания автора пользоваться общераспространенными графическими библиотеками, типа gtk или motif.
Однако родство с Emacs станет по-настоящему очевидным, когда у нас возникнет желание заняться настройкой программы. Как выясняется, никаких интерактивных средств на сей случай не предусмотрено. Правда, в строке меню имеется пункт под названием , но он, во-первых, весьма беден по содержанию, и, во-вторых, установленные в нем параметры (можно, например, поменять язык интерфейса программы) действуют только на текущий сеанс. Что же, залезаем в программный каталог TeXmacs в надежде найти что-нибудь вроде конфигурационного файла (отметим, что имя этого каталога хранится в переменной $TEXMACS_PATH и соответствует /usr/share/TeXmacs, если программа устанавливалась из бинарного пакета; в противном случае придется поискать где-то в районе /usr/local/lib). На первый взгляд - абсолютно ничего. Так можно провести некоторое время в недоумении, пока не сообразишь присмотреться к каталогу $TEXMACS_PATH/progs, в котором обнаруживается целый куст инициализационных сценариев. Эти файлы имеют специфическое расширение .scm, но написаны они, по существу, на диалекте макроязыка Emacs lisp.
Правда, разобраться в содержимом папки progs будет несколько легче, чем в аналогичном хозяйстве для Emacs. Всё-таки сценариев в данном случае не так уж много, и они хорошо систематизированы. Кроме того, в TeXmacs нет ничего похожего на компилированные файлы .elc, назначение которых бывает затруднительно определить, если под рукой нет исходников. С другой стороны, расплатой за читабельность кода является довольно продолжительное время, уходящее на его обработку в процессе загрузки программы. Но так или иначе, а было бы недурно отыскать хоть какие-нибудь указания на методику обращения с этими файлами в документации к программе. Увы, автор программы, по-видимому, не предполагал, что потребность в информации такого рода может возникнуть у рядовых пользователей. Иначе чем объяснить то обстоятельство, что редактировать нам придется именно те файлы, которые находятся в программном каталоге TeXmacs? Ведь ничего похожего на файл ~/.emacs, который бы специально предназначался для задания пользовательских настроек, здесь не обнаруживается.
Настраиваем NEdit, или HTML-редактор своими руками
Алексей Федорчук
fedorchuk@geo.tv-sign.ru, http://linuxsaga.newmail.ru/
В предыдущей статье, посвященной UNIX-редактору NEdit*, автор попытался продемонстрировать если и не все богатство штатных возможностей NEdit, то buono parte (т. е. изрядную их долю). Однако подлинная ценность этого редактора состоит в том, что ее функциональность можно почти неограниченно наращивать с помощью внутреннего языка макрокоманд и с помощью подключения скриптов командной оболочки. Начнем с более простого способа, коим представляется создание макрокоманд.
*А. Федорчук. Текстовый редактор NEdit - на пути к идеалу. Byte/Россия, №12, декабрь 2000.
Настраиваем NEdit
Я уже говорил, большая часть настроек редактора NEdit сконцентрирована в пункте Preference главного меню. И даже кратко перечислил возможности натсройки текущей сесии. Однако нас больше интересует не сиюминутный результат настройки, но ее долгострочная перспектива. Для чего следует рассмотреть подпункт Preference - Default Settings. Содержание его близко подпунктам меню Preference и включает установки:
языкового режима (Language Modes); включения/выключения автоматических отступов (Auto Indent); режима переноса слов (Wrap); Tag Collisions; величины табуляции (Tabs); экранного шрифта (Text Fonts); настройки меню (Customize Menus); режима поиска (Searching); подсветки синтаксиса (Syntax Highlighting); переключателей вывода строки состояния (Statistics Line), строки поиска (Incremental Search Line) и нумерации строк (Show Line Numbers); резервного копирования (Make Backup Copy); Show Matching (...) Sort Open Prev. Menu; Popups Under Pointer; выдачи предупреждающих сообщений (Warning); начального размера окна при запуске NEdit (Initial Window Size).
Большинство из этих пунктов заслуживают того, чтобы задержать на них внимание. Чем мы и займемся, хотя и не в иной несколько последовательности. Но начнем по порядку, с языкового режима -
Настройка переменных редактора Emacs.
Другая частая причина редактирования файла .emacs заключается в изменении значений переменных. Процедуры Emacs используют в процессе работы переменные. Поэтому, изменяя значения встроенных переменных, можно влиять на поведение Emacs.
Некоторые переменные содержат числовые значения. Например, переменная next-screen-context-lines содержит количество строк данного экрана, остающихся при нажатии клавиш Page Up или Page Down. Если значение данной переменной - 2, то при нажатии одной из этих клавиш на экране останутся две строки от предыдущего экрана. Чтобы проверить значение данной переменной, введите C-h v, а затем имя переменной.
Значение переменных можно менять, если нажать M-x, а затем в командной строке ввести set-variable. Нажмите Enter, и Emacs запросит имя устанавливаемой переменной. После ввода имени Emacs запросит новое значение переменной.
Это - достаточно многоходовая комбинация, особенно если учесть имя переменной next-screen-context-lines. Если при каждом входе в Emacs, нужно устанавливать значение данной переменной равное 1, воспользуйтесь функцией Emacs LISP setq, чтобы автоматизировать данный процесс. Добавьте следующую строку в файл .emacs:
(setq next-screen-context-lines 1)
Не все переменные поддерживают числовые значения. Некоторые, такие как load-path, являются символьными переменными. load-path - список подкаталогов, куда обращается Emacs, когда необходимо загрузить файл, содержащий LISP-программу. Как будет показано в главе "Редактирование Документов SGML в редакторе Emacs и PSGML", при работе с PSGML нужно будет изменить значение переменной load-path.
Многие переменные Emacs являются Булевыми. Булева переменная (названная по имени английского математика Джорджа Була, жившего в 19-м веке) - подобна выключателю, который может иметь только два положения: вкл. или выкл. Emacs использует большое количество Булевых переменных, что дает возможность гибкой настройки его работы. Например, можно задать, чтобы при пошаговом поиске (C-s или C-r) Emacs осуществлял поиск либо с учетом, либо без учета регистра.
Управлять чувствительностью к регистру можно меняя значение переменной case-fold-search. Чтобы заставить Emacs игнорировать значение регистра при поиске, добавьте следующую строку в файл .emacs:
(setq case-fold-search t)
И наоборот, чтобы задействовать чувствительность к регистру в процессе поиска, установите переменной значение выкл.:
(setq case-fold-search nil)
В других языках программирования Булевым переменным в значениях "вкл." и "выкл.", часто соответствуют значения переменных "true" и "false" или "1" и "0". Emacs, в соответствии с традициями LISP, использует для тех же целей "t" и "nil". Причем значение "t" ("истина"), является просто соглашением: все, что не "nil" ("ложь"), то "t"("истина"). Об этом нужно помнить при чтении документации по Emacs, в которой редко рекомендуется устанавливать значение переменной равной "t". Чаще можно встретить рекомендацию установить переменной значение "non-nil" ("t") для одного случая и значение "nil" для другого.
Чтобы сохранить клавиатурные макросы в файле ".emacs" так, чтобы можно было использовать макрокоманду без дополнительного переопределения, используется команда insert-kbd-macro, которая добавляет эквивалент макроопределения, написанный на Emacs LISP, в текущий буфер. Рассмотрим пример.
Удобная макрокоманда для пользователей SGML быстрый ввод комментариев. Чтобы определить макрос и начать запись макрокоманды, сначала нажмите C-x (, а затем наберите
и нажмите клавишу перемещения курсора влево четыре раза. Это нужно для того, чтобы поместить курсор туда, откуда начинается печать комментария. Закончите запись макроса нажатием C-x ).
Чтобы присвоить записанной макрокоманде имя, нажмите M-x и наберите в командной строке минибуфера name-last-kbd-macro. Допустим это имя - sgml-comment.
Затем, отредактируйте файл .emacs, или его эквивалент в операционной системе. Вставьте пустую строку, куда позднее будет вставлено макроопределение. Нажмите M-x, а затем в командной строке минибуфера введите команду insert-kbd-macro. Emacs запросит имя вставляемой макрокоманды, наберите sgml-comment. Появится следующее:
(fset 'sgml-comment [?< ?! ?- ?- ? ? ?- ?- ?> left left left left])
Теперь в среде Emacs появилась новая команда sgml-comment. Установите новой команде комбинацию клавиш C-c о. Для этого в файл .emacs добавьте строку
(global-set-key "^Co" 'sgml-comment)
Комбинация C-c о не связана ни с какой существующей функцией Emacs. Сохраните файл .emacs. Выйдите из Emacs и запустите его снова. Опробуйте новую сохраненную макрокоманду в действии.
Настройка редактора Emacs.
Emacs обладает весьма гибким окружением, которое может быть легко приспособлено для выполнения конкретных задач. Например, Emacs позволяет запоминать последовательности комбинаций клавиш, чтобы не нажимать много раз подряд одни и те же кнопки. Emacs позволяет также изменять окружение через написание процедур на языке программирование Emacs LISP. Описанию данных возможностей посвящена эта глава.
Настройка 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 (идентификатор) может уникальным образом идентифицировать один абзац, или целый раздел, примечание, иллюстрацию, задание, -- любой элемент, как в этом примере:
Информация
<
Так как идентификаторы являются машинно-читаемыми, они могут связывать между собой информацию и использоваться для разнообразного управления ей. Например:
Контролировать безопасность доступа к информации, позволяя только определенным людям просматривать или изменять ее.
Автоматизировать перемещение информации -- например, обновление данных в одном месте может инициировать обновление той же информации в других приложениях.
Разделяемость
Возможность работы со структурированными компонентами документа позволяет строить целый документ из составных частей, разбросанных по организации. Это позволяет пользователям делиться информацией без ее дублирования.
Мобильность
В информационных сетях, объединяющих разнообразные компьютеры, операционные системы и приложения, мобильность становится ключом ко всеобщей доступности информации. Поскольку 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 определение, подобное приведенному ниже
ключевое слово SYSTEM сообщает программному обеспечению, что DTD находятся в файле "mybook.dtd". При использовании вышеупомянутого объявления в большинстве операционных систем программное обеспечение ищет данный файл в каталоге файла документа. В некоторых системах можно задать полное имя файла:
Некоторое программное обеспечение SGML более придирчиво относится к имени пути, ожидая встретить в имени пути прямые слеши "/", характерные для UNIX, вместо обратных "\", даже если используется система DOS или Windows. У PSGML не возникает никаких проблем со стилем DOS.
Идентификатор PUBLIC популярен при использовании известных элементов DTD. Объявление DOCTYPE включает строку после слова PUBLIC, как, например, в случае с DocBook DTD:
Тем не менее приложение 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"
Обратите внимание, что вход DocBook не содержит никакого имени пути, указывая тем самым, что файл docbook.dtd находится в том же самом каталоге, что и файл catalog, в то время как вход HTML включает полное имя файла.
Таким образом, необходимо указать 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
ПРИМЕЧАНИЕ: При установке окружения переменной синтаксис UNIX зависит от используемой оболочки shell.
Учтите, что элемент DTD может содержать объявления для установок объекта (ENTITY), которые он сам же использует, и что нужно сообщить приложениям, где найти эти установки объекта. Например, элемент DTD включает следующее объявление объекта, чтобы позволить использование в документах набора символов ISO:
Тогда в файле catalog нужно сделать вход, чтобы указать местоположение этого символьного объекта. В файл catalog нужно добавить следующую запись:
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, то появится соответствующее сообщение об ошибке в окне вывода.
Общая структура 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] заголовки или номера страниц. Знак процента представляет комментарий, который продолжается до конца соответствующей строки.
Общая структура
Каждый документ 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
Обзор команд редактора 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-браузеров. "Поддержка других форматов" означает умение показывать документы в других форматах. "требует X11" означает, что программа работает только в среде X Window. "Навигация в стиле info" означает, что в программе дублируется команды навигации info(1).
Приложение
Поддержка других форматов
требует X11
Навигация в стиле 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 do
txt2html 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
Описательная разметка
Система с описательной разметкой использует коды разметки, которые просто предоставляют названия для категоризации частей документа. Коды разметки, такие как или \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
содержимое
Создает (гипер)ссылку на место в текущем документе, задаваемое через атрибут target.
ulink
содержимое
Создает гиперссылку на документ WWW, указанный в полном URL. Полный URL должен задавать протокол, например http://.
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.
Перемещение курсора в режиме 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.
Перемещение курсора
Большинство версий редактора 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 - на слово влево
} - на параграф вперед (параграф - это блок текста, отделенный пустой строкой)
{ - на параграф назад
[[ - в начало текста
]] - в конец текста
Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.
Перемещение по файлу
^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" устанавливает текущую строку вверх экрана; "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-текст.
Песнь о Joe
Автор: Алексей Федорчук, alv@newmail.ru
Опубликовано: 05.03.2002
Оригинал: http://www.softerra.ru/freeos/16431/
Думается, не будет большим преувеличением сказать, что из всех приложений Unix- и Unix-подобных систем важнейшим является текстовый редактор. С его помощью (а иногда — и исключительно при его посредстве) настраивается система, пишутся скрипты и сценарии, составляются программы для пользователей. Некоторые из которых используют текстовый редактор и по прямому назначению — для составления просто текстов.
И не случайно текстовые редакторы среди Unix-пользователей стали чуть ли не предметом религиозных войн. Немало копий (и клавиатур) было сломано вокруг темы emacs vs. vi, сопоставимой по накалу страстей только с антитезой "мастдай" — "банзай".
Действительно, оба гиганта мира текстовых редакторов, и vi (вернее, его современное воплощение — Vim), и (особенно) Emacs по своим функциональным возможностям далеко вышли за рамки программ этого класса [1]. Они подробно описываются в любой толстой книге про Unix/Linux, им посвящена многочисленная специальная литература, существуют тематические сайты и конференции, где обсуждаются детали конфигурирования этих редакторов и различные аспекты их применения.
Однако в дыму этих баталий затерялись иные представители славного клана редакторов. И один из них — скромный труженик Joe. Он не претендует, как Emacs, на роль операционной среды, не покидая которую, можно получать и отправлять почту, просматривать новости и web-страницы, составлять программы и верстать в TeX'е. В отличие от Vim, не рассчитывает он и на признание в качестве универсальной среды программирования на любых изобретенных человечеством языках. Однако он честно выполняет свой долг на ниве сочинения повествовательных текстов, особенно если они требуют некоторого оформления.
Обоснованию этого я и посвящаю свою заметку. Однако прежде — пара слов о том, каким видится идеальный текстовый редактор [2]. Перво-наперво не худо, если он позволяет вводить текст и осуществлять навигацию по нему, желательно — простым и интуитивно понятным способом. Далее, требуются возможности собственно редактирования — выделения, копирования, вставки, перемещения текстовых фрагментов любого объема. И желательно — в нескольких одновременно открытых документах. Затем — функции поиска и замены, в том числе — и многострочных фрагментов. Наконец, для полного счастья — средства автоматизации, то есть встроенный язык макросов/скриптов/сценариев. Причем — достаточно простой в освоении и использовании, во-первых [3]. А во-вторых, чтобы эти самые макросы/скрипты/сценарии можно было бы при необходимости слепить на скорую руку, а уж потом доводить до кондиции по потребностям. Иными словами — требуется средство протоколирования действий пользователя.
Так вот, если обратиться к Joe — то все это в нем есть. Более того, его средства представляют собой разумный компромисс между функциональным богатством Vim и простотой ee. Он не сложней в освоении, чем редакторы типа le или mcedit, обеспечивая, при минимальном навыке, много большую скорость обработки текста [4].
Однако некоторые усилия на изучение Joe затратить все же необходимо [5]. И первое, что тут требуется уяснить совершенно четко — Joe есть типичный представитель семейства командных редакторов. То есть все действия по редактированию текста осуществляются соответствующими встроенными командами, к которым привязаны комбинации клавиш. В сущности, это — макросы на собственном языке Joe. И, с одной стороны, система команд может быть сколь угодно наращена, с другой — клавишные комбинации для них могут быть переопределены произвольным образом.
Последнее, впрочем — не нужно: структура предопределенных по умолчанию клавишных команд проста и логична. За простыми и частыми действиями для навигации и редактирования закреплены двухклавишные комбинации — как правило, Control (изредка — Escape) плюс литера (последняя — обычно с мнемоническим смыслом). Для более сложных или редких действий (например, операций с блоками) используются трехклавишные комбинации — Control+K с последующей литерной.
Все клавишные комбинации не чувствительны к регистру и (что особенно важно в наших условиях) — к раскладке клавиатуры (латиница/кириллица, например). Единственное усилие для трехклавишных комбинаций — дополнительное нажатие Control'а одновременно с литерной при русской раскладке.
Я не буду останавливаться на описании клавиатурных команд — исчерпывающую справку по ним можно получить из Help-системы, выводимой на экран комбинацией Control+K -> H (рис. 1). Посмотрим лучше на другие возможности Joe.

Рисунок 1. Редактор Joe с системой помощи
Это — многозадачный редактор, количество одновременно открытых документов лимитируется только ресурсами машины. Причем они одновременно могут просматриваться в отдельном окне. Правда, только горизонтально ориентированном, и в ограниченном количестве — минимальный размер окна равен трем строкам. Возможен и просмотр разных частей одного документа в самостоятельных окнах. Обмен данными между документами — как операциями выделения/копирования/вставки/перемещения блоков, так и с помощью стандартной службы консольной мыши.
Непосредственно из Joe, без выхода, можно обращаться к командам Shell'а, причем — различными способами. Можно перевести его в фоновый режим (комбинация Control+K -> Z) и выполнять любые действия в командной строке. А можно — прямо в редакторе выполнить единичную команду (после нажатия клавиш Escape -> ! -> команда.
Есть и более интересная возможность: открытие внутри Joe, посредством комбинации Control+K — ' (апостроф), самостоятельного окна с полноценной командной средой (рис. 2). Здесь можно выполнять любые команды с выводом их результатов на экран и последующим сохранением в виде текстового файла: неоценимо как при создании всякого рода скриптов, так и при файловых операциях.

Рисунок 2. Редактор Joe с окном командной среды
Если штатных возможностей редактора Joe оказывается недостаточно, их можно нарастить с помощью внутреннего языка макрокоманд. При этом изучать его для начала не обязательно — достаточно включить режим протоколирования (комбинацией клавиш Control+K -> [), выполнить интерактивно все требуемые действия и присвоить созданному макросу номер (от 0 до 9), который и используется для его воспроизведения (комбинацией Control+K -> #).
Далее, раз запротоколированные макрокоманды можно сохранить для на века. Для чего их следует просто поместить в соответствующую секцию конфигурационного файла (~/.joerc) и закрепить за каждым любую свободную клавишу или их комбинацию. Таким образом можно легко автоматизировать процесс ввода тэгов HTML или XML, конструкций JavaScript, скриптов командной среды, разметки документов TeX, а также всего, что потребуется впредь. Превратив Joe в специализированный инструмент для решения почти любых задач.
Если добавить, что глобальные опции Joe (переносы слов, автоматические отступы, условия маркирования блоков и многое другое) могут быть установлены ключами при его запуске, настроены интерактивно во время сеанса или заданы раз и навсегда в конфигурационном файле (причем — для разных типов документов по разному), вывод становится очевидным: он отличается близким к оптимальному соотношением простоты, функциональности и настраиваемости. Благодаря чему его можно найти в любом дистрибутиве Linux, в виде порта или пакета для FreeBSD или OpenBSD (имеются даже DOS- и Windows-версии). Я же, со своей стороны, беру на себя смелость рекомендовать его всем любителям работы в текстовом режиме, буде до сего времени они не приобрели иных пристрастий.
[1] — Относительно Emacs мне встречалось даже выражение "операционная среда". Если вы помните, именно этим термином величалась Windows до 95-й своей ипостаси…
[обратно к тексту]
[2] — Подчеркну еще раз — редактор именно текстов, а не исходников.
[обратно к тексту]
[3] — Не секрет, что для использования Emacs на полную катушку очень желательно умение программировать на LISP. Что, согласитесь, далеко не каждому юзеру по силам (да не каждому-то и нужно).
[обратно к тексту]
[4] — В этом отношении он практически не уступает Vim, считающемуся эталоном быстроты (имеется в виду именно быстрота обработки, а не быстродействие программы).
[обратно к тексту]
[5] — Впрочем, много ли есть программ, не требующих изучения вообще? Весь вопрос только в адекватности усилий результату. Так вот, Joe за прилежность в учении с лихвой отплатит эффективностью в деле.
[обратно к тексту]
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта "Софтерра" (http://www.softerra.ru/site/rules/)
Пишем заметку
С помощью DocBook можно разметить два вида документов : заметки и книги. Из-за схожести в структуре этих документов, я буду использовать заметку. Перед написанием примера документа рассмотрим основы DocBook.
DocBook это SGML - приложение, такое же как HTML. Но существует и XML версия DocBook. XML - версия более строгая, но более легкая в понимании и изучении. Так как XML также является SGML - приложением, все программые средства SGML могут быть использованы. Основное различие между SGML и XML состоит в следующем (применимо для всех XML - приложений).
XML элементы должны быть всегда закрыты XML элементы должны иметь правильную вложенность Это означает, что вы не можете использовать
как в HTML, вы должны использовать
. Второе требование означает, что вы не можете использовать следующую конструкцию : click here , вы должны использовать правильную вложенность : click here.
Теперь, после рассмотрения этих деталей, мы можем приступить к разработке DocBook документа. Writing DocBook articles This article describes how you can use DocBook to develop PDF documents and will cover tools you need to edit DocBook articles and tools to translate them to PDF documents. Egon Willighagen
Ничего сложного - мы начали заметку с заголовка, короткого резюме, даты написания и имени автора.
Далее добавляем разделы заметки, используя соответствующие элементы : Writing DocBook articles ... the articles header ...
Introduction
... other sections ...
Мы добавили раздел Введение. Дополнительные элементы могут быть использованы для добавления разделов - Результаты, Выводы и т.д.
+ПячЮК вщпзчр тшО БузАБп
бузАБ р яЦДуЮпЕ Emacs -- МБч ъчАшутчрпБушЛщчАБЛ рчАЛэьяьБщКЕ япыБ. ¦пжтКы япыБ эчжуБ АчтуЮжпБЛ чтьщ вщпз ASCII. ¦чъЦАБьэК зпз ЦъЮпршОНИьу вщпзь ASCII (А рчАЛэуЮьГщКэь зчтпэь чБ 000 тч 037, ь 0177), Бпз ь ъуГпБщКу ASCII-вщпзь (А зчтпэь чБ 040 тч 0176); чтщпзч, ЦъЮпршОНИьу вщпзь щу ьв ASCII щу эчсЦБ ъчОрьБЛАО р яЦДуЮу. ¦ЮЦсьу Дшпсь-эчтьДьзпБчЮК, ьАъчшЛвЦуэКу ъЮь ррчту А зшпрьпБЦЮК, Бпзьу зпз Meta, Бпзжу щутчъЦАБьэК р яЦДуЮпЕ.
+узчБчЮКу ЦъЮпршОНИьу вщпзь ASCII АшЦжпБ р БузАБу тшО чАчяКЕ Фушуы ь ьэуНБ чАчяКу щпврпщьО. +пъЮьэуЮ, вщпз щчрчы АБЮчзь (рчАЛэуЮьГщКы зчт 012) ьАъчшЛвЦуБАО р яЦДуЮу тшО впруЮХущьО АБЮчзь, п Аьэрчш БпяЦшОФьь (рчАЛэуЮьГщКы зчт 011) ьАъчшЛвЦуБАО тшО АчвтпщьО чБАБЦъп тч АшутЦНИуы ъчвьФьь БпяЦшОФьь (чяКГщч ГуЮув зпжтКу 8 АБчшяФчр). аэчБЮьБу Юпвтуш .
©уГпБщКу вщпзь, щу рЕчтОИьу р ASCII, Бпзжу эчсЦБ ъчОршОБЛАО р яЦДуЮпЕ. ¦чстп рзшНГущК эщчсчяпыБщКу вщпзь, рК эчжуБу ьАъчшЛвчрпБЛ шНяКу ъуГпБщКу щу-ASCII-вщпзь, зчБчЮКу Emacs ъчттуЮжьрпуБ. +щь ьэуНБ зчтК, щпГьщпНИьуАО чБ 256, ьшь рчАЛэуЮьГщчсч 0400, ь зпжтКы ьв щьЕ ъЮутАБпршОуБАО зпз ъчАшутчрпБушЛщчАБЛ трЦЕ ьшь ячшуу япыБ. аэчБЮьБу Юпвтуш .
¦Ашь рК рКзшНГьБу ъчттуЮжзЦ эщчсчяпыБщКЕ вщпзчр, Бч АэчжуБу ьАъчшЛвчрпБЛ БчшЛзч чтьщ пшДпрьБ щу-ASCII-вщпзчр, зпжтКы ьв зчБчЮКЕ рэуИпуБАО р чтьщ япыБ. ¦шО щьЕ ьАъчшЛвЦНБАО зчтК чБ 0200 тч 0377. аэчБЮьБу Юпвтуш .
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []
План действий.
С чего начать? Конечно же с настройки MySQL и установки словарей. А далее по необходимости доустановить J2RE 1.4 и/или Apache. Последовательность необходимых операций выглядит следующим образом:
Установка и настройка MySQL. Установка словарей. Установка и настройка PtkDic(*). Установка и настройка GtkDic(*). Установка J2RE 1.4 и JaLingo(*). Установка и настройка Apache с поддержкой PHP и phpMyLingvo(*). * -- опционально
Плюсы и минусы latex2html
Плюсы
Определяемые пользователям команды и окружения LaTeX дают возможность настроить все в соответствии с вашими требованиями. Вывод на печать максимально возможного качества. Позволяет работать с таблицами и графикой (в этой статье не рассматривается)
Минусы
"Несоответствие входных сопротивлений" между LaTeX и HTML, которое не может быть полностью устранено с помощью latex2html. Трудности и длительность усвоения LaTeX
Плюсы и минусы
За
Формат Texinfo: определяемые пользователем макросы (в этой статье не обсуждались) Вывод в формате TeX: совершенство верстки, фантастическое качество печатной версии Формат Info: альтернатива вездесущему HTML Программы просмотра Info: стандартизированная, быстрая и удобная навигация
Против
Формат исходного текста документов Texinfo:
Почему SGML а не HTML или какой нибудь другой формат ?
SGML предоставляет не только форматирование. Вы можете автоматически генерировать индексы, оглавления, и ссылки внутри документа или на внешние источники. Пакеты Jade и OpenJade позволяют вам экспортировать (далее это называется "визуализацией") SGML в LaTeX,info,text,HTML и RTF. Из этих базовых форматов вы можете затем создать другие, такие как : MS Word,PostScript,PDF и т.д. . Программы подобные Lyx, позволяют вам писать документы в формате TeX, затем экспортировать их в SGML и визуализировать из него в любой другой формат. SGML описывает как элементы работают а не на том как они выглядят. Он позволит вам писать документы быстрее, т.к. вам не нужно заботиться о размещении параграфов, размерах шрифтов и тому подобных вещах.Почему SGML?
Почему не Word? Потому, что это закрытый формат. Потому, что это формат одного приложения. Потому, что этого приложения нет под юниксами, с которыми я работаю. Потому, что это не текстовый формат. Потому, что нет средств автоматической генерации таких документов. Потому, что нет толковых средств управления версиями и коллективной работы. Потому, что это формат разметки печати, а не смысловой структуры, и нет возможности их соотносить. Потому, что при экспорте получается совершенно неудовлетворительный HTML. Потому, что качество верстки и печати ниже среднего.Почему не TEX? Потому, что это слишком низкоуровневый язык. Его не дашь в руки начинающему. Потому, что это формат разметки печати, а не смысловой структуры. Потому, что мало TEX-ориентированных редакторов. Потому, что нет удовлетворительных средств экспорта в Word.
Почему не HTML? Потому, что само понятие HTML сильно размыто гонкой WWW за коммерцией и войной производителей браузеров друг с другом. Потому, что HTML страдает все тем же недостатком: ориентирован на представление, а не на структуру. Потому, что он очень беден выразительными средствами, и отсутствуют возможности его расширения. Потому, что не решена проблема корректной русификации. Потому, что нет удовлетворительных средств экспорта в Word.
Почитать на ту же тему на сайте "Софтерра":
Вторая часть статьи, посвящена собственно взаимодействию с LaTeX, работе с несколькими кодировками и выбору шрифтов. Так же несколько слов о KLyX.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с (http://www.softerra.ru/site/rules/)
Первая часть статьи о подготовке текстов в LyX. Отличиях документов LyX и LaTeX. Настройке LyX.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с (http://www.softerra.ru/site/rules/)
Обзор весьма мощного и очень популярного текстового редактора Vim, с примерами работы и рассуждениями о том, что же должен уметь толковый текстовый редактор.
Продолжение разговора об отличном редакторе vim. С дополнениями и развернутыми примерами настройки.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с (http://www.softerra.ru/site/rules/)
Поиск и замена текста
Команда поиска в большинстве версий Emacs реализована в виде, так называемого, "инкрементного поиска" ("incremental search"). Нажмите C-s и введите образец для поиска в строку минибуфера "n". По мере ввода текста курсор будет перемещаться по тексту выделяя обнаруженные с образцом совпадения.Пример. Пусть требуется найти слово "hazel" в приведенном ниже тексте. После того, как в окне минибуфера будет напечатана буква "h", курсор перепрыгнет в следующую позицию после первой обнаруженной буквы "h" (см. рис. Результаты инкрементного поиска после ввода первого символа.).

Результаты инкрементного поиска после ввода первого символа.
После того, как будет набрана следующая буква - "a", курсор перепрыгнет в "n" слова "than" - следующую позицию после обнаруженного образца "ha" (см. рис. Результаты инкрементного поиска после ввода второго символа.).

Результаты инкрементного поиска после ввода второго символа.
Напечатайте "z" и курсор перейдет в "e" после фрагмента "haz" в слове "hazel" (см. рис. ).

Результаты инкрементного поиска после ввода третьего символа.
Если Emacs не смог найти образец в тексте, то в окне минибуфера появится соответствующее сообщение. Например, если вместо "haz" набрать "hazx", то в окне минибуфера появится сообщение:
| Failing I-search: hazx |
Если искомый фрагмент найден и нужно найти следующий, нажмите C-s еще раз. Чтобы остановить процесс поиска нажмите Enter.
Другая полезная клавиша при поиске - это клавиша Backspace. Ее используют, чтобы удалить последствия последней нажатой в окне минибуфера. Например, в рассмотренной выше ситуации если нажать Backspace после нажатия "z", когда Emacs нашел фрагмент "haz", курсор перепрыгнет обратно в слово "than", обнаруженное по фрагменту "ha".
Поиск по тексту в обратном направлении осуществляется точно также, как поиск в прямом направлении, с той лишь разницей, что для запуска команды поиска нужно нажать C-r. Точно так же поиск будет осуществляться в соответствии с вводимыми в образец буквами, пока либо Emacs не сможет найти образец в тексте, либо пользователь не прервет операцию поиска нажатием клавиши Enter. Точно также для поиска в обратном направлении работает клавиша Backspace.
В редакторе Emacs есть несколько команд осуществляющих операции замены (Search and Replace). Наиболее универсальная команда query-replace запускается при нажатии комбинации M-% или из пункта меню Query Replace... (меню Edit). При нажатии M-% в окне минибуфера появляется сообщение:
| Query replace: |
| Query replace my fault with: |
| Query replacing my fault with your fault: (? for help) |
| y | Заменить найденный фрагмент и искать следующий. Тот же эффект дает нажатие пробела. |
| n | Замену не проводить, искать следующий. |
| q | Замену не проводить. Прекратить операцию поиска. |
| ! | Заменить все обнаруженные в тексте фрагменты без дополнительного подтверждения. |
ПОИСК , И ЗАМЕНА
^S/^R Мягкий поиск вперед/назад DEL Вернуться ^G Прервать поиск ^S Повторить поиск M-% Поиск и замена query-display " " - выполнять замену, DEL прерватьсяПоиск текста
Редактор vi предоставляет два вида поиска : строк и символов. Команды "\" и "?" для поиска строк. При выполнении этих команд в нижней части экрана отображается строка введенная вами для поиска. Различие между командами "\" и "?" : "\" осуществляет поиск вниз по файлу, а "?" - вверх. Команды "n" и "N" повторяют поиск в том же или противоположном направлении соответственно. Некоторые символы имеют специальное значение в редакторе vi - поэтому перед ними должен быть введен символ \.Специальные символы :
^ начало строки. . любой один символ. * любое число символов. $ конец строки. [ определяет набор символов для поиска. Например : /f[iae]t определит любую комбинацию из следующих : fit fat fet или /a[^bcd] определит любую комбинацию кроме : ab ac ad. < начало или конец слова. Например : /\
Символьный поиск осуществляется в текущей строке командами "f" и "F". Команда "f" осуществляет поиск вперед, "F" - назад, курсор перемещается в позицию найденного символа.
Действие команд "t" и "T" аналогично действию "f" и "F". Различие между ними в положении курсора : после выполнения команды "t" курсор перемещается в позицию перед найденным символом, после выполнения команды "T" - после найденного символа.
Повтор поиска осуществляется командами ";" и ",". Команда ";" повторяет поиск в том же направлении, команда "," - в противоположном.
Установка переменной "ic" (:set ic) позволяет осуществить поиск не учитывая регистр.
, Повторить последнюю команду "f", "F", "t" или "T" в обратном направлении. / Искать определенную строку вперед по файлу. ; Повторить последнюю команду "f", "F", "t" или "T". ? Искать определенную строку назад по файлу F Искать определенный символ вперед в текущей строке. При успешном выполнении - курсор перемещается в позицию найденного символа. N Повторить последний поиск "/" или "?" исключая обратное направление. T Искать определенный символ вперед в текущей строке. При успешном выполнении - курсор перемещается в позицию после найденного символа. f Искать определенный символ в текущей строке. При успешном выполнении - курсор перемещается в позицию найденного символа. n Повторить последний поиск "/" или "?". t Искать определенный символ в текущей строке. При успешном выполнении - курсор перемещается в позицию перед найденным символом.
Полезные тэги
Для того, чтобы помочь честолюбивому автору DocBook-книг разобраться в множестве элементов, определяемых стандартом, предлагается набор полезных и употребительных тэгов.Политика
Осенью 2002 года RedHat выпустил в свет свой новый дистрибутив. Революционным в нем было равнение на кодировку UTF-8 (этакий Unicode начального уровня). Этот шаг был воспринят весьма неоднозначно в кругах российских гуру. Многие из них считают, что в Linux'e можно прекрасно жить и работать в koi8-r или в cp1251. Эта статья для тех, кто так не считает и по каким-либо причинам (это модно/можно открывать один и тот же файл в MS Notepad и в GNOME gedit/это что-то новенькое/и т.д.) хочет начать использовать эту кодировку.Я не создатель дистрибутивов, а простой (довольно ламернутый) пользователь Linux, который хочет просто удобно работать и быть совместимым с внешним миром. Поэтому я могу себе позволить быть сколь угодно критичным и высказывать мнения, от которых обычный UNIX-гуру начнет метать искры направо и налево. Честно говоря меня уже давно начал бесить зоопарк в различных кодировках. Тебе присылают документ в одной кодировке - надо перекодировать его в другую. Unicode как раз и нужен для того, чтобы исключить такие ситуации, ибо эта кодировка хоть и медленно, но таки становится стандартом (не без помощи XML, кстати).
Перед тем, как читать документ дальше, давайте остановимся на постулатах, на которых основывается этот документ:
1. koi8-r/cp1251/cp866/translit - полный отстой для старых перцев. Их (кодировки) надо "резать к чертовой матери, не дожидаясь перетонитов!"
2. UTF-8 и Unicode вообще - рулят адназначна.
3. (Опционально и на любителя) GNOME рулит!
Если вы согласны с 1 и 2 - читаем дальше.
Поля
Каждая сканируемая строка input рассматривается как состоящая из полей, разделенных разделительными символами (по умолчанию - пробел).На поля можно ссылаться из AWK программы следующим образом:
Строка может содержать максимально до 100 полей.
Полноэкранный редактор vi
Редактор vi - универсальный полноэкранный текстовый редактор в среде UNIX. Универсальность означает, что, во-первых, этот редактор есть во всех UNIX-подобных ОС и, во-вторых, этот редактор работает с практически любым видом терминала (ANSI, VT100, VT220, VT320, DEC, и т. д.).(База данных, содержащая описание известных системе терминалов находится в файле /etc/termcap.) Эта универсальность обернулась несколько непривычным (для пользователей DOS) пользовательским интерфейсом: для управления редактором используются лишь ``обычные'' кнопки клавиатуры (алфавитно-цифровые символы и знаки препинания).Имеющиеся на многих типах терминалов функциональные клавиши практически не используются. Если клавиатура терминала имеет стрелочные клавиши, то они используются, но, как будет видно ниже, в ограниченном контексте.
Получение значений атрибутов
конструкция @att возвращает значение атрибута att. Например:XSLT-преобразование:
Содержимое узла text корневого элемента:
Результирующий HTML-документ:
Если вы задумаете использовать атрибут color для вывода текста Hello World! соответствующим цветом, то сделать это можно двумя способами: создать переменную и использовать ее для задания цвета шрифта или воспользоваться элементом xsl:attribute.
Помощь при вводе ссылок на объект
Команда sgml-complete (М-Tab) помогает завершить ссылку на объект, тэг, или любой заранее определенный набор слов и символов. Ранее было показано, что PSGML может "дописывать" названия типа элемента. Аналогичный режим возможен при вводе ссылок.PSGML распознает режим ввода ссылок, когда пользователь вводит амперсанд. После этого можно M-Tab, и в отдельном окне появится список всех допустимых объекты. Если после амперсанда введено достаточное количество символов, то PSGML "допишет" название ссылки, как это происходит в случае с названиями элементов.
Команда sgml-complete "дописывает" также объявления разметки, которые чаще всего используются в DTD, чем в тексте документа. Например, введите "M-Tab. Откроется новое окно, содержащее следующий список возможных завершений:
| sgml | doctype |
| element | entity |
| usemap | shortref |
| notation | attlist |
| uselink | linktype |
| link | idlink |
Посчитать количество строк (input)
SED: $= (10.2 c.)AWK: END { PRINT NR } (15.0 c.)
SED: $= (10.2 c.)
AWK: END { PRINT NR } (15.0 c.)
POSIX locale
В POSIX(Portable Operating System) были определены средства локализации, названные locale
(к сожалению, не существует адекватного русского перевода этого термина). Locale (англ.) - местные особенности.
Locale - это такое системное средство (фича ;-) позволяющее настроить систему на работу с данными в конкретном национальном (местном) представлении. Отдаленно напоминает средство CodePage в MS-DOS или OS/2.
Средства POSIX locale охватывает немого больший круг понятий, чем просто работа с национальными .
Зачем ? Дело в том, что кроме собственно языка общения и алфавита, в разных странах различаются такие обычаи, как представление даты, времени, финансовых величин и т.д. Эти "культурные правила"
уже закреплены традицией и национальными стандартами, иногда довольно давно, поэтому при "локализации" программных продуктов существует необходимость в настройке их еще и на эти "культурные правила". В стандарте POSIX
культурные правила объединены в группы - категории локализации.
* ПРИМЕЧАНИЕ : В принципе, каких "культурных нюансов" можно найти много. См. например статью : Colors, Buttons, Words and Culture: Designing Software for the Global Community (копия здесь) или Internationalization. Но в большинстве случаев, для машинной обработки информации вполне хватает понятий POSIX locale.
Структурно, средства POSIX locale
состоят из следующих компонентов :
:
* * *
Существующая также "система управления сообщениями на национальном языке" : (Native Language Support) формально не входит в POSIX locale, хотя во многом дополняет функции locale.
Также довольно тесно пересекаются с locale
такие механизмы POSIX как поддержка многобайтных (multibyte) и "широких" (wide-char) символов. Эта связь не очень заметна для европейских языков, но в для поддержки алфавитов с большим числом знаков (японский ~2000, китайский ~8000, UNICODE ~25000) это становится жизненно необходимо.
* ПРИМЕЧАНИЕ : POSIX locale HЕ ИМЕЕТ накакого отношения к физическому в UNIX и к проблемам работы терминала, клавиатуры и печатающих устройств с национальными символами.
:) по функциям POSIX.1 :
, /isxxxx(),,
и т.д.
И конечно их исходные тексты (начиная с версии Linux libc 5.3.x или GNU libc 2.0.x).
В исходных текстах libc, man - примеры message catalog-ов.
HTML-версия GNU info есть например на
или локально : .
Перевод: (хост умер ?)
locale в библиотеке GNU libc и Linux libc :
и его доклад :
(ISO/IEC 9945-2:1988, 1990, 1992, 1996 от
* ISO и
* IEC или, что то же самое,
IEEE Std. 1003.2-1992) и POSIX.2a, POSIX.2b .
* IEEE
Hа утверждается, что это стоит денег, поэтому лучше всего поглядеть на
(там правда draft версии)
или соответственно, через WWW. Например :
- он же, через WWW виден как :
, далее :
e.t.c.
и прочие документы пограммы i18n. Ведет ее Keld Simonsen <> :
Русскиe charset ISO_8859-5, KOI8-R, CP1251, e.t.c.
Русская locale ru_RU.
POSIX
Сначала - немного ...Теперь по делу.
Для установки в POSIX-системе новой locale c другим набором символов (charset) применяется утилита
для компиляции Файла Описания Локализации и Файла Описания Набора Символов ().
$ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
Для проверки установленных в POSIX-системе charset-ов применяется утилита :
$ locale -m $ locale charmap
Для преобразования потока символов из одного charset в другой, в стандарте POSIX
существуют утилита и функция .
В системе существует утилита tcs.
Содержание
Last change : 08-10-1999
Последние советы
Итак теперь все ваши приложения могут работать с русским языком. Однако, некоторые приложения об этом не знают им надо помочь. Во всех случаях (по-крайней мере у меня) эта помощь сводилась к указанию какие шрифты ипользовать.GTK1-приложения: я использую два таких приложения - Ximian Evolution и Gimp. В Ximian Evolution русский язык включается так:
Tools -> Settings -> Fonts Preferences, где нужно выбрать любые шрифты на ваш вкус (я вот выбрал Arial) и указать кодировку ISO10646-1.
В gimp при нанесении текста на рисунок возникает практически такой же диалог, где нужно выбрать все тоже самое , что и в случае с Evolution.
GTK2-приложения: самое главное приложение - это gnome-terminal: Edit -> Current Profile -> Font и далее выбрать любой юникодный шрифт, содержащий русские буквы (я предпочитаю Lucida Console).
Page Generation: 0.174 Seconds
Последовательность вызова утилит LaTeX
Обычно файлы LaTeX имеют расширениеtex. Эти tex-файлы преобразуются в так называемые файлы, не зависящие от устройства (dvi). dvi файлы являются двоичным представлением исходного текста. Их можно просмотреть в консольном режиме с помощью dvisvga (при условии, что терминал поддерживает графику высокого разрешения), или, например, с помощью xdvi в среде X11. Часто файлы dvi преобразуют в Postscript с помощью dvips. Если предпочтителен формат PDF, то утилита pdflatex может создать pdf из tex за один шаг.Повторители
Командам и движениям курсора можно давать повторители (числа), например2w - передвинуть курсор на два слова вперед
10l - передвинуть курсор на десять символов вправо
d10l - стереть десять символов справа от курсора
2d10l - стереть двадцать символов справа от курсора
5J - слить пять последующих строк в одну
4. - повторить последнюю введенную команду четыре раза
Пользователи ОС Linux, использующие новые
Пользователи ОС Linux, использующие новые терминальные эмуляторы такие как xterm gnome-terminal, kvt, aterm, могут пропустить этот раздел. Переменная "$TERM" у них всегда по умолчанию имеет правильное значение.Редактор Vi работает в полноэкранном режиме, поэтому использует информацию о типе терминала. Когда вы соединяетесь с "wiliki" ("wiliki" - имя главного инженерного сервера в Гавайском университете) он требует указания типа вашего терминала. Например : TERM = (vt100)
Если у вас данный тип терминала (или эмулятор поддерживающий этот тип) просто нажмите клавишу "Enter". Если у вас термнал hp, введите hp и нажмите клавишу "Enter". Если вам не известен тип терминала - спросите совет у лаборанта.
Если вы допустили ошибку указав неверный тип терминала - ничего страшного, просто завершите сеанс работы. Следующие команды помогут исправить установки системы :
Во-первых установите переменную TERM (если вы не знаете какая оболочка используется в системе выполните команду echo $SHELL). В примерах подразумевается тип терминала vt100. Замените его при необходимости используемым вами. Для оболчки C (/bin/csh) используйте следующую команду : set term=vt100 Для оболочек Bourne (/bin/sh) или Korn (/bin/ksh) :
export TERM TERM=vt100 Далее перезапустите ваш терминал : tset
Теперь, после правильной установки типа терминала, начнем изучение редактора Vi.
Предупреждения для использования VI на рабочих станциях
При использовании рабочих станций для работы с редактором vi необходимо помнить следующее : многократное одновременное редактироване одного и того же файла и изменение размера экрана.Vi использует копию файла для редактирования и сохраняет изменения в существующий файл. Поэтому если редактируется один и тот же файл одновременно несколько раз - при сохранении результатов одна копия может переписать другую. Будьте уверены, что используется один сеанс для редактирования файла.
При работе с терминальной программой можно изменить размеры экрана. Если возникли проблемы с экраном, что является редкостью, выполните команду :
eval `resize` или :
eval `/usr/bin/X11R6/resize`
Preferences
Содержание его вполне понятно, что это настройки, среди которых:Уже из этого краткого перечня можно представить себе возможности настройки редактора NEdit, о чем я подробнее буду говорить в следующем разделе. Пока же отмечу только, что все эти настройки имеют силу только в текущем сеансе. Чтобы сделать их перманентными, требуется внести соотвесттвующие изменения в пунктах Default Setting (о чем - ниже), и сохранить их (Save Default). Пункт пятый меню - не национальность, и даже не "На что жалуетесь"; напротив, это -
Преобразование документа в формат PDF
Документ DocBook можно преобразовать к другим форматам. Кроме PDF мы можем преобразовать к следующим форматам : веб, PostScript, Tex, RTF - который может быть прочитан такими редакторами как WordPerfect, Word, StarWriter и др. Но в этой заметке мы рассмотрим преобразование только в PDF формат.Документы DocBook могут быть созданы с помощью любых текстовых редакторов, например Vi или Nedit. Но лучше использовать Emacs : Norman Walsh написал "Emacs major mode for docbook" [3], содержащий полезные дополнения : завершение имен элементов, вставка шаблонов.
Кроме того, могу предложить примеры, используемые в данной заметке.
Как было сказано раньше - нам необходим шаблон и программное средство, которое использует данный шаблон для преобразования DocBook документа в PDF формат. В действительности шаблон не преобразует DocBook документ в формат PDF, но создает TeX файл. Мы используем шаблон Norman Walsh's Modular DocBook Stylesheets, написанный на DSSSL.
Для использования шаблона DSSSL необходим редактор DSSSL. Я использую Jade, разработанный Джеймсом Кларком (поддержка продукта прекращена). Замена - OpenJade, но я его не использовал.
Обратите внимание - программные пакеты (Modular Stylesheets, Jade и JadeTex) входят в состав дистрибутивов, использующих пакетную установку (RedHat, Suse, Corel, Debian)! Поэтому сначала посмотрите вашу инсталляционную программу, CD или веб сайт дистрибьютора.
Я использую Debian и Walsh's Modular Stylesheets у меня инсталлированы в /usr/lib/sgml/stylesheets/dsssl/docbook/nwalsh/print/ и используют параметр "-d" для Jade и "-t" для TeX расширения файла : egonw@localhost> ls -al total 3 -rw-r--r-- 1 egonw egonw 2887 Apr 8 22:06 docbook_article.xml egonw@localhost> jade -t tex -d /usr/lib/sgml/stylesheets/dsssl/docbook/nwalsh/print/docbook.dsl docbook_article.xml egonw@localhost> ls -al total 21 -rw-r--r-- 1 egonw egonw 2887 Apr 8 22:06 docbook_article.xml -rw-r--r-- 1 egonw egonw 17701 Apr 8 22:29 docbook_article.tex Jade создает TeX файл. Этот файл можно преобразовать в PDF формат используя утилиту pdfjadetex, входящую в пакет JadeTeX:
egonw@localhost> ls -al total 21 -rw-r--r-- 1 egonw egonw 2887 Apr 8 22:06 docbook_article.xml -rw-r--r-- 1 egonw egonw 17701 Apr 8 22:29 docbook_article.tex egonw@localhost> pdfjadetex docbook_article.tex Получаем файлdocbook_article.pdf. Обратите внимание на добавление множества служебной информации - заголовок в начале каждой страницы, использование различных шрифтов. В начале изучения DocBook я тратил много времени на составление подходящих сочетаний. Эта заметка показывает только одно из таких сочетаний.
Преобразование файлов в другие форматы в Linux
Автор: Сергей Яремчук, grinder@ua.fmОпубликовано: 27.11.2002
© 2002, Издательский дом "КОМПЬЮТЕРРА" | http://www.computerra.ru/
Журнал "СОФТЕРРА" | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.softerra.ru/util/22068/
Краткое резюме:
PS (PostScript) в BMP: gs -sDEVICE=bmp16m -sOutputFile=test.bmp test.ps PS в TXT a2ps --columns=4 --font-size=10 -j -encoding=koi8 shpora.txt -o shpora.ps или ps2pdf ps2ascii
SGML в HTML, RTF, TXT: linuxdoc --bakend=format(html, rtf, text ...) --papersize=size --language=ru file_name.sgml или sgml2html file_name.sgml
SGML в PDF: gml2latex --output=pdf file_name.sgml
DOC в HTML: wvHtml --charset=koi8-r test.doc test.html
Перекодировка из WINDOWS-1251 в KOI8R: iconv -f WINDOWS-1251 -t KOI8R cp1251.txt > koi8r.txt
Очень часто при работе с файлами приходится преобразовывать их в другой формат. Особенно этот вопрос актуален для пользователей Linux, потому что в этой системе еще со времен первых Unix'ов сложились свои форматы файлов и при переносе их на компьютеры работающие под управлением Windows возникает проблема работы с файлами этих форматов, которая решается как правилом путем поиска соответствующих программ просмотра. Как вы понимаете, данный вариант не всегда приемлем, так как нужную программу еще надо найти, и еще не будешь же таскать все эти программы с собой и устанавливать на каждом компьютере. Самый простой вариант решения этой проблемы это преобразовать файлы к требуемому формату, который может быть прочитан на нужном компьютере.
В данной статье будут рассмотрены варианты преобразования только текстовых файлов из одного формата в другой, не будет затронуты вопросы преобразования графических, звуковых файлов и варианты преобразования с одного языка программирования на другой. Хочу еще предупредить, что все эти программы консольные. Что, отстой! Кричат некоторые пользователи. Да, я в принципе согласен, недостатки на лицо. Необходимо помнить не только название программы (впрочем, не совсем так, автодополнение в bash еще ни кто не отменял), но и различные параметры и опции. Но, есть и положительные стороны. К ним относится малый размер программ, малое время загрузки в оперативную память, отсюда и меньшее время выполнения, отсюда и меньшие требования к системным ресурсам (не у всех же Атлоны и четвертые пеньки).
А еще представьте такую ситуацию, что вам надо преобразовать сразу несколько файлов и еще сменить некоторые параметры, вручную через "Сохранить как …" не совсем удобно да и время, понимаете ли, а в консоли это возможно. Также в программах большинство опций унифицировано, и запомнив параметры одной, научится работать в аналогичной не составит большого труда. И еще, практически все рассмотренные программы входят в стандартную поставку так, что искать их по Интернету не придется.
Итак, по порядку. С первой проблемой с которой я столкнулся была необходимость перенести документ в формате PostScript на компьютер работающий под Windows с этого пожалуй и начнем. Итак, первая программа вызывается gs. Просто набрав данную команду с названием файла с расширением ps вы можете просто просмотреть указанный файл, а добавив опцию sDEVICE=
Следующий формат с которым часто придется сталкиваться в Linux это SGML. Для того чтобы вы могли его преобразовать необходимо установить пакет linuxdoc. Так как сам формат наиболее близок к HTML, то к нему и будем по началу преобразовывать. Формат вызова команды такой:
# linuxdoc --bakend=format(html, rtf, text ...) --papersize=size --language=ru file_name.sgml
Я думаю, что приведенные параметры очевидны. Чтобы упростить жизнь юзеру и здесь есть отдельные команды для преобразования к тому или иному формату. Например, следующая команда конвертирует из SGML в HTML. sgml2html file_name.sgml А с помощью опции -I – в создаваемые файлы, можно добавить ссылку на файлы изображения (next, prev, toc), которые копируются с каталога /usr/share/linuxdoc-tools/icons/ (рис.1) в текущий. А чтобы преобразовать в формат pdf выполните следующую команду:
sgml2latex --output=pdf file_name.sgml причем в образованном файле будут работать все имеющиеся гиперссылки. Следующие программы предназначены для конвертирования документов набранных в формате MS Word (.doc) в другие форматы. Они будут доступны если у вас установлен пакет . После установки пакета будут доступны несколько программ предназначенных для преобразования в разные форматы. Набрав в командной строке wvVersion file_name.doc можно узнать к какой версии Word принадлежит документ. Команда
wvHtml --charset=koi8-r test.doc test.html
, как вы уже поняли, перегоняет документ Word в html-файл и устанавливает для него кодировку koi8-r. Причем программа вполне корректно переносит таблицы и в некоторых файлах генерирует не так уж много мусора. Добавив опцию --password=password, можно преобразовывать файлы закрытые паролем.
Работу с другими форматами я думаю, разберете сами. Следующая программа немного выпадает из общего плана, но полезность ее очевидна. Это программа iconv, входящая в пакет glibs любого дистрибутива, назначение которой перекодирования текстовых файлов с одной кодировки в другую. Формат вызова программы такой iconv -f исходная_кодировка -t необходимая_кодировка old_file < new_file , где возможные варианты кодировок можно узнать запустив программу с опцией --list. Например самая популярная задача по перекодировке выглядит так
iconv -f WINDOWS-1251 -t KOI8R cp1251.txt > koi8r.txt
Cледующая программа antiword предназначена для преобразования документов в формате Word 6, 7, 97 и 2000 в текстовый или файл формата PostScript. После установки программы (make all, make install) создайте в домашнем каталоге подкаталог .antiword (именно с точкой) и перенесите в него все файлы из каталога Resources который находится в каталоге в котором вы распаковали исходные тексты программы. Теперь с помощью вызова antiword -t -m cp1251.txt test.doc можно вывести на терминал содержимое файла test.doc, причем программа вполне корректно (как это вообще возможно на терминале) отображает как содержимое самого файла со всеми элементами форматирования так и таблицы. Если файл находится в кодировке koi8-r то опцией -m необходимо подключить файл koi8-r.txt. Если есть необходимость конвертировать Word'овский файл в формат PostScript воспользуйтесь следующей командой antiword -p a4 -m koi8-r.txt text.doc > 1.ps т.е. добавили размер страницы (доступны еще форматы letter и legal). Кстати при использовании данной программы вам нечего боятся макровирусов они попросту не будут работать.
И напоследок вкратце упомяну об очень мощной утилите a2ps с помощью которой можно подготовить документ к выводу на печать в формате PostScript или в файл. Опций у программы большое количество о некоторых я расскажу. Представьте себе такую ситуацию вы как прогрессивный человек написали себе шпору на экзамен (заметки на лекцию) на компьютере, но естественно в формате А4 нести ее с собой я бы сказал не совсем удобно. Для этого надо уменьшить шрифт и разбить на маленькие части. Для этого выполняем такую команду
a2ps --columns=4 --font-size=10 -j -encoding=koi8 shpora.txt -o shpora.ps
что мы сделали, установили количество колонок текста равным четырем, размер шрифта – 10, параметр -j означает рамку вокруг текста, указали необходимую кодировку, исходный файл и с помощью флага -о выходной, результат посмотрите на рисунке. Опций как я уже говорил много и с помощью них с исходным файлом можно проделать практически все чего душа пожелает.
Вот мы кратко рассмотрели некоторые программы для работы с текстовыми файлами в Linux. Сразу скажу я не старался рассказать обо всех подобных программах по причине их большого разнообразия, а только о наиболее часто мной используемых. Более подробную информацию можно узнать запустив соответствующий man или команду с опцией --help, а лучше оба варианта, я заметил, что информация, выводимая при этом, иногда может отличаться. Успехов.
Телефон редакции: (095) 232-2261
E-mail редакции: inform@softerra.ru
По вопросам размещения рекламы обращаться к Алене Шагиной по телефону +7 (095) 232-2263 или электронной почте reclama@computerra.ru
Все любят скриншоты
Давайте взглянем на то, что же у нас получилось - мой рабочий стол:
Стол!!!

[Обсудить]
Пример секции !nedit в файле .Xdefaults для настройки редактора NEdit
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nedit nedit*text.foreground: black !Задает черный цвет редактируемого текста
nedit*text.background: gray70 !Задает светло-серый (яркость 70%) цвет фона рабочего поля
nedit*text.selectForeground: gray10 !Задает очень темно-серый цвет текста в выделенном фрагменте
nedit*text.selectBackground: gray80 !Задает очень светло-серый цвет фона выделенного фрагмента
nedit*text.highlightForeground: white !Задает непонятно что. Оставлено в пару следующей строке
nedit*text.highlightBackground: green !Задает зеленый цвет подсветки парных элементов (например, скобок)
nedit*text.cursorForeground: black !Задает черный цвет курсора
nedit*text.lineNumForeground: gray47 !Задает среднесерый цвет нумерации строк (которую включаю очень редко)
nedit*text.blinkRate: 600 !Мерцание курсора с частотой 600 миллисекунд
nedit*foreground: black !Задает цвет текста интерфейсных элементов (меню, панелей и прочего).
nedit*background: gray60 !Задает цвет фона интерфейсных элементов (меню, панелей, строки состояния и прочих)
nedit*fontList: -cronyx-fixed-medium-r-*-*-20-*-*-*-*-*-koi8-r !Задает шрифт меню
nedit*font: -cronyx-fixed-medium-r-*-*-20-*-*-*-*-*-koi8-r Задает шрифт сообщений в окне системы помощи
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Макросы для разметки html-документов
Это разработанная мной коллекция макросов для редактора NEdit, предназначенная для разметки несложных html-документов. Она включает в себя команды для ввода наиболее распространенных структурных тэгов и гиперссылок, то есть того, с чем постоянно сталкиваешься при подготовке существенно текстовых web-страниц. Не претендует ни на изящество кода, ни, даже, на его синтасическую точность, но работоспособны - проверено на собственной шкуре. nedit.macroCommands: \ ! Пункты меню для ввода тэгов рубрик 1-3 порядка (h1-h3) Headers>header1:F1::: {\n\ insert_string("<")\n\ insert_string("h")\n\ insert_string("1")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("h")\n\ insert_string("1")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Headers>header2:F2::: {\n\ insert_string("<")\n\ insert_string("h")\n\ insert_string("2")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("h")\n\ insert_string("2")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Headers>header3:F3::: {\n\ insert_string("<")\n\ insert_string("h")\n\ insert_string("3")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("h")\n\ insert_string("3")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ ! Эти макросы вводят тэги параграфа и разрыва строки (p и br, соответственно) Text>paragraph:Ctrl+P::: {\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("p")\n\ insert_string(">")\n\ }\n\ Text>break:Ctrl+B::: {\n\ newline()\n\ insert_string("<")\n\ insert_string("b")\n\ insert_string("r")\n\ insert_string(">")\n\ }\n\ !Макросы для ввода структурных тэгов strong, emphasis, preformatted text Structure>strong:::: {\n\ insert_string("<")\n\ insert_string("s")\n\ insert_string("t")\n\ insert_string("r")\n\ insert_string("o")\n\ insert_string("n")\n\ insert_string("g")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("s")\n\ insert_string("t")\n\ insert_string("r")\n\ insert_string("o")\n\ insert_string("n")\n\ insert_string("g")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Structure>emphasis:::: {\n\ insert_string("<")\n\ insert_string("e")\n\ insert_string("m")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("e")\n\ insert_string("m")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Structure>preformatted:::: {\n\ newline()\n\ insert_string("<")\n\ insert_string("p")\n\ insert_string("r")\n\ insert_string("e")\n\ insert_string(">")\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("p")\n\ insert_string("r")\n\ insert_string("e")\n\ insert_string(">")\n\ newline()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ !Этот пункт меню содержит макросы для ввода списков разного рода - маркированных, ! нумерованных, с определениями, а также их элементов Lists>unordered list:::: {\n\ newline()\n\ insert_string("<")\n\ insert_string("u")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("u")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Lists>oredered list:::: {\n\ newline()\n\ insert_string("<")\n\ insert_string("o")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("o")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Lists>list item:Ctrl+I::: {\n\ insert_string("<")\n\ insert_string("l")\n\ insert_string("i")\n\ insert_string(">")\n\ }\n\ Lists>definition list:::: {\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("d")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ newline()\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("d")\n\ insert_string("l")\n\ insert_string(">")\n\ newline()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Lists>term:::: {\n\ insert_string("<")\n\ insert_string("d")\n\ insert_string("t")\n\ insert_string(">")\n\ }\n\ Lists>definition:::: {\n\ insert_string("<")\n\ insert_string("d")\n\ insert_string("d")\n\ insert_string(">")\n\ }\n\ Links>local link:Alt+A::: {\n\ insert_string("<")\n\ insert_string("a")\n\ insert_string(" ")\n\ insert_string("h")\n\ insert_string("r")\n\ insert_string("e")\n\ insert_string("f")\n\ insert_string("=")\n\ insert_string("\\"")\n\ insert_string("\\"")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("a")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ !Ввод тэгов для локальных и удаленных ! (последние - с аргументом target="_blank") ! гиперссылок, а также именованных якорей Links>URL:Alt+U::: {\n\ insert_string("<")\n\ insert_string("a")\n\ insert_string(" ")\n\ insert_string("h")\n\ insert_string("r")\n\ insert_string("e")\n\ insert_string("f")\n\ insert_string("=")\n\ insert_string("\\"")\n\ insert_string("\\"")\n\ insert_string(" ")\n\ insert_string("t")\n\ insert_string("a")\n\ insert_string("r")\n\ insert_string("g")\n\ insert_string("e")\n\ insert_string("t")\n\ insert_string("=")\n\ insert_string("\\"")\n\ insert_string("_")\n\ insert_string("b")\n\ insert_string("l")\n\ insert_string("a")\n\ insert_string("n")\n\ insert_string("k")\n\ insert_string("\\"")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("a")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\n\ Links>name:::: {\n\ insert_string("<")\n\ insert_string("a")\n\ insert_string(" ")\n\ insert_string("n")\n\ insert_string("a")\n\ insert_string("m")\n\ insert_string("e")\n\ insert_string("=")\n\ insert_string("\\"")\n\ insert_string("\\"")\n\ insert_string(">")\n\ insert_string("<")\n\ insert_string("/")\n\ insert_string("a")\n\ insert_string(">")\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ backward_character()\n\ }\nЭтот листинг может быть просто скопирован в секцию nedit.macroCommands: \
файла .nedit. Для полноты счастья в секцию nedit.shellCommands: \
можно вставить строки netscape:::XS:\n\ konsole -e netscape %\n\
для просмотра редактируемого html-файла. Разумеется, вместо konsole можно указать любую другую программу эмуляции терминала.
Copyleft by
Приложений на базе GTK
Все приложения на базе GTK (GIMP, Slypheed, X-Chat и другие), можно русифицировать добавив в ~/.gtkrc следующие строчки:style "user-font" { font = "-cronyx-helvetica-*-r-normal-*-12-*-*-*-*-*-koi8-r" }
widget_class "*" style "user-font"
Примечания переводчика
[Если у вас возникнет вопрос: "А почему ссылки не по порядку?", отвечу: "Вам шашечки или чтобы ехать?" ;-)]Не могу сказать с уверенностью на все "сто", но, по моему, речь идёт о DNS-сервере.
Вообще-то я не уверен в том, есть ли в Объединенном Королевстве хозяйственное мыло. 8-)
Цитата из "Инсталляция Linux и первые шаги", автор М. Уэлш: "Ключевое свойство большинства оболочек Unix -- это способность ссылаться сразу более, чем на один файл, используя специальные символы ... так называемые "дикие карты" (wildcards)..."
Только не спутайте очерёдность ключей.
Автор немного забыл обновить свои автобиографические данные. Судя по всему, теперь он "обычный" студент "обычного" университета. И не исключено, что времени для игры на пианино у него сейчас меньше обычного. В любом случае спасибо ему за то, что нашёл время возобновить работу колонки LWM. 8-)
В скрипт пришлось внести небольшие изменения -- вряд ли вам нужно, чтобы он отсылал пять одинаковых сообщений о том, что не найден конфигурационный файл "/etc/keyfiles.conf".
Copyright (C) 2002, Thomas Adam.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 78 of Linux Gazette, May 2002
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.
Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg78/articles/rus-adam.html
Пример использования message catalog-a :
| /* X/Open XPG4 message catalog test */ #include #include char *MF_EXAMPLE = "example.cat"; main() { nl_catd catd; int error; (void)setlocale(LC_ALL, ""); catd = catopen(MF_EXAMPLE, 0); /* Get the message number 1 from the first set.*/ printf( catgets(catd,1,1,"Hello world\n") ); /* Get the message number 1 from the second set.*/ printf( catgets(catd, 2, 1,"Howdy\n") ); /* Display an error message. No message 4 in set 1.*/ printf( catgets(catd, 1, 4, "example: 100.220 Permission is denied to read the file %s.\n"), MF_EXAMPLE); catclose(catd); } |
Пример применения HTML-редактор своими руками
Не могу поручиться, что в преедыдущем разделе внятно изложил возможности NEdit по созданию и редактированию макрокоманд и команд оболочки. И потому попробую проиллюстрировать эти возможности на конкретном примере - создании серии связных директив для составлению не оченб сложных (и преимущественно текстовых) html-документов.При этом я прекрасно понимаю, что сказанное ниже способно вызвать у профессионального программиста лишь ироническую улыбку. Однако написал я это не показания крутизны для, а токмо к вящей славе редактора NEdit. Каковой позволяет настроить себя под конкретную задачу даже людям с моим уровнем подготовки.
И так, перед нами (то есть вашим покорным слугой) стоит задача составления "из головы" достаточно длинных и относительно структурированных документов, предназначенных в первую голову для размещения в Сети. При этом не исключается возможность, что они в дальнейшем будут воплощены и на бумаге в виде журнальных или книжных публикаций (для чего может потребоваться импорт документа в текстовый процессор или программу верстки). Что нужно для комфортного выполнения этой работы?
Путей - несколько. Можно:
И потому оптимальным представляется составление документа в текстовом редакторе с одновременной разметкой html-тэгами. Но проставлять их вручную, даже если помнишь все наизусть, - занятие достаточно нудное. И посему возникает естественное желание его автоматизировать. Благо NEdit с его развитым макроязыком и простыми средствами его применения такую возможность обеспечивает.
Для начала определимся, какие тэги требуются для каждодневного использования. Это:
Вот в такой последовательности и будем создавать соответствующие макросы. Включаем режим протоколирования (через меню Macro - Learn Keystrokes или комбинацию Alt+K) и просто-напросто набираем с клавиатуры последовательность символов
Для обеспечения непрерывности набора логично вернуть курсор в позицию между открывающим и закрывающим тэгами, для чего соответствующее количество раз нажимаем клавишу Left. После чего завершаем протоколирование (через меню Macro - Finish Learn или повторным нажатием Alt+K), через меню Macro Replay Keystrokes (или - комбинацию Ctrl+K) проверяем правильность исполнения и переходим в меню Preferences - Default Settings - Customize Menu - Macro Menu.
В появившейся панели Macro Commands указываем в поле Menu Entry Headers>header1
в поле Accelerator приписываем команде клавишу вызова (например, F1, благо она не закреплена за вызовом помощи), при желании определяем мнемоническую литеру (хотя большого смысла в этом я не вижу) и смело жмем на экранную кнопку Paste Learn/Reply Macro. В результате в поле Macro Command to Execute появляется код вроде следующего: insert_string("<") insert_string("h") insert_string("1") insert_string(">") insert_string("<") insert_string("/") insert_string("h") insert_string("1") insert_string(">") backward_character() backward_character() backward_character() backward_character() backward_character()
Поскольку проверку правильности макрокоманды мы уже произвели, нажимаем Apply для ее включения в список и переходим к следующему пункту нашей программы. Конечно, можно повторить протоколирование набора для тэгов заголовков всех уровней последовательно. Но проще - с помощью экранной клавиши Copy скопировать только что созднанный макрос, изменить в поле Menu Entry ее название с header1 на header2, закремить за ней клавишу F2 и в поле Paste Learn/Reply Macro отредактировать код вручную, заменив строки insert_string("1") на insert_string("2")
И подобную процедуру повторить для заголовков всех потребных уровней (вряд ли число их превысит четыре).
Затем переходим к созданию макросов для наиболее часто требующихся при наборе тэгов параграфа и разрыва строки. Порядок действий - идентичный: протоколирование ввода тэга, вызов панели Macro Commands, описание имени команды (с учетом ее положения в иерархическом меню), закрепление свободной комбинации горячих клавиш, помещение "заученного" кода макроса в поле команд для исполнения, включение новой макрокоманды в список доступных. И так - для всех тэгов, которые представляются нам требуемыми при повседневном использовании...
Завершив создание макросов, следует не забыть увековечить их в меню с помощью Preferences - Save Defaults. Псоле чего они будут доступны в последующих сеансах NEdit, поскольку размещаются в секции nedit.macroCommands: файла .nedit.
В приложении 2 я привожу содержимое этой секции после того, как я разработал серию макросов для своих личных целей. Не судите строго: с точки зрения программиста-профессионала, ничего замечательного там не содержится. Но а) этот процесс занял у меня считанные минуты, и б) результатов его мне вполне хватает в 90 случаях из 100.
Что, опять-таки, подтверждает величие и силу редактора NEdit: можно представить себе, как способен настроить его для своих задач человек с достаточной программистской квалификацией...
Чего еще хотелось бы от несложного html-редактора? Ну конечно, визуализации производимых изменений в каком-либо внешнем браузере. Каковым, с большой долей вероятности, будет Netscape Navigator текущей версии.
Для этого мы прибегнем к настройке меню Shell (Preferences - Default Settings - Customize Menu - Shell Menu). В соотвествтующей панели определяем, как рассказывалось ранее, поле имени команды; если есть желание просматривать плоды своих трудов в разных браузерах, можно создать иерархическое меню вроде Browser>netscape Browser>lynx Browser>opera
оставляя, скорее всего, пустыми поля Accelerator и Mnemonic (не столь это частая процедура, вызов внешнего браузера, чтобы тратить на нее драгоценную клавишную комбинацию, коих и так не в избытке).
А затем вводим в поле Shell Command to Execute строку konsole -e netscape %
или иную любимую терминальную программу в качестве первого элемента (xterm. rxvt, etc.). И ни в коем случае не забыв параметр %, предписывающией Netscape отображать именно редактируемый в NEdit файл.
Теперь разбираемся с переключателями. В линейке Command Input логично отметить значение None (иначе есть риск получить по закрытии Netscape пустой файл), в линейке Command Output - значение same window. Кроме того, не худо включить также опцию записи текущего файла перед выполнением команды (Save file before executing command).
Все, принимаем изменения (экранной клавишей Apply) и проверяем действие команды. Если все нормально, выбор из меню Shell пункта netscape должен вызвать появление сначала терминального окна, а затем - окна браузера Netscape Navigator, отображающего редактируемый файл в текущем его состоянии. Если да - сохраняем ситуацию (через меню Preferences - Save Defaults) и с гордым и независимым видом пользуемся собственноручно созданным html-редактором...
Пример (XPG4):
Данный пример демонстрирует три этапа получения сообщения из каталога:Присваивание
Оператор присваивания имеет вид:< переменная> = < выражение>
Начальное значение переменной 0 или `` '' (пробел). Допускаются другие типы присваивания в соответствии с языком ``С'': "+=","-=","*=","/=","%=".
< переменная> ++, ++< переменная> - увеличение значения переменной на 1.
< переменная> --, --< переменная> - уменьшение значения переменной на 1.
Прямое форматирование
Texinfo определяет обширный набор команд прямого или "физического" форматирования, помечающих части текста, как код, пользовательский ввод, имя файла и т.д.Отображает набранный-курсивом-текст (сюрприз:) курсивом. В Info курсивное начертание "приближенно" изображается с помощью символов подчеркивания, как скобки охватывающих _набранный-курсивом-текст_.
Пример:
Для обработки файлов Texinfo
пользуйтесь tex(1) @emph{а не}latex(1).
Отображает текст-набранный-жирным шрифтом жирного начертания. В Info этому "примерно" соответствует символы "звездочка", охватывающие *текст-набранный-жирным*.
Пример:
Файлы Info @strong{не могут} содержать
графику высокого разрешения.
Выделяет имя_файла, окружая его одиночными кавычками, например так filename'. При подготовке версии для печати имя_файла печатается шрифтом пишущей машинки.
Пример:
Убедитесь, что в вашей Linux-системе
установлена самая свежая версия @file{texinfo.tex}.
Таким образом в тексте выделяется универсальный локатор ресурса (URL). В экранной версии универсальный-локатор-ресурса будет помещен в угловые скобки. При выводе на печать угловые скобки не добавляются, но универсальный-локатор-ресурса набирается моноширинным шрифтом "пишущей машинки".
Пример:
Дополнительная информация по Texinfo
можно найти на @url{}.
Служит для выделения коротких участков программного кода.
Предпочтительной является форма @code{bless}
с двумя аргументами, поэтому всегда пишите
@code{bless $objref, $class}.
Помечает символы, непосредственно набираемый текст, имена символов и т.д.
Угловые скобки (@samp{<}, @samp{>}) являются
основным разделителем в HTML.
Помечает мета-синтаксические [meta-syntactic] переменные, знаменитые foo и bar.
Команды Perl @code{bless} лучше всего вызывать
с двумя аргументами, например так @code{bless
@var{object_reference}, @var{classname}}.
Помечает отдельные клавиши или серии клавиш.
В emacs, нажмите @kbd{C-h i} для вызова
встроенного браузера Info, или наберите @kbd{M-x
info}.
Помечает имя команды.
Двумя наиболее важными командами шелла являются
@command{ls} и @command{cd}.
Метит имя опции командной строки @option вот так:
Опция @option{--html} заставляет
@command{makeinfo} создавать на выходе файл HTML
вместо файла Info.
@option не подходит для форматирования синопсиса команды. Для того, чтобы оформить краткое описание использования команды лучше воспользоваться окружением @example. Скажем так:
@example
makeinfo --html --output=@var{output-filename} @var{input-filename}
@end example
а в блоке текста к опциям обращаться, как @option{--html} и @option{--output}, а к аргументам команд как @var{output-filename} и @var{input-filename}.
ПРОЧЕЕ
[^X] ^Z Выйти в ОС (suspend-emacs) ESC ! Выполнить команду shell по запросу (shell-command) M-x shell Открыть окно с shellомПрочие клавиши
Escape: прекращение текущей операции, аналогично выбору клавиши Cancel в диалоговых панелях.Backspace: действует обычным образом, то есть удаляет символ перед позицией курсора.
Ctrl+Backspace: удаление слова перед позицией курсора.
Arrows:
Ctrl+Return: перевод каретки с автоматическим созданием абзацного отступа, как в предыдущей строке; действие аналогично включению опции Auto Indent.
Shift+Return: перевод каретки без автоматического создания абзацного отступа, если включена опция Auto Indent.
Ctrl+Tab: вставка ascii-символа табуляции.
Alt+Ctrl+c: вставка управляющего кода, эквивалентного клавише "с".
Ctrl+/: выделение всего документа; соответствует меню Edit - Select All или комбинации menu Ctrl+A.
Ctrl+\: "развыделение", если так можно выразиться, всего документа; то есть действие, обратное комбинации Ctrl+/.
Ctrl+U: удаление части строки от позиции курсора до ее начала.
Прочие консольные редакторы
В числе консольных редакторов, обычно присутствующих в дистрибутивах Linux, можно отметить Joe и JedРедактор Joe - многолик. Он способен эмулировать системы команд всех прочих из описанных здесь редакторов - и Vi, и Emacs, и других, о которых я не говорил. Но собственно Joe - это командно-ориентированный, управляемый путем комбинации клавиш ([Control+буква] буква), редактор. Что, как и следовало ожидать, не работает при кириллической раскладке клавиатуры, делая этот редактор малопригодным для работы с объемными русскоязычными документами.
При запуске Joe появляется черный экран, доступный для ввода и редактирования текста. Присутствует также статусная строка, содержащая имя файла, текущие линию и колонку, а также указание для вызова помощи ([Control+k] h); последняя, правда, занимает около трети экрана, но может быть убрана вторичным вводом той же клавишной комбинации.
Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами ([Control+b] h) и ([Control+k] k), соответственно, скопировать или переместить его в другое место, а также удалить. Понятия вставки удаленного фрагмента (аналогичного буферу изъятия в emacs) нет.
Интересно, что клавиша Home ведет себя, как в редакторах для DOS, то есть перемещает курсор в начало экранной строки. Подсознательно и от клавиши End ожидаешь "правильного" поведения. Но не тут-то было - вместо этого она вставляет тильду перед позицией курсора. Что крайне раздражает. Хуже этого только необходимость переключаться на латиницу перед выполнением любой rjvfyls. В общем, Joe не показался мне пригодным для использования в мирных целях, по крайней мере в русскоязычной стране.
Текстовый редактор Jed, в отличие от всех описанных ранее - меню-ориентированный, что делает его, казалось бы, более привычным для пользователя, пришедшего из мира DOS/Windows. Во всяком случае, при запуске можно видеть строку меню достаточно стандартного вида - с пунктами File, Edit, Search, Buffers, Windows, System, Help, с выделенными горячими клавишами, активизация которой происходит по нажатии F10, прямо как в Лексиконе.
Однако если Jed был загружен без имени файла, он долго и упорно будет требовать введения такового в командной строке внизу экрана. И на File - Open реагировать не пожелает. Пока не додумаешься выполнить File-Cancel Operation. Только после этого потребный файл можно будет открыть обычным (вернее, привычным) образом.
Дальше - еще интереснее. Ну, то, что ни Home, ни End не работают - ладно, пора уже бы и привыкнуть. Но не работает и delete - удалить введенное можно только клавишей backspace. И меню абсолютно не реагирует на мышь, хотя внутри текста манипуляции мышью осуществляются обычным для Linux-консоли способом.
Как я уже говорил, в меню цветом выделены горячие клавиши, вызывающие соответствующие действия при его активизации. Однако - только при латинской раскладке клавиатуры, что полностью обесценивает эту полезную опцию.
К достоинствам Jed можно отнести возможность работы с несколькими файлами. Что реализуется через новые буферы, аналогично тому, как это сделано в emacs. Можно также работать с двумя (как будто бы, не больше) окнами. В которых может быть открыт один и тот же файл, или разные.
Предусмотрены также различные режимы (кроме основного, текстового) для поддержки различных языков программирования (C, TeX, Forttan и другие; HTML, к сожалению, среди них нет). Однако это не делает Jed более пригодным для решения поставленной перед нами задачи.
Более практичным представляется редактор Pico, входящий в состав широко используемой в Linux почтовой системы pine. Он очень компактен, что позволяет использовать его на слабых машинах. Редактор - командно-ориентированный, все манипуляции в нем осуществляются посредством комбинации Control+буква. Что работает и при кириллической раскладке клавиатуры. Основные клавишные комбинации постоянно присуствуют в нижней части экрана, не требуя чрезмерного напряжения памяти.
Этот редактор не позволяет работать с несколькими файлами или окнами в одной консоли; однако возможна вставка любого числа текстовых файлов с диска в текущий файл.
А так возможности редактирования довольно убоги: можно удалить ([Contol+k], то есть Cut - в том же значении, что и в Windows) строку текста, на которой находится курсор, а затем вставить ее куда либо еще - переместив курсор на новую строку и выполнив команду [Contol+u], то есть UnCut. Есть еще функции поиска, проверки орфографии, а также своеобразно понимаемая опция Justify - вписывание строк, выходящих за границы экрана, в его пределы.
В целом pico, конечно, не очень подходит для работы с объемными текстами. Однако, как мне представляется, почти идеален для правки конфигурационных файлов. Поскольку интуитивно более понятен, чем vi, и много проще в использовании. По крайней мере, для бывших пользователей DOS/Windows.
Хотя еще более привычным для них, вероятно, покажется текстовый редактор, встроенный в файловый менеджер Midnight Commander (о котором шла речь в предыдущей саге). Это, пожалуй, наиболее близкое и родное Linux-создание для старого пользователя DOS. Поскольку напоминает видом редактор из советского народного Командира Нортона, и почти таков же нравом.
Вызывается mcedit, как и редактор NC, по клавише F4, зафиксированной на текстовом файле (можно, конечно, и на любом другом, вопрос только, что вы увидите). Но его можно запустить и автономно, просто набрав mcedit в командной строке: в этом случае открывается пустой файл.
Все в mcedit радует глаз: и привычный синий фон с нерезко белыми буквами, и статусная строка в верхней части экрана, и линейка нумерованных (по функциональным клавишам) операций - внизу. Привычно работают клавиши Home и End, Delete и Backspace; и щелчок мышью в тексте приводит к перемещению курсора в эту позицию. Правда, в отместку за это не работает вставка выделенного фрагмента по щелчку средней клавиши.
Как и в редакторе из Norton Commander, по умолчанию отключен перенос слов на краю экрана; его можно включить - динамически (то есть по ширине экрана) или на фиксированном числе знаков.
Назначение функциональных клавиш также более или менее совпадает. Хотя в MC есть специфика, касающаяся копирования, перемещения и удаления; так, последнюю операцию можно выполнить только через F8, но не через delete.
Выделение текстовых фрагментов - самое разнообразное, и по клавише F3, и мышью, и клавишами управления курсором при нажатом Shift. Правда, не лучшим образом осуществляется копирование и перемещение: если предназначенный для этого фрагмент выделен мышью, курсор в новую позицию можно переместить только стрелками, иначе выделение пропадет. Но зато - есть выделение прямоугольных столбцов.
Приятна также полная русификация программы. И все сочетания управляющих и буквенных клавиш работают как при латинской, так и кириллической раскладке клавиатуры.
В отличие от прототипа, ограничение на размер открываемого файла (16 Мбайт) можно считать отсутствующим. Имеется подсветка синтаксиса, по крайней мере для языка HTML, хотя цветовая гамма и ограничена.
Конечно, в mcedit маловато настроек внешнего вида, нет и встроенной проверки орфографии (что, впрочем, при наличие русского ispell, неудобств не доставляет). Но в целом это инструмент, в равной степени пригодный для использования в качестве системного редактора и для набора длинных содержательных текстов.
В заключение добавлю, что для mcedit имеется переведенная на русский язык документация, а на сайте http://linux-ve.chat.ru/ можно найти прекрасное описание его возможностей.
В прошлом разделе, заговорив о Xemacs, мы плавно перекинули мостик от консольных редакторов к редакторам, работающим в графическом режиме. А так как мы договорились, что первой нашей графической средой будет KDE, логично рассмотреть
Прочие редакторы для системы X Window
Здесь я упомянул бы Cooledit - известный текстовый редактор для программистов. Он имеет собственный десктоп-менеджер, способный изменить вашу рабочую среду до неузнаваемости, причем не всегда спрашивая позволения. Для набора текстов, по моему, не это лучший инструмент, но располагает богатыми возможностями для редактирования текстов исходных, скриптов, макросов и прочего.Очень обширно семейство текстовых редакторов для GNOME (или просто базирующихся на библиотеке Gtk). Здесь можно назвать и gEdit, и gnotepad+, и CodeCommander, и Latte, и еще несколько. Многие из них обладают очень развитыми функциями редактирования, например работы с разметкой HTML. Однако я ими не пользовался - во-первых, как уже неоднократно говорил, почти все Gtk-приложения у меня работают неустойчиво, во-вторых, мне просто не нравится интерфейс GNOME-ориентированных программ.
Несколько подробнее я хотел бы остановиться на fte. Это весьма своеобразный текстовый редактор, совмещенный с чем-то вроде файлового навигатора. При запуске его появляется дерево каталогов. Перемещаться по нему довольно удобно, но никаких собственных средств управления файлами, вроде копирования, удаления, перемещения и прочего, нет. Однако есть возможность вызова минитерминала (Control-F9), появляющегося внизу окна fte. В нем все эти функции доступны, также как и в любой оболочке. Правда, не поддерживается ни история команд, ни дополнение клавишей табулятора.
Двойной щелчок на имени файла (или выбор пункта Open из меню по нажатию правой клавиши мыши) вызывает собственно текстовый редактор. Возможности его довольно богаты. Пункт File, в соответствие со своим названием, содержит всякие файловые манипуляции: открытие, сохранение, печать и прочее; в том числе - открытие файла в определенном режиме - текстовом или режиме различных языков программирования, в числе коих обнаружился и HTML, и TeX; впрочем, выбор режима автоматически (и правильно) происходит при открытии файла; так, при открытии html-файла включается цветовая подсветка тэгов.
В пункте Edit, помимо Undo и Redo (кстати, многоуровневых), содержались операции с текстовыми фрагментами - копирование, вырезание вставка различного вида. А маркировка этих фрагментов - в пункте Block; помимо обычного выделения линий и абзацев, можно выделить вертикальные колонки. Здесь - же установка автоотступов, конвертирование регистров, сортировка и прочее.
Из прочих, весьма многочисленных, пунктов меню привлекает внимание пункт Options: здесь можно запретить или разрешить перенос слов, установить левую и правую границы, величину табуляции, а также изменить режим просмотра документа.
Стандартное меню может быть дополнено собственными командами посредством редактирования конфигурационных файлов.
В общем, конечно, fte - это, конечно, редактор в первую очередь для программиста. Однако и просто для набора текстов он вполне пригоден. А подсветка синтаксиса HTML позволяет применять его для предварительной разметки web-страниц.
А под занавес истории о текстовых редакторах не могу отказать себе в удовольствии рассказать о том из них, который, на мой взгляд, наиболее близок к очерченному во вступлении идеалу. Имя ему
Программное обеспечение
Домашняя страница XEmacs находится по адресу .Свободный SGML toolkit SP можно получить по адресу , и там же -- DSSSL-процессор .
SGML-процессор CoST -- по адресу .
Мой набор спецификаций для CoST, свободный к дальнейшему распространению, -- по адресу .
Примечания
ISO 8879:1986
LATEX делает шаг в этом направлении, но этого не достаточно.
ISO 10179
Вероятность чего довольно велика, учитывая реверансы обоих основных игроков на поле браузеров в сторону XML.
Последние изменения: Чт 17 Янв 2002 12:01:58
Сгенерировано
Программы для работы с POD
Преобразуют текст из формата POD в соответственно HTML, страницы руководства UN*X (man pages), LaTeX и обычный текст.
Простое средство проверки синтаксиса POD.
Программы просмотра (браузеры)
От других рассмотренных нами систем подготовки документации Texinfo отличается тем, что для целей экранного просмотра документы Texinfo могут быть транслированы в отличный от HTML формат, а именно -- в формат Info. Естественно, что для формата экранного просмотра требуется браузер!info
info, прародитель всех браузеров Info, это простой, но, тем не менее, эффективный браузер в консоли.
Для того, чтобы просмотреть страницы Info по теме Тема используйте вызов
info Тема
Для просмотра файла Info файл-info к вызову info добавьте параметр --file=файл-info, где файл-info содержит полный путь к нужному файлу Info.
Если вы желаете начать просмотр с конкретного узла имя-node, добавьте параметр --node=имя-node.
Моя любимая ошибка -- смешивание темы с -- -- файлом-info, т.е. набор команды
info ./cache-profiler.info
вместо подразумеваемого
info --file=./cache-profiler.info
pinfo
Это основанный на curses(3) браузер с навигацией в стиле lynx(1). pinfo очень красиво раскрашивает страницы Info
emacs
доказывает улучшение возможностей просмотра фалов Info в emacs 21.x.
Я знаю, что это лишь Emacs Info, но оно мне сильно-сильно нравится! Я его даже люблю!
Можно просмотреть установленную документацию в формате Info (C-h i', ). Или же можно загрузить файл Info и командой Info-on-current-buffer превратить буфер в браузер Info (обратите внимание на заглавную букву "I"). Если нет желания переключаться между рабочими буферами и режимом просмотра Info, то можно открыть файл в режиме просмотра (C-x 5 f', find-file-other-frame). Для того, чтобы открыть новый фрейм с браузером Info, переключитесь в буфер *info* в текущем окне emacs и выполните команду view-buffer-other-frame.
Чтобы получить от "браузенья" дополнительное удовольствие, попробуйте команду Info-speedbar-browser.
xinfo
xinfo -- древнейшая программа для просмотра Info-файлов в среде X11. Цветовой разметки текста нет. Более всего меня в нем раздражает -- до такой степени, что я его никогда не использую -- то, что навигация и отображение полностью разделены. Я имею в виду, что для перехода по ссылке в одной панели, приходиться "кликать" мышью по панели верхнего уровня. Щелчки мыши по самому меню ни к чему не приводят.
Скриншот .
tkinfo
Ну, это мой любимый браузер Info для X! В нем есть все "приятности" info(1): он быстро стартует, а его окно удобно устроено.
gnome-help-browser
Если вы используете Gnome, то, наверное, знакомы сgnome-help-browser(1x). В нем можно просматривать и страницы Info.
kdehelp
То же самое относится и к пользователям KDE... Вы, вероятно, знакомы с kdehelp(1x). Среди других форматов в нем поддерживается и страницы Info.
kdehelp легко убедить показать конкретный Info-файл:
kdehelp ./cache-profiler.info
Просто на большой?!
konqueror тоже показывает файлы info (по крайней мере konqueror 2.2.2): просто надо напечатать "info:" в строке адреса.
Пролог
Как я уже говорил, идеального текстового редактора мне до сих пор не встретилось. Однако максимально приближенный к идеалу - да. Это Nedit, текстовый процессор для X Window. В числе его разработчиков - большой коллектив: Марк Эдел (Mark Edel), Джо Кирьякопулос (Joy Kyriakopulos), Кристофер Конрад (Christopher Conrad) и другие. Распространяется он свободно и бесплатно на условиях GPL.Редактор Nedit реализован для всех Unix- и Unix-подобных систем, как коммерческих, так и свободных. Он доступен на http://www.nedit.org/ в виде исходных текстов и бинарных пакетов. Впрочем, пробиться на этот сайт, по крайней мере из России, нелегко. А потому лучше поискать NEdit в каких-нибудь коллекциях Linux-программ, например, на . Кроме того, его часто стандартно включают в состав дистрибутивов Linux (например, Caldera OpenLinux, Linux Mandrake).
Nedit базируется на библиотеке Motif, имеющей статус коммерческой. Однако для Linux он может быть скомпилирован с использованием свободного аналога этой библиотеки - OpenMotif. Кроме того, распространяемые в составе дистрибутивов бинарные пакеты (rpm и deb) компилируются статически, то есть без необходимости установки каких-либо специфических библиотек вообще.
По назначению Nedit - текстовый редактор для программистов. Однако реализация его такова, что, кроме этого, он может быть использован для множества целей - от элементарного набора текстов до разработки web-страниц и верстки оригинал-макетов в TeX.
В чем величие и мощь этого редактора? Во-первых, он позволяет осуществлять все действия по вводу и редактированию текстов, в том числе весьма сложные операции по поиску и замене фрагментов введенного текста.
Во-вторых, NEdit - редактор, в котором настройке поддается практически все от гарнитуры экранного шрифта, его цвета и цвета фона до контекстного меню, вызываемого, как обычно, правой клавишей мыши.
В третьих, для NEdit характерна практически неограниченная настраиваемость, осуществляемая путем подключения скриптов оболочки командной строки и макрокоманд, создаваемых на встроенном языке макросов.
Все эти особенности я и попытаюсь продемонстрировать ниже в этой саге.
Простые команды редактора VI
Рассмотрим некоторые команды для начала работы с vi. Позже обратим внимание на другие команды.a
вставить текст за текущей позицией курсора. Если определен аргумент count - весь введенный текст будет повторен count раз. h
переместить курсор на одну позицию влево. i
вставить текст, начиная с позициии перед курсором. Если определен аргумент count - весь введенный текст будет повторен count раз. j
переместить курсор вниз на одну строку. k
переместить курсор вверх на одну строку. l
переместить курсор на одну позицию вправо. r
заменить символ в текущей позиции курсора. Аргумент count определяет количество заменяемых символов. u
отмена последнего изменения. Повторная команда u возвратит изменение. x
удалить символ в текущей позиции курсора. Аргумент count определяет количество удаляемых символов. Символы будут удалены за курсором.
Проверка орфографии
С этим дело обстоит проще всего. В принципе, LyX по умолчанию использует словарь, одноименный с языком документа. Поэтому, если ваш словарь для ispell/aspell и в самом деле называется russian (а для koi8 это так), на вкладке "Spell checker" можно оставить всё как есть. Иное дело, если вам хотелось бы набирать текст в cp1251. В принципе, на этот случай имеется опция "use input encoding", которая позволяет передавать программе проверки орфографии название используемой кодировки. Но толку от нее мало: едва ли словарь для koi8 сможет воспринимать какие-то кодировки кроме своей собственной. А вот завесить ispell с ее помощью очень даже можно. Поэтому остается лишь раздобыть словарь в требуемой кодировке , после чего пометить флажок "use alternative language" и в расположенном рядом с ним текстовом поле ввести название соответствующего файла (для cp1251 он называется russianw).Публикация в SGML
XML, все же, -- дело пусть недалекого, но будущего. Что делать для публикации SGML документов прямо сейчас? Можно придумать несколько подходов.Если SGML используют для распространения документации в значительных объемах, например, на CD, то на тот же CD можно положить какой-либо SGML-браузер. Можно, к примеру назвать или .
Если же документы делаются доступными через WWW, то их придется переводить в формат HTML. Это можно делать заранее, а можно -- "на лету", используя CGI или аналогичный интерфейс WWW сервера.
Путь первый, новаторский
Предпочтительной кодировкой в Red Hat 8.0 является UTF-8. Устанавливаемые по умолчанию шрифт "latarcyrheb-sun16" и локаль "en_US.UTF-8" позволяют корректно отображать символы латинского, русского и арабского алфавитов, а также иврита. Обратите внимание, что для многобайтовых UTF-локалей не столь важно, к какому языку они относятся: единственным ощутимым изменением при использовании "ru_RU.UTF-8" будет смена формата представления даты, времени, валюты и языка интерфейса некоторых программ (собственно, UTF-8 и Unicode и были созданы для того, чтобы обеспечить единообразие работы с любым алфавитом). Таким образом, если Вы собираетесь русифицировать консоль Red Hat в UTF-режиме, Вам можно позавидовать - всю необходимую работу за Вас уже проделали разработчики дистрибутива. И посочувствовать: Вам это особенно не поможет.Разъясним последнее утверждение. Используемый по умолчанию шрифт уже содержит символы кириллицы, а консоль работает в режиме UTF, поэтому символы русского алфавита должны выводиться без дополнительных усилий. К сожалению, в данной схеме возникает неприятный побочный эффект - сильно затрудняется вывод данных в не-UTF кодировке (например KOI8-R). И если с кириллицей в именах файлов на vfat-разделах справиться достаточно легко (в параметрах монтирования в /etc/fstab необходимо указать "codepage=866,iocharset=utf8" вместо традиционного "codepage=866,iocharset=koi8-r"), с русскоязычными документами придется основательно повозиться: Midnight Commander 4.5.55 не умеет перекодировать в UTF-8 "на лету". Кроме того, некоторые приложения могут некорректно работать в UTF-локали, поскольку не поддерживают многобайтовые кодировки (за примером далеко ходить не надо - взять все тот же Midnight Commander). В других программах могут пропасть символы псевдографики. В довершение всего, консоль теряет возможность отображать цвета с кодом больше 7 (т.е. все "яркие"), так что файлы и директории на панелях MC оказываются совершенно неразличимыми. Если все это Вас не смущает, Вам остается только поставить соответствующую раскладку клавиатуры (например, ua-utf), и - поздравляем! Ваша консоль успешно русифицирована.
Путь второй: старый, проверенный
Данный способ является своеобразным "шагом назад", поскольку подразумевает, что Вы будете использовать устаревшую кодировку KOI8-R вместо современной UTF. Если Вы занимались русификацией предыдущих версий Red Hat,часть нижеизложенного будет Вам знакома. Остальные читатели в случае необходимости могут обратиться за детальной информацией к Cyrillic-HOWTO.Итак, попробуем применить хорошо известное решение: SYSFONT="Cyr_a8x16" и SYSFONTACM="koi2alt" (о его плюсах написано все в том же HOWTO). К сожалению, в таком виде оно не работает. Причина кроется в скрипте /sbin/setsysfont, который почти не менялся со времен consoletools. Любой заглянувший в него не может не обратить внимания на вопиющую дискриминацию - для kbd (setfont) не поддерживается переменная SYSFONTACM! Я отправил сообщение об этой ошибке (включая исправленную версию сценария) на bugzilla.redhat.com, исправление должно появиться в initscripts 6.96-1 или более поздней версии. После исправления этой ошибки (например, путем скачивания моей версии setsysfont) и установки вашей любимой клавиатурной раскладки (что-нибудь типа ru*, но никак не *-utf!) не забудьте удалить подстроку "UTF-8" из имени локали, поскольку иначе консоль переключится в режим UTF и откажется принимать Вашу KOI8-R.
После всех этих манипуляций файл /etc/sysconfig/i18n будет иметь следующий вид: LANG="en_US"
SUPPORTED="по умолчанию"
SYSFONT="Cyr_a8x16"
SYSFONTACM="koi2alt"
Если Вашей целью было создание "пан-европейской" версии Linux (это когда русские буквы отображаются, но все общение с системой происходит на английском языке), Вас опять можно поздравить. Если нет - читайте дальше.
Для окончательной русификации (установки российского формата даты, времени, валюты, русскоязычных сообщений в отдельных программах) следует установить соответствующую локаль, например "ru_RU.koi8r". К сожалению, здесь нас опять поджидают проблемы - в такой среде у Midnight Commander и некоторых других программ (setuptools, например) пропадет псевдографика. MC, помимо этого, опять отказывается выводить русские буквы где-либо, кроме меню, да и в нем - в искаженном виде. "Корень зла" во всех случаях один - используемые библиотеки (NCurses, S-Lang) скомпилированы с поддержкой Unicdoe, в то время как она нам совсем не нужна. Необходимо перекомпилировать их в однобайтовом режиме (вот он, истинный шаг назад - мы, по сути, устраняем изменения, внесенные в Red Hat Linux после версии 7.3). Рассмотрим эту процедуру на примере Midnight Commander. Его "излечение" проходит в два этапа:
На мой взгляд, наиболее приемлемым вариантом русификации является "пан-европейский" KOI8-R. UTF-режим, безусловно, удобен, но еще недостаточно отлажен. Думается, что им вполне можно будет пользоваться в версиях 8.2-8.3. Полная русификация в не-UTF режиме - слишком трудоемкая операция. Если русскоязычный интерфейс для вас превыше всего, имеет смысл обратить внимание на KDE, благо с ее русификацией особых проблем не возникает.
Автор выражает благодарность Шабунио Ю.А. за ценные идеи и плодотворную дискуссию.
Работа с несколькими окнами.
Экран редактора Emacs может быть разделен на несколько частей, называемых окнами (не путать с окнами в многооконных системах), для одновременной работы с несколькими буферами. Время от времени Emacs сам открывает новые окна, чтобы отобразить соответствующую информацию (например, справочную информацию).Нажатие C-x 2 (или выбор пункта Split Window из меню File) приводит к разделу экрана редактора пополам, т.е. на два окна. Оба окна отображают информацию из одного и того же буфера, текущего на момент раздела. Чтобы загрузить в разные окна разные файлы нужно выполнить следующее:

Перемещение курсора в другое окно.
Переход из одного окна в другое осуществляется нажатием комбинации C-x o ("o" - буква, не цифра).
Удаление окна, в котором находится курсор, осуществляется комбинацией C-x 0 ("0" - цифра, не буква) или командой delete-window.
Комбинация C-x 1 запускает команду delete-other-windows, которая закрывает все окна, кроме текущего. Закрытие окна не означает закрытие буфера. Все буферы остаются доступными для редактирования, в любой из буферов можно переключится нажатием C-x b.
Чтобы вывести список доступных для редактирования буферов и переключиться в один из них, используется похожая комбинация клавиш: C-x С-b (list-buffers). Чтобы переключиться в один из отображенных в списке буферов, нажмите C-x о. Затем переместите курсор в строку с указанием имени буфера и нажмите 1. Буфер с выбранным именем отобразится во вновь открытом окне.
Вышеописанные операции с буферами также доступны из меню Buffers.
Работа в командном режиме
Команды в этом режиме имеют формат :[count] command [where] Многие команды состоят всего из одного символа. Рассматриваемые в данном разделе команды - наиболее используемые в редакторе vi.
Аргумент count - число, начинающееся с символа от 1 до 9. Например : команда "x" удаляет символ в позиции курсора, при вводе команды "23x" - будут удалены 23 символа.
Некоторые команды используют аргумент where, определяющий границы текста, к которым будет применена команда, также параметр where может быть командой перемещения курсора.
Разбиение Оперативного Элемента
Команда PSGML Sgml-split-element, вызываемая через C-c Enter, разбивает текущий элемент на два в позиции курсора. Если нужно, чтобы существующий параграф был разбит на два параграфа, нажмите указанную выше комбинацию клавиш, и Emacs вставит конечный и начальный тэги, соответствующие типу разбиваемого элемента. При этом курсор будет установлен после начального тэга нового элемента.Помните, что команда Sgml-split-element автоматически не вставляет другие элементы, более высокого уровня вложения. Для проверки используйте команду sgml-next-trouble-spot или соответствующую комбинацию C-c C-o.
Еще одна полезная функция команды Sgml-split-element - возможность разделения структуры более высокого уровня. Так, если при нажатии C-c Enter был разделен элемент sect2, то в окне минибуфера появится следующее сообщение:
| Repeat the command to split the containing sect1 element |
Повторное нажатие C-c Enter приведет к вставке конечного и начального тэгов sect1. Поскольку элемент sect1 требует наличия элемента title, то после нажатия C-c C-o в окне минибуфера появится сообщение о наличии ошибок в структуре текста.
Можно использовать комбинацию клавиш M-q (команда fill-paragraph), чтобы корректировать концы строки, но далее, в разделе "Выравнивание текста элемента", будет показан более продуктивный путь.
Размещение рисунков.
Изображения в форматах GIF/JPEG размещаются в тексте с помощью ключевого слова. Синтаксис:%image filename (alignment) (width) (height)
где filename указывает имя фаила изображения. Дополнительные аргументы управляют выравниванием и размером изображения. Выравнивание может быть по левому краю, по правому, по центру или центрирование с указанием ширины и высоты изображения в пикселях. Как пример, следующее изображение

было размещено с помощью строки:
%image mouse.gif centre
Разное
^G Показать имя файла и статус. ^L Очистить и перерисовать экран. ^R Перерисовать экран и удалить ошибочные строки. ^[ Отменить частично набранную команду. ^^ Возвратиться к последнему редактированному файлу. ! Выполнить команду оболочки. & Повторить предыдущую команду :s. . Повторить последнюю команду. : Начало команды редактора "EX". Команда выполняется один раз после нажатия клавиши "Enter". @ Напечатать команду из определенного буфера. U Восстановить текущую строку. m Отметить текущую позицию определенным символом. u Отменить последнее изменение файла. Повторная команда восстанавливает изменения.Разновидности Emacs
Существует две основных разновидности Emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии Emacs, написанного Столлманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому . В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией Emacs.Кроме двух основных версий, существует и множество других редакторов, считающихся вариантами Emacs. Полный их список можно найти на странице .
В данном документе я буду рассказывать, прежде всего, о GNU Emacs, входящем в поставку . Однако большая часть сказанного применима и для XEmacs, а также для версий Emacs в других дистрибутивах Linux.
| След. | ||
| Основы работы с Emacs |
Существует две основных разновидности Emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии Emacs, написанного Столлманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому . В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией Emacs.
Кроме двух основных версий, существует и множество других редакторов, считающихся вариантами Emacs. Полный их список можно найти на странице .
В данном документе я буду рассказывать, прежде всего, о GNU Emacs, входящем в поставку . Однако большая часть сказанного применима и для XEmacs, а также для версий Emacs в других дистрибутивах Linux.
| След. | ||
| Основы работы с Emacs |
Редактирование атрибутов
Существует четыре способа редактирования атрибутов, включая возможности меню PSGML. Первый способ - просто пеместить курсор в открывающий тэг элемента и набрать имя атрибута и его значение. Рассмотрим пример:| Now, the Pequod had sailed from Nantucked at the very beginning of the Season-on-the-line. |
Пусть нужно добавить атрибут HREF в элемент a. Для этого переместите курсор, установив его на открывающем тэге так, чтобы курсор был установлен на символе ">", и наберите имя атрибута и его значение. В результате должно получиться следующее:
| Now, the Pequod had sailed from Nantucket\ at the very beginning of the Season-on-the-line. |
Конечно, описанную выше процедуру можно выполнить в любом текстовом редакторе. Ниже будут рассмотрены методы редактирования атрибутов, использующие преимущества PSGML. Сама процедура редактирования значительно упрощается.
Команда PSGML sgml-insert-attribute (комбинация C-c + или пункт Insert Attribute меню Markup) представляет более универсаленый способ вставки атрибутов, поскольку предоставляет возможность выбора не только имен, но и допустимых значений. Установите курсор либо на открывающем тэге, либо на закрывающем, либо в области ввода текста данного элемента и нажимите C-c +. В окне минибуфера отобразится подсказка:
| Attribute name: |
При вводе имени атрибута можно воспользоваться функцией "дописывания". В случае, если введенных символов недостаточно для однозначной идентификации имени атрибута, то варианты названия будут отображены в отдельном окне.
После того, как имя атрибута введено в окне минибуфера и нажат Enter, в окне минибуфера отображается имя атрибута (тип данных) и текущее значение (если значение атрибута не было оговорено особо), а также предлагается ввести новое значение. Вид экрана представлен на рис. Вид командной строки для команды ..

Вид командной строки для команды sgml-insert-attribute.
Не нужно набирать кавычки при вводе значения атрибута - PSGML добавляет их сам. В окне минибуфера введите значение атрибута: http: // www.nantucket.gov, как это показано на рис. Ввод нового значения аттрибута .,

Ввод нового значения аттрибута href.
и нажмите Enter. При этом значение атрибута должно быть изменено. Результат представлен на рис. Результат редактирования значения аттрибута ..

Результат редактирования значения аттрибута href.
При вводе значений атрибутов также можно использовать функцию "дописывания", если объявленное значение является группой названий. Например, определением элемента HTML DTD предусмотрено наличие атрибута ALIGN:
| ALIGN (top|middle|bottom) #IMPLIED |
Другой, еще более простой способ редактирования атрибутов, особенно при необходимости редактирования более одного атрибута того же самого элемента, является использование команды sgml-edit-attributes (комбинация клавиш C-c C-a или пункт Edit Attributes меню Modify). В новом окне будет выведен список допустимых атрибутов текущего элемента в виде формы, которую нужно заполнить. Рассмотрим пример. Нажмите C-c C-a, предварительно поместив курсор на слове Nantucket. Вид экрана представлен на рис. .

Ввод значений аттрибутов с помощью команды sgml-edit-attributes.
Переместите курсор на значение какого-нибудь другого атрибута и введите новое значение. Быстрый переход к полю значения следующего по списку атрибута осуществляется нажатием кнопки Tab. После того, как значения всех интересующих атрибутов были изменены, нажмите C-c C-c. При этом внесенные значения будут отображены в тексте документа, а окно атрибутов будет закрыто. Если нужно закрыть окно атрибутов без сохранения, нажмите C-x 0.
Режим "дописывания" не работает при вводе значений атрибутов, но в этом нет нужды, поскольку в окне редактирования атрибута перечислены возможные варианты значений всех атрибутов.

Окно редактирования атрибута для элемента IMG.
Например, на рис. Окно редактирования атрибута для элемента . показано окно редактирования атрибута для элемента HTML IMG; обратите внимание на список "bottom middle top" во второй строке атрибута ALIGN:
Четвертый и самый простой способ редактирования атрибутов со значением - через пункт Insert Attribute от меню Markup, если, конечно, версия Emacs допускает использование меню. В отличие от команды вставки атрибута sgml-insert-attribute с быстрой клавишей C-c +, пункт Insert Attribute от меню Markup позволяет редактировать значения уже существующих атрибутов. Нужно просто поместить курсор в поле атрибута, вызвать пункт меню, выбрать тип атрибута, а затем выбрать новое значение атрибута из предложенных.
Редактирование Документов SGML в редакторе Emacs и PSGML
Редактор Emacs фактически имеет встроенный режим для редактирования документов SGML, но это просто автоматизированная вставка разделителей - тэгов ("<" и ">") - и запрос внешней программы, который может проверять синтаксис файла типа nsgmls или sgmls.PSGML - добавочный режим SGML для Emacs, расширяющий возможности SGML. PSGML расширяют возможности редактора Emacs. Данный режим позволяет редактировать документ, не волнуясь о его структуре, поскольку большинство задач, поддерживающих структуру документа, автоматизировано. Режим PSGML обеспечивает вставку соответствующих тэгов нажатием минимального числа клавиш или даже автоматически. Данный режим позволяет обнаруживать структурные ошибки, выравнивать тэги, обозначивая вложенные структуры. Допускается выделение тэгов, комментариев и ссылок на объекты различным шрифтом или цветом, чтобы облегчить визуальное восприятие структуры.
Редактирование нескольких файлов
Комбинация C-x C-f запускает команду поиска файлов - find-file. Используя эту комбинацию (или выбирая Find File... меню File), пользователь как бы говорит редактору: "Открыть файл, имя которого будет задано, если он уже в буфере - показать этот буфер. Если файла с таким именем нет в буфере, но он есть на диске - сообщить, где именно он находится, чтобы можно было его открыть. Если такого файла вообще не существует - создать его." В окне минибуфера появится сообщение с предложением ввести имя текущей директории, где возможно находится файл:| Find file: c:\pathname\ |
Если требуемый файл находится в этой директории, просто введите его имя. В противном случае, отредактируйте имя директории. Если имя файла трудно запомнить, в следующем параграфе будет показано каким образом вывести список файлов текущей директории в отдельном окне Emacs, а также как пользоваться функцией "дописывания".
Чтобы переключиться из одного активного буфера в другой, используйте комбинацию C-x b (команда switch-to-buffer). Emacs попросит ввести имя буфера, которое совпадает с именем редактируемого файла. При вводе имени буфера также можно пользоваться функцией "дописывания".
Все буферы используют один и тот же буфер обмена (kill ring). Например, чтобы переместить параграф из file1.txt в file2.txt, нужно выполнить следующие действия:
После завершения операции копирования, чтобы сохранить изменения, нажмите C-x C-s. Данную команду удобно использовать, если нужно сохранить изменения только в текущем буфере, а остальные файлы оставить без изменений. Затем можно выйти из Emacs без сохранения, воспользовавшись C-x C-c.
Редактирование текста в Emacs
Редактор Emacs предоставляет пользователю возможность выбора между командой и комбинацией клавиш для выполнения той или иной операции. В данной главе описывается "минимальный набор" комбинаций, необходимых для работы.Редактирование
dd - стирание текущей строкиdдвижение курсора - стирание от текущего положения курсора до нового, задаваемого символом перемещения курсора(Нажатие кнопок стрелочной клавиатуры НЕ ЯВЛЯЕТСЯ движением курсора и не может использоваться в комбинированных командах.)
J - слияние текущей строки со следующей
u - отмена последней команды
. - повтор последней команды
: - переход в режим командной строки
Редактор текстов - каким хотелось бы видеть
Из данного выше определения редактора следует, что для огромного количества трудящихся это - один из основных инструментов. А такой инструмент всегда хочется видеть если не идеальным, то максимально к идеалу приближенным. Каковы же требования к идеальному редактору?Разумеется, они разные для разных задач. Одно дело - редактор для программиста, и совсем другое - для писателя. Все же попробую сформулировать свои представления о редакторе с позиций составления "из головы" длинных структурированных текстов, претендующих на оригинальность и содержательность.
Текстовый редактор, заслуживающий своего имени, кроме ввода букв, в том числе и русских (это - важнейшее условие, но о нем - в самом конце), должен обеспечивать:
Кроме того, для редакторов графического режима необходима настраиваемость цвета фона и текста, гарнитуры и размера экранных шрифтов - мало радости будет от любых развитых функций, если для рассмотрения их потребуется ломать глаза: ведь представления разработчика о зрительном комфорте не обязаны совпадать с вашими.
Крайне желательны также - расцветка синтаксиса, по крайней мере HTML и TeX, многооконный режим работы, возможность работы с различными кодировками русского языка, ну и как предел мечтаний - поддержка проектов из нескольких файлов, с возможностью групповых операций (скажем, поиска и замены) в них.
Должен сразу сказать - хоть "все страны облазил, и Европе был, и в Азии", идеала своего я пока не нашел. И не только под Linux, но и под Windows. Онако именно с позиций приближения к этому идеалу я и буду описывать ниже текстовые редакторы.
Но сначала - пару слов о том, какие они бывают вообще. А бывают они, во-первых, консольные, и во-вторых - графические (то есть работающие в графическом режиме). С другой стороны, бывают редакторы общего назначения и специализированные, например, редакторы для программистов. Хотя последние подчас могут использоваться и в качестве первых.
Количество текстовых редакторов под Linux достаточно велико. Что же они из себя представляют, для чего предназначены и на что способны?
Чтобы как-то прояснить этот вопрос, я решил провести эксперимент, как обычно, на самом себе. А именно, последовательно загружал каждый из попавшихся под руку редакторов и описывал в нем свои впечатления (о нем же, конечно). Пользуясь в основном базовыми средствами, доступными по умолчанию. При этом я не старался не только описать, но даже постигнуть все потенциальное богатство описываемых систем, а только пытался определить, насколько они удобны для поставленной выше цели.
Начал я, естественно, с редакторов консольных. Почему? - спросите вы меня. Ведь все прогрессивное человечество уже пол-десятилетия работает в графических средах.
На этот вопрос не трудно ответить любому обладателю близорукости пяти и более диоптрий, проводящему за редактированием текстов пять и более часов. Потому что, не смотря на все безусловные достоинства графического режима, режим текстовый (даже при далеко не идеальном мониторе) обеспечивает существенно меньшую нагрузку на зрение.
Кроме того, в ряде случаев требуется слегка подправить некий конфигурационный файл. Для чего нелепо вызывать редактор графического режима - ведь на работу в нем уйдет меньше времени, чем на загрузку.
А бывает и хуже - сбой системы просто не позволяет загрузить графический режим до внесения соответствующих исправлений. Которые, естественно, можно осуществить только консольным текстовым редактором. Наконец, при совсем уж скверной ситуации, требующей загрузки с дискеты, консольный текстовый редактор - единственно доступный инструмент по определению.
Именно поэтому первое, что приходит на ум из консольных редакторов -
Редактор vi
Крутиков М.П.,REDT
Редактор REDT разработан в Государственном Университете Вашингтона, базируется на библиотеке curses и следует модели редактирования, принятой в EDT - известном редакторе из VAX/VMS. Однако чистым эмулятором EDT этот редактор назвать нельзя: средства обработки текста в REDT выполнены в стиле редакторов для MS-DOS (выделение в прямоугольник, курсор может выходить за конец строки, наличие строки статуса). Раскладка функциональной клавиатуры может быть полностью изменена. REDT по достоинству оценят прежние пользователи редакторов EVE, EDT и SEDT.Можно упомянуть еще такие эмуляторы редактора VMS/EDT, как OpenEDT от фирмы Acceler8 Technology и EDT+ от Boston Business Computing, а также SPF/UX (эмулятор редактора ISPF компании IBM), разработанный фирмой Uneclipse Software Systems.
Как видите, выбор текстовых редакторов все-таки имеется, и с операционной системой UNIX можно "дружить". Надеюсь, что теперь, располагая приведенной в данной статье информацией, в ответ на ненавязчивое предложение освоить vi Вы не станете делать круглые глаза, а скажете: "Спасибо, друг, но я не увлекаюсь криптографией - у меня есть кое-что получше."
| Название, версия | Производитель | Платформы | Цена | Где взять | Примечание |
| GNU Emacs 19.19 | Ready-to-Run Software (USA, Groton) | HR-UX, OSF/1Su | $175 - 1 польз. $775 - 10 польз. $695 - модуль поддержки С, С++ | т.(1-508) 448-39-59 | GNU Emacs 19.22 в текстах есть на AIX ftp.demos.su в каталоге /unix/gnu |
| UniPress Emacs 2.20e | UniPress Software Inc. (USA, Edison) | AIX, HP-UX, IRIX, Solaris и др. | $395 - 1 польз. 995 - 10 польз. | т.(1-908) 287-21-00 | - |
| Siren Editor 1.0 | Siren Software Corp. (USA, Menlo Park) | AIX, HP-UX, IRIX, SCO, SunOS | $249 - 1 польз. $1795 - 10 польз. | т.(1-415) 322-06-00 | - |
| Iris X Editor 1.3.7 | Iris Computing Labs (USA, Santa Fe) | AIX, HP-UX, IRIX, Solaris, SunOS | $295 - 1 польз. $2212 - 10 польз. | тел. в Москве: (095) 168-88-23 | Имеются две демо-версии для SCO и HP-UX на ftp.demos.su в каталоге /demo/ted |
| TED 2.1a | Eagle Dynamics Ltd. (Россия, Москва) | SCO, Xenix, ISC, SVR4, BSD, Coherent, HP-UX, Solaris, AIX, Topix, Dynix, SINIX, Bestix, ICL DRS.NX и др. | от $287 на любое количество польз. | andy@eagle.msk.su | - |
| Nedit 3.1.1 | Fermi National Accelerator Lab (USA, Batavia) | AIX, Ultrix, OSF/1, SCO | бесплатно | - | на в каталоге /unix/X11. Только под X/Motif, в исходных текстах |
| AUIS ez | Andrew Consortium (USA, Pitsburg) | AIX, Solaris, SunOS, HP-UX, SCO, Ultrix, Linux, VAX/BSD, IRIX | бесплатно | - | на ftp/andrew/cmu/edu в каталоге /pub/AUIS. Только под X11, в исходных текстах |
| YUI 1.0 | ИТК (Россия, Ижевск) | Linux, ISC, SunOS, BSD, DOS | бесплатно | - | на почтовом сервере mailserv@izhmark/udmurtia.su в каталоге /unix/edit/yui. Бета версия, в исполняемом виде. |
| VEDIT 2.30 | Greenview Data Inc. (USA, Ann Arbor) | SCO, Xenix, DOS | $350 - 5 польз. | тел. в Москве: (095) 158-95-20 | Только для тестовых терминалов |
| Edit*2000 1.40 | Computer Innovations (USA, Shrewbury) | SCO, Solaris, SVR4 и др. | $395 - 1 польз. $2495 - 10 польз. | т.(1-908) 542-59-20 | - |
| SlickEdit 2.3 | MicroEdge Inc. (USA, Raleigh) | AIX, HP-UX, IRIX, SCO, Solaris, SunOS, SVR4 и др. | $425 - 1 польз. $2950 - 10 польз. | т.(1-919) 790-16-91 | - |
| REDT 2.3.2 | Washington State Univ. (USA, Pullman) | AIX, IRIX, USL, SunOS, HP-UX, Ultrix | ??? | т.(1-509) 335-11-00 | - |
| nu/TPU 3.0 | a/Soft Development Inc. (USA, Bedford) | AIX, HP-UX, Solaris, SunOS, IRIX, OSF/1 и др. | $499 - 2 польз. $1500 - 8 польз. | т.(1-603) 666-66-99 | Эмулятор редактора EVE из VAX/VMS |
Таблица 1.
Общая информация о редакторах.
| Название, версия | GNU Emacs 19.19 | UniPress Emacs 2.20e | Siren Editor 1.0 | Iris X Editor 1.3.7 | TED 2.1a | VEDIT 2.30 | Nedit 3.1.1 | Edit*2000 1.40 | SlickEdit 2.3 | nu/TPU 3.0 |
| Ограничение | ||||||||||
| Макс. длина строки | O/C | O/C | O/C | O/C | O/C | O/C | O/C | O/C | 25 | O/C |
| Макс. размер файла | O/C | O/C | O/C | O/C | O/C | O/C | O/C | O/C | 1 GB | O/C |
| Макс. число открытых файлов | O/C | O/C | O/C | O/C | O/C | 37 | O/C | O/C | О/С | O/C |
| Возможности редактирования | ||||||||||
| Поддержка мыши | под XWS | + | + | + | + | + | + | - | - | + |
| Автосдвиг | + | + | + | + | + | + | + | + | + | - |
| Прямоугольные блоки | + | + | + | + | + | + | - | + | + | + |
| Замена табуляции пробелам | + | + | - | + | + | + | + | + | + | + |
| Нерегулярные табуляции | + | + | - | - | + | - | - | + | + | |
| Перемещение курсора за EOL | - | - | + | - | + | + | - | + | + | + |
| Перестраиваемая клавиатура | + | + | + | + | + | + | + | + | + | + |
| Эмуляция клавиатур | vi, EDT | EDT | - | - | - | WordStar, Wperfect, brief | - | - | emacs, brief | EDT, Wperfect |
| Редактирование DOS-файлов | + | + | + | + | + | + | - | + | + | - |
| Редактирование двоичных файлов | + | + | - | - | + | + | - | + | + | - |
| Редактирование МАС файлов | - | + | + | - | + | - | - | + | + | - |
| Макроязык | + | + | - | + | - | + | - | - | + | + |
| Макротладчик | + | - | - | - | - | + | - | - | - | - |
| Поддержка программирования | ||||||||||
| Шаблоны языковых конструкций | + | + | - | - | + | - | - | - | + | + |
| Компилирование из редактора | + | + | - | + | + | + | + | + | + | + |
| Поиск ошибок компиляции | + | + | - | + | + | + | + | + | + | - |
| Цветовое выделение синтаксиса | + | - | - | - | - | - | - | - | - | - |
| Проверка парности скобок | + | + | - | + | + | + | + | + | + | + |
| Тэги | + | + | - | + | + | - | + | - | + | - |
| Обработка текста | ||||||||||
| Перенос слов (word wrap) | + | + | - | - | + | + | + | + | + | + |
| Выравнивание по левой границе | + | + | - | + | + | + | + | + | + | + |
| Выравнивание по правой границе | - | + | - | - | + | + | - | - | - | + |
| Полное выравнивание | - | + | - | - | + | + | - | - | + | + |
| Центрирование | - | + | - | - | + | - | - | - | - | + |
| Проверка правописания | + | + | - | - | + | + | - | - | - | - |
Таблица 2.
Сравнительная характеристика возможностей редакторов.
// Издательство "Открытые Системы" (www.osp.ru)
Постоянный адрес статьи: http://www.osp.ru/os/1994/04/72.htm
Регулярное выражение
Для осуществление поиска в AWK языке допускается использование регулярных выражений, определенных в описании SED, (см. ``Неинтерактивный текстовый редактор SED'' 2.1), заключенных в``/ /''. Дополнения к использованию регулярных выражений, допускаемые в AWK-языке:Например:
/Olga/ - Указывает на строки, содержащие Olga.
/[Oo]lga|[Mm]ike|[Mm]al/ - Указывает на строки, содержащие Olga или olga или Mike или mike или Mal или mal.
/number[0-9]/ - Указывает на строки, содержащие number0 или number1 или ... number9.
/\/.+\// - Указывает на строки, содержащие любое количество символов, больше или равное 1, заключенных в / /.
Для осуществления отбора строк для редактирования, в адресах команд SED допускается использование регулярных выражений, заключенных в "/ /" и определяемых следующим образом:
Примеры:
/olga/ - указывает на строки содержащие "olga" , "abcolgadef" ,...;
/ol.*ga/ - указывает на строки, содержащие "olga" , "olabcga" ,....;
/^[Oo]lga/ - на строки, начинающиеся с "Olga" или "olga" ;
/./ - попадают все строки, имеющие хотя бы 1 символ (не newline );
/\./ - попадают строки, содержащие "." ;
/^[^ ]/ - строки, не начинающиеся с " " ;
/\(ol\).*\1/ - строки, содержащие два вхождения "ol" не подряд.
Режим командной строки
Режим командной строки позволяет производить более глобальные операции с текстом: записывать отредактированный текст в файл, считывать новый файл, выходить из vi, производить настройку редактора, поиск по шаблону, а также осуществлять некоторые функции редактирования.Команды отображаются в нижней части экрана (в ``командной'' строке редактора).
Режимы работы VI
Первое, что узнают пользователи о редакторе vi - два режима его работы : командный и вставки текста. Командный - режим ввода команд. Обычно эти команды короткие - состоят из одной или двух букв. Режим вставки текста - вставляется в файл то, что вы набираете на клавиатуре.По умолчанию редактор запускается в командном режиме. Для переключения в режим вставки текста существует несколько команд. Наиболее часто используемые среди них - "a" и "i". Ниже мы остановимся подробнее на этих командах. Чтобы выйти из режима вставки текста нажмите клавишу "Escape". Если у вас нет такой клавиши попробуйте "^[" или "control-[" Вы можете нажать клавишу "Escape" дважды и редактор все равно будет командном режиме. Нажатие клавиши "Escape" в командном режиме не переведет его ни в какой другой. Может только прозвучать сигнал, сообщающий, что вы уже находитесь в командном режиме.
РТПЗТБННЩ-РЕТЕЧПДЮЙЛЙ Ч Linux
бЧФПТ: дЕОЙУ лПМЙУОЙЮЕОЛП,пРХВМЙЛПЧБОП: 29.4.2003
ї 2002, йЪДБФЕМШУЛЙК ДПН ?лпнршафеттб? |
цХТОБМ ?упжфеттб? |
ьФПФ НБФЕТЙБМ чЩ ЧУЕЗДБ УНПЦЕФЕ ОБКФЙ РП ЕЗП РПУФПСООПНХ БДТЕУХ:љ
хЦЕ ДБЧОП УФБОДБТФОЩНЙ ПЖЙУОЩНЙ РТЙМПЦЕОЙСНЙ, ХУФБОПЧМЕООЩНЙ РПЮФЙ ОБ ЛБЦДПН ЛПНРШАФЕТЕ, УФБМЙ РТПЗТБННЩ?РЕТЕЧПДЮЙЛЙ. уТЕДЙ РТПЗТБНН ДМС Windows ОБЙВПМЕЕ ЙЪЧЕУФОЩНЙ СЧМСАФУС Stylus (Prompt), Socrat Й Lingvo.
ч ЬФПК ОЕВПМШЫПК УФБФШЕ НЩ РПЗПЧПТЙН П РТПЗТБННБИ-РЕТЕЧПДЮЙЛБИ ДМС Linux ? Mueller Й Slowo. рТБЧДБ, РЕТЕЧПДЮЙЛБНЙ ЧУЕ ЬФЙ РТПЗТБННЩ НПЦОП ОБЪЧБФШ МЙЫШ У ВПМШЫПК ОБФСЦЛПК. чУЕ ЬФЙ РТПЗТБННЩ ? ЬФП УМПЧБТЙ. рП УЧПЕК ТБВПФЕ ПОЙ ОБРПНЙОБАФ Lingvo: ЧЩ ЧЧПДЙФЕ УМПЧП, Б УМПЧБТШ РЕТЕЧПДЙФ ЕЗП. б ЧПФ РПМХЮЙФШ ВПМЕЕ ЙМЙ НЕОЕЕ УЧСЪОЩК РЕТЕЧПД РЕТЕМПЦЕОЙС ОЕ РПЪЧПМСЕФ ОЙ ПДОБ РТПЗТБННБ.
рТПЗТБННБ MOVA (ЙОПЗДБ ЕЕ ОБЪЩЧБАФ Mueller ЙЪ-ЪБ ЙУРПМШЪПЧБОЙС ОЕА УМПЧБТС нАММЕТБ) ? ПЮЕОШ ХДПВОЩК Ч ЙУРПМШЪПЧБОЙЙ РЕТЕЧПДЮЙЛ (ТЙУ. 1), ТБЪТБВПФБООЩК еЧЗЕОЙЕН гЩНВБМАЛПН. рТПЗТБННБ ТБУРТПУФТБОСЕФУС РП МЙГЕОЪЙЙ GPL, ФП ЕУФШ УЧПВПДОП.
љ

тЙУ. 1. рТПЗТБННБ movaTK
дМС ХУФБОПЧЛЙ РТПЗТБННЩ MOVA ОХЦОП ХУФБОПЧЙФШ ФТЙ РБЛЕФБ:
рЕТЧЩК РБЛЕФ УПДЕТЦЙФ РТПЗТБННХ mova, ЧФПТПК ? ЬФП УМПЧБТШ ДМС РТПЗТБННЩ, Б ФТЕФЙК ? ЬФП ОБВПТ ЫТЙЖФПЧ, ЛПФПТЩЕ ЙУРПМШЪХЕФ РТПЗТБННБ.
рПУМЕ ХУФБОПЧЛЙ РБЛЕФПЧ ЪБРХУФЙФШ РТПЗТБННХ mova НПЦОП МЙВП ЛПНБОДПК mova ЙМЙ ЦЕ ЛПНБОДПК movaTK. рЕТЧБС ЪБРХУЛБЕФ РТПЗТБННХ Ч ФЕЛУФПЧПН ТЕЦЙНЕ, Б ЧФПТБС ? Ч ЗТБЖЙЮЕУЛПН. нПЦОП ФБЛЦЕ ЪБРХУФЙФШ РТПЗТБННХ ЛПНБОДПК movaMTK. ч ЬФПН УМХЮБЕ ВХДЕФ ЙУРПМШЪПЧБО ДТХЗПК ЧЙД ЙОФЕТЖЕКУБ (УН. ТЙУ. 2, 3). фБЛПК ЙОФЕТЖЕКУ ХДПВОП ЙУРПМШЪПЧБФШ, ЕУМЙ ЧЩ ИПФЙФЕ ПУФБЧЙФШ ОБ ЬЛТБОЕ ТЕЪХМШФБФ РТЕДЩДХЭЕЗП РЕТЕЧПДБ, ИПФС Ч ЬФПН ТЕЦЙНЕ РТПЗТБННБ ТБВПФБЕФ НЕДМЕООЕЕ.
љ

тЙУ. 2. рТПЗТБННБ movaMTK
љ

тЙУ. 3. лБЦДЩК РЕТЕЧПД РТПЗТБННЩ movaMTK ПФЛТЩЧБЕФУС Ч ОПЧПН ПЛОЕ
вПМШЫЙН РТЕЙНХЭЕУФЧПН РТПЗТБННЩ СЧМСЕФУС УЛПТПУФШ ЕЕ ТБВПФЩ. рТПЗТБННБ ЙУРПМШЪХЕФ ИЕЫЙТПЧБОЙЕ УМПЧБТС, ВМБЗПДБТС ЮЕНХ РПЧФПТОЩК ЧЩЪПЧ РТПЗТБННЩ ОЕ ЪБОЙНБЕФ НОПЗП ЧТЕНЕОЙ ? ПУОПЧОЩЕ ЪБДЕТЦЛЙ РТЙИПДСФУС ОБ ЪБЗТХЪЛХ УМПЧБТС Ч РБНСФШ, ЛПФПТБС РТПЙУИПДЙФ, ЛБЛ РТБЧЙМП, РТЙ РЕТЧПН ЪБРХУЛЕ РТПЗТБННЩ. бЧФПТ ПФНЕЮБЕФ, ЮФП РТПЗТБННБ НПЦЕФ ТБВПФБФШ, ЕУМЙ ОБ ЧБЫЕН ЛПНРШАФЕТЕ ХУФБОПЧМЕОП 32нВ ПРЕТБФЙЧОПК РБНСФЙ ЙМЙ ЦЕ 64нВ РТЙ ЪБЗТХЦЕООПН KDE. с ХУФБОПЧЙМ РТПЗТБННХ ОБ ОЕ ?ХМШФТБ УПЧТЕНЕООПК? НБЫЙОЕ ? Celeron 433/128MB (Red Hat 7.3/KDE3) ? РТПЗТБННБ РТПУФП ?МЕФБМБ?, РПЬФПНХ ОЕ ПЮЕОШ ФП ВЕУРПЛПКФЕУШ П ФПН, ЮФП РТПЗТБННБ ВХДЕФ НЕДМЕООП Х ЧБУ ТБВПФБФШ. еУМЙ ЦЕ Х ЧБУ УФБТЕОШЛЙК ЛПНРШАФЕТ У ОЕВПМШЫЙН ЛПМЙЮЕУФЧПН ПРЕТБФЙЧОПК РБНСФЙ, РТПЮЙФБКФЕ ЖБКМ /usr/share/doc/mova-4.0/readme_mova_koi.txt ? Ч ОЕН ЧЩ ОБКДЕФЕ ТЕЛПНЕОДБГЙЙ ПФОПУЙФЕМШОП РПЧЩЫЕОЙС РТПЙЪЧПДЙФЕМШОПУФЙ ТБВПФЩ РТПЗТБННЩ.
тБВПФБФШ У РТПЗТБННПК ПЮЕОШ РТПУФП: ЧЧЕДЙФЕ УМПЧП ЙМЙ РТЕДМПЦЕОЙЕ Ч МЕЧХА ЮБУФШ ПЛОБ РТПЗТБННЩ, ЧЩДЕМЙФЕ ЕЗП (movaTK) Й ОБЦНЙФЕ ПДОХ ЙЪ ЛОПРПЛ ? Word, Symbols, Tandem of Words, Tandem of Symbols.
Word ? РТПЗТБННБ ВХДЕФ ЙУЛБФШ Ч УМПЧБТЕ УФБФША, ЛПФПТБС ОБЮЙОБЕФУС ОБ ЧЩДЕМЕООПЕ УМПЧП (ЙМЙ РЕТЧПЕ УМПЧП ЙЪ РТЕДМПЦЕОЙС)
Symbols ? РТПЗТБННБ ВХДЕФ ЙУЛБФШ Ч УМПЧБТЕ УФБФША, ЛПФПТБС ОБЮЙОБЕФУС ЧЩДЕМЕООЩЕ УЙНЧПМЩ.
Tandem of Words ? РТПЗТБННБ ВХДЕФ ЙУЛБФШ Ч УМПЧБТЕ УФБФША, УПДЕТЦБЭХА ЧЩДЕМЕООПЕ УПЮЕФБОЙЕ УМПЧ.
Tandem of Symbols ? РТПЗТБННБ ВХДЕФ ЙУЛБФШ Ч УМПЧБТЕ УФБФША, ЛПФПТБС УПДЕТЦЙФ ЧЩДЕМЕООПЕ УПЮЕФБОЙЕ УЙНЧПМПЧ.
дМС ЧЩИПДБ ЙЪ РТПЗТБННЩ ОБЦНЙФЕ ЛМБЧЙЫХ Esc.
рТПЗТБННХ НПЦОП УЛБЮБФШ РП БДТЕУХ . уМЕДХЕФ ПФНЕФЙФШ, ЮФП РТПЗТБННБ ХЦЕ ЧИПДЙФ Ч УПУФБЧ ОЕЛПФПТЩИ ДЙУФТЙВХФЙЧПЧ, ОБРТЙНЕТ, ALT Linux Junior 2
рТПЗТБННБ Slowo ТБЪТБВПФБОБ дНЙФТЙЕН бОЙУЙНПЧЩН. лТПНЕ ТБВПФЩ Ч ТЕЦЙНЕ УМПЧБТС РТПЗТБННБ ХНЕЕФ РПЛБЪЩЧБФШ ФТБОУЛТЙРГЙЙ. лБЛ Й Ч УМХЮБЕ У РТПЗТБННПК MOVA ЙНЕАФУС ФТЙ ТБЪМЙЮОЩЕ ЧЕТУЙЙ РТПЗТБННЩ:
Руководство по редактору vi для начинающих.
Wei-Meng Lee, 2003. Перевод - Master aka Vadim Tkachenko, .Ягуар (имеется в виду MacOS X 10.2 Jaguar- прим. SHuRuP'а) включает несколько текстовых редакторов. Из всех этих приложений опытные пользователи Unix предпочетают vi (Visual Editor). Пока пользователи GUI систем используют user friendly текстовые процессоры и редакторы, существует vi, который является мощным и функциональным текстовым редактором, а также экономичным и эффективным.
Тем не менее, изучение vi требует терпения и небольшой практики; следовательно, кривая изучения более крутая, чем при изучении текстового редактора, типа BBEdit. Но программисты, которые обычно используют vi, клянутся в этом. Для некоторых, использование vi - символ силы, отличающий мужчин от мальчиков.
Но что делать, если вам нужно быстро отредактировать файл на терминале, а времени для изучения vi нет? В этой статье, я представлю руководство по начальным знаниям редактора vi. Помните, информации по vi достаточно, чтобы написать книгу, и, следовательно, эта статья конец айсберга. Надо надеяться, эта статья откроет для вас редактор и подтолкнет на дальнейшее его изучение.
Запуск vi
Для запуска vi необходимо набрать в терминале:
vi textfile
Когда vi загрузится, вы увидете окно, похожее на следующее:

Первая важная вещь - это то, что редактор vi работает в двух режимах: режиме команд (Command mode) и режиме вставки (Insert mode). Режим команд используется, чтобы выполнять команды, например, команды удаления строки или символа. Чтобы начать печатать, необходимо перейти в режим вставки. Когда вы запускаете vi, он находится в режиме команд.
Перемещение курсора
Как показано на рисунке, чтобы управлять курсором, можно использовать клавиши h, j, k и l:

Сначала, такое управление курсором может показаться странным, но после небольшой практики вы получите огромное удобство.
Особенно интересно, что для перемещения курсора на пять знаков вправо, вы можете набрать 5l; чтобы переместить курсор на три линии вниз, вы можете набирать 3j и т.д.
Для того, чтобы переместить курсор на начало линии, нажмите 0 (числовой нуль). Для того, чтобы переместить курсор на конец линии, нажмите $.
Давайте попытаемся набирать некоторый текст в наш файл.
Вставка текста
Чтобы начать печатать, необходимо перейти в режим вставки. Нажмите i (для вставки символов) и введите следующее:
vi is an editor in Unix
Что происходит, если вы сделали ошибку и хотите ее изменить? Скорее всего, вы захотите переместить ваш курсор в символе, который нужно редактировать, и, делая это, вы будете использовать клавиши перемещения курсора, и тогда странные символы появятся у вас на экране. Если это так - не паникуйте. Просто нажмите клавишу Esc, чтобы возвратиться в режим команд. Нажатием клавиши Esc осуществляется переход из режима вставки в режим команд.
Добавление текста
Теперь, когда вы напечатали первое предложение, давайте его отредактируем. Я хочу прочитать: "vi is a powerful editor in Unix". Для этого переместите ваш курсор на символ "a" (подчеркивание указывает позицию вашего курсора):
vi is an editor in Unix
Нажмите a (для добавления символов) и введите " powerful". Должно получиться:
vi is a powerfuln editor in Unix
Вы увидели различие между a и i? Если бы вы нажали i, когда курсор находился на символе "a" и ввели " powerful", то у вас получилось бы следующее:
vi is powerfulan editor in Unix
Видите разницу?
Для того, чтобы вставить новую строку, просто нажмите клавишу Enter или используйте o, чтобы вставить новую строку между двумя строками.
Удаление текста
Для того, чтобы удалить символ, переместите курсор на символ и нажмите x.
Для того, чтобы удалить целое слово, например "powerful", переместите курсор к началу слова и нажмите dw:
vi is a powerful editor in Unix
Для того, чтобы удалить целую строку, переместите курсор на строку, которую вы хотите удалить, и нажмите dd. Для того, чтобы удалить несколько линий, нажмите dnd, где n - количество строк, подлежащих удалению. Например, d2d удалит две cтроки.
Сохранение файла
Если Вы запускаете vi с параметром <имя файла>, то, нажав :w и Enter, можно сохранить результат изменений. Когда вы нажмете : в командном режиме, курсор переместится в нижнюю часть экрана. Здесь можно будет вводить команды.
Если Вы запускаете vi без параметров, то вы должны определить имя файла:
~
~
:w newfile.txt
Вы можете использовать этот метод, чтобы сохранять файл под другим именем. Если имя файла, которое вы определяете, существует, то vi не перезапишет существующий файл. В таком случае, используйте :w!, чтобы перезаписать существующий файл.

Вставка файла
Со временем, возможно, вам потребуется вставить содержимое одного файла в текущий файл. В этом случае, можно использовать :r, например:
~
~
:r anotherfile.txt
Просто сначала установите курсор на строке, где необходимо вставить файл, а затем нажмите :r.
Выход из vi
Для того, чтобы выйти из vi, используйте команду :q. Если файл модифицирован и вы не сохранили изменения, vi не позволит вам выйти. Для того, чтобы выйти не сохраняя результатов, используйте :q!.
Открытие файла
Если Вы хотите отредактировать другой файл в то время, когда вы еще находитесь в vi, можно использовать :e, чтобы открыть другой файл для редактирования:
~
~
:e textfile.txt
Копирование, вырезка и вставка текста
Чтобы скопировать блока текста, вы можете использовать команду y. Для копирования строки используйте yy.
| v i is an editor in Unix Real programmers use vi! Have you tried it? |
yy скопирует строку "vi is an editor in Unix" |
| vi is an editor in Unix Real programmers use vi! Have you tried it? |
yw скопирует слово "editor" |
| vi is an editor in Unix Real programmers use vi! Have you tried it? |
y$ скопирует строку "editor in Unix" |
| vi is an editor in Unix Real programmers use vi! Have you tried it? |
В продолжение предыдущего примера, P (заглавная p): vi is an editor in Unixeditor in Unix Real programmers use vi! Have you tried it? p (строчная p): vi is an eeditor in Unixditor in Unix Real programmers use vi! Have you tried it? |
Отмена и возврат
Вы можете отменить ваше действие, нажав u. Заметьте, что вы можете отменить только последнее действие. Для возврата действия, используйте (.).
Изменение и замена текста
Вы можете изменить текст в файле, используя команду c. Например, cw позволяет изменить целое слово:
| vi is an editor in Unix Real programmers use vi! Have you tried it? |
cw Solid (и нажать escape) замена слова "Real" словом "Solid" |
Для того, чтобы изменить слово, начиная с текущей позиции курсора и до конца строки, используйте c$.
Для того, чтобы изменить слово, начиная с начала строки и до текущей позиции курсора, используйте c0 (числовой нуль).
Для того, чтобы заменить единственный символ, наведите курсор на символ, который вы хотите заменить, и нажмите r, а затем новый символ.
Поиск текста
Для того, чтобы искать конкретную часть текста в vi, используйте команду /, сопровожденную текстом, который необходимо найти. Например, /in ищет первое появление слова "in". Для повторения поиска нажмите / и затем Enter.
Чтобы заменять все слова в документе, вы можете использовать команду s. Например, :s/in/on заменит первое появление слова "in" словом "on".
:s/in/on/g заменит все слова "in" словом "on" на текущей строке.
:1,45s/in/on/g заменит все слова "in" словом "on" с 1-ой по 45-ю строки.
:%s/in/on/g заменит все случаи слова "in" словом "on" во всем файле.
Переход к строке
Если вы редактируете большой файл, можно переместиться непосредственно на нужную строку, печатая номер строки. Например, :4 переместит курсор непосредственно на 4-ю строку. Это полезно, когда вы отлаживаете программу, и компилятор указал ошибку в конкретной строке.
Я надеюсь, что это руководство оказалось для вас полезным. Помните, чем больше вы используете vi, тем больше вы получаете от него удовольствия. Удачи!
Источник - LinuxBegin.ru
http://linuxbegin.ru/
Адрес этой статьи:
http://linuxshop.ru/linuxbegin/article244.html
Русификация Linux
. Источник - .Русификация консоли
Для того чтобы русифицировать консоль, необходимо настроить как правильный вывод символов на экран, так и ввод их с клавиатуры. Начнем с вывода символов.
Как Linux осуществляет вывод какой-либо строки на экран? Сначала строка пропускается через так называемую screen map (карту соответствия), перекодирующую выводимые символы в соответствии с используемым терминалом шрифтом. Это позволяет, в принципе, использовать различные кодировки, не изменяя шрифт на консоли.
В Linux и прочих Unix-подобных системах в качестве основной русской кодировки используется кодировка KOI8-R. У этой кодировки есть много преимуществ по сравнению с используемыми в других системах IS08859-5 и кодовыми страницами 1251 и 866, но мы не будем их здесь обсуждать.
Итак, что же нужно сделать, чтобы настроить вывод символов в кодировке KOI8 на экран?
Во-первых, мы должны загрузить русский шрифт. Загрузка шрифта в Linux выполняется при помощи команды setfont. В принципе, в комплект поставки Linux входят KOIS-шрифты, но они весьма плохо выглядят, поэтому мы используем шрифт Суг_а8х16 в кодировке, соответствующей кодовой таблице 866.
В файл /etc/rc.d/rc.font добавьте строку
setfont Суr_а8х16
или, если команда setfont уже присутствует в этом файле, замените указанный после нее шрифт на Суr_а8х16.
Во-вторых, мы должны установить необходимую карту соответствия, которая позволит на лету перекодировать символы из KOI8 в 866 для их корректного вывода на экран при помощи установленного шрифта. Установка карты соответствия выполняется при помощи команды mapscrn.
В файл /etc/rc.d/rc.font добавьте строку
mapscrn koi2ait
Однако того, что мы сделали, еще не достаточно. На каждой консоли, на которой вам нужны русские буквы, карта соответствия должна быть активизирована. Для этого на соответствующую консоль должна быть выведена ?маги-
ческая последовательность? ESC-(K. Для вывода этой последовательности вы можете использовать команду
echo -ne ' 33(К'
Параметр -п запрещает вывод символа новой строки по окончании работы команды, параметр -е указывает, что вместо выражений вида ххх должен выводиться символ с восьмеричным кодом ххх. В данном случае будет выведен
символ с кодом 033 - то есть, ESC.
Конечно, вы можете каждый раз вводить эту команду вручную на той консоли, на которой вам нужны русские буквы, но этот процесс можно автоматизировать.
В файл /etc/rc.d/rc.local добавьте следующий текст:
for i in 1 2 3 4 5 6
do
echo -ne ' 33(К' > /dev/tty$i
done
Эта последовательность команд определяет цикл (for ... do ... done), в котором переменная i последовательно принимает значения 1-6 (i in 1 2 3 4 5 6). В теле цикла выполняется вывод нужной "магической последовательности"
ESC-(K на консоль с номером i (/dev/tty$i, знак $ указывает, что вместо $i должно быть подставлено значение переменной, то есть последовательно 1,2, ...,6).
На этом настройка вывода на экран завершена.
Для того чтобы вы могли не только видеть на экране русские буквы, но и иметь возможность вводить их с клавиатуры, необходимо загрузить при помощи команды loadkeys нужную клавиатурную раскладку.
В файл /etc/rc.d/rc.local добавьте команду
loadkeys ru1
Раскладка ru1 позволит вам вводить символы в кодировке KOI8, переключаясь между латинской и русской раскладками при помощи правой клавиши Alt.Теперь вы можете перезагрузить компьютер или просто вручную выполнить описанные команды.
Однако на этом русификация консоли не закончена. Если вы попытаетесь ввести что-либо русскими буквами непосредственно в командной строке, то у вас, скорее всего, ничего не получится. Нам еще предстоит объяснить, как трактовать русские символы трем важным программам : bash, Is и less.
Начнем с bash - интерпретатора командной строки , той программы, которая выводит приглашение $ (или #, если вы работаете от root) и ожидает ввода команд. Для управления поведением bash при использовании символов из второй половины кодовой таблицы используется файл .inputrc, который находится в домашнем каталоге пользователя.
Создайте в своем домашнем каталоге файл .inputrc, сoдержащий следующие строки:
set meta-flag on
set convert-meta off
set output-meta on
Выйдите из системы (введя logout) и войдите в нее снова. Все, теперь вы можете вводить русские буквы в командной строке и даже создавать файлы с русскими именами. Попробуйте ввести :>"Привет, мир", чтобы создать пустой файл с именем Привет, мир.
Но что это? При попытке просмотреть содержимое каталога, в котором создан файл с русским именем, вместо русских букв написаны какие-то числа и вопро сительные знаки? Для того чтобы команда Is корректно отображала русские имена файлов, сделайте следующее.
В конец файла /etc/profile добавьте строку
alias ls='ls -N $LS_OPTIONS'
Вы можете и не делать этого, а просто вызывать Is с ключом -N, если хотите видеть русские имена файлов. Но точно я не гарантирую что это будет работать - при установке своего линукса у меня были проблемы - приходилось использовать другие опции. В общем, если не получится - поэксперементируйте с опциями ls.
Наконец, последняя программа, которую мы хотим образумить, это less - программа постраничного просмотра файлов. Чтобы less корректно выводила русские буквы, необходимо установить переменную окружения LESSCHARSET.
В конец файла /etc/profile впишите строчку
export LESSCHARSET=latin1
На этом русификация консоли закончена. Для того чтобы сделанные нами в файле /etc/profile изменения вступили в силу, вы должны выйти из системы и войти в нее снова.
Русификация Xwindow System
Pусские шрифты KOI8-R на XFree86
В современных дистрибутивах они скорее всего уже стоят. Первым делом (на работающем X сервере) запустите :
$ xlsfonts -fn "*-koi8-r"
Если список не пустой - примите наши поздравления :-)
Начиная с версии XFree86 3.3.2 русские фонты(шрифты) cronyx-* входят прямо в дистрибутив XFree. Если фонтов нет -- их нужно установить. Для Red Hat просто поставьте пакет XFree86-cyrillic-fonts-XXXX.rpm . Фонты установятся в /usr/X11R6/lib/X11/fonts/cyrillic .
Далее нужно подключить шрифты к X Window. Убедитесь, что в файле /etc/X11/XF86Config прописан путь :
Section "Files"
...
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
...
EndSection
Путь с cyrillic лучше всего поставить первым. Перезапустите X сервер и проверьте командой : xlsfonts -fn "*-koi8-r" .
Хорошим решением также будет использование фонт-сервера. Во-первых, он может быть один на всю организацию, а во-вторых, в современных фонт-серверах можно использовать шрифты TrueType. Для Red Hat фонт-сервер xfsft входит в пакет Xfree86-xfs.
Существует два основных способа русификации клавиатуры X :
При русификации X 3.3.x через XKB в /etc/X11/XF86Config должно быть прописано:
Section "Keyboard"
...
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "ru"
XkbOptions "grp:shift_toggle"
EndSection
Для X 4.0.x
Section "InputDevice"
...
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc101"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:shift_toggle"
EndSection
В зависимости от клавиатуры опция Model может быть "pc101", "pc104" или "pc105", а комбинации переключения:
grp:toggle правый Alt (с "фиксацией")
grp:caps_toggle Caps_Lock
grp:shift_toggle два Shift
grp:ctrl_shift_toggle Control+Shift
grp:ctrl_alt_toggle Control+Alt
Для 4.0.x добавились новые :
grp:alt_shift_toggle Alt+Shift
grp:menu_toggle Menu (модель должна быть pc104, pc105)
В kde, начиная с 2.2.1 можно переключаться с помощью ctrl+alt+K, если включен выбор раскладки в control center на закладке peripherals.
Общие проблемы
Смонтировать диск, чтобы русские имена файлов были видны
Для vfat примерно так (cтрочка из /etc/fstab/):
/dev/hda5 /mnt/d vfat noexec,rw,umask=002, codepage=866, iocharset=koi8-r, gid=100 0 0
(в одну строчку)
Потом mount /mnt/d. Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые страницы (возможно, в виде модулей /lib/ modules/`uname -r`/fs/nls_*) - CP866 и KOI8-R, так что возможно (хотя скорее всего нет) ядро придется перекомпилировать.
Для CD, содержащего файлы с русскими именами:
$ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom
Параметр codepage для isofs не нужен, в файловой системе JOLIET имена файлов хранятся в UNICODE. Смысл этих опций можно узнать в 'man mount' или в документации исходников ядра /usr/src/linux/Documentation/filesystems/ или /usr/doc/ kernel/filesystems/.
увидеть русские буквы в именах файлов на диске Samba
Добавить в /etc/smb.conf
[global]
character set = koi8-r
client code page = 866
preserve case = yes
short preserve case = yes
перекодировать из DOS/Win кодировки в KOI8-R
Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Наиболее широко распространены iconv (входит в поставку glibc(т.е. есть почти на всех дистрибутивах)) и GNU recode ( ftp://prep.ai.mit.edu/pub/gnu/recode/)
$ iconv -f866 -tKOI8-R -o infile
$ recode CP1251..KOI8-R winfile.txt
в mc увидеть pусские буквы
F9 - options - display bits - Full 8 bit
telnet
Если возникают проблемы с вводом русских символов, надо написать файлик ~/.telnetrc со следующей строкой:
DEFAULT set outbinary
Вы можете встретить проблемы при работе в кодировке Win-1251 -- не передается маленькая русская буква "я" 0xff. У протокола TELNET 0xff -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать : 0xff, 0xff. В KOI8-R такой проблемы нет.
русифицировать TeX под koi-8
TeX и LaTeX во всех современных дистрибутивах говорят по-русски с раздачи. В этом случае имеется документ cyrguide.*, который и содержит развернутый ответ на вопрос о русификации TeX.
Переносы не всегда работают "из коробки", иногда надо поправить language.dat, и пересобрать форматы. Вот что пишет Alex Nikiforov:
Если уж о последних версиях, то в RH-6.0 с tetex 0.9 у меня получилось так:
$ texconfig
выбрать
hyphenation -> latex
раскомментировать russian
Добавить в LaTeX файлах
usepackage[T2A]{fontenc}
usepackage[koi8-r]{inputenc}
usepackage[english,russian]{babel}
и в файле можно переключаться между русским и английским командами Russian и Engish. Чтобы добавить форматы из cyrplain набора в texconfig выбрать FORMATS и добавить
cyrtxinf tex language.dat cyrtxinf.ini
для русского texinfo. Аналогично для cyrblue и cyramstx. Чтобы добавить формат cyrtex ( русский TeX ) проще в каталоге web2c выполнить:
initex 'input cyrtex.ini dump'
и бросить символическую ссылку с именем cyrtex на tex ( например в /usr/bin ). Чтобы переключиться на русский в этих plain форматах, нужно использовать команду
language N
где N - номер, под которым числится русский язык в получившейся раскладке.
Источник - LinuxBegin.ru
Адрес этой статьи:
u="http://stat.iplog.md/"; d=document; nv=navigator; na=nv.appName; j="N"; d.cookie="b=b"; c=0; if (d.cookie) c=1; n=(na.substring(0,2)=="Mi")?0:1; rn=Math.random(); z="rn="+rn+"&c="+c; js="1.0";
js="1.1"; j = (navigator.javaEnabled()?"Y":"N"); js="1.2"; s=screen; px=(n==0)?s.colorDepth:s.pixelDepth; z+="&wh="+s.width+'x'+s.height+"&px="+px;
js="1.3"
y=""; y+=""; d.write(y);if(!n) { d.write("
Русификация PCVT консоли
Версии OpenBSD 2.8 и ниже, содержат три различных русских шрифта в кодировке koi8-r для русификации PCVT консоли: koi8-8x16, koi8-8x14 и koi8-8x8. Эти шрифты могут быть загружены в знакогенератор EGA/VGA адаптера для использования в различных видеорежимах:| Шрифт | Число строк EGA |
Число строк VGA |
| koi8-8x8 | 43 | 50 |
| koi8-8x14 | 25 | 28 |
| koi8-8x16 | - | 25 |
Для русификации консоли:
vt0 at isa? port 0x60 irq 1
if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt; then /usr/sbin/loadfont -c0 -f/usr/share/misc/pcvtfonts/koi8-r-8x16 /usr/sbin/loadfont -c1 -f/usr/share/misc/pcvtfonts/koi8-r-8x14 /usr/sbin/loadfont -c2 -f/usr/share/misc/pcvtfonts/koi8-r-8x8 /usr/sbin/kcon -m koi8 /usr/sbin/scon -o
# Следующие строчки нужны только для OpenBSD 2.5 и более ранних версий # for t in /dev/ttyC[0-7]; do # echo -n '\033/X' > ${t} # done fi
После выполнения данных действий, на консоли можно будет нормально читать русский текст в кодировке koi8-r. Однако набор русского текста превратится в этакое упражнение по машинописи, чтобы набрать букву "ф" придётся нажать LeftAlt-A, "Ф" - Shift-LeftAlt-A, "ы" - LeftAlt-S и т.д. На Игоря Грабина находится патч, позволяющий создать фиксированный переключатель.
При перепечатке ссылка на оригинал
Автор: Королев Тимофей (tk AT linux-online.ru) специально для LinuxShop.Ru© 2003 Linux-Online.Ru. При перепечатке ссылка на оригинал обязательна!
Русификация wscons
Начиная с OpenBSD 2.9, драйвер консоли был полностью переписан. Русская раскладка была добавлена после выхода 2.9, поэтому для набора текста в 2.9, вам необходим . В случае если у вас OpenBSD 3.0 или новее, добавьте в файл /etc/kbdtypeраскладку вашей клавиатуры:
# echo "ru" > /etc/kbdtype
или раскомментируйте следующею строку в /etc/wsconsctl.conf:
keyboard.encoding=ru
Поддержка русского языка достигается путем создания custom
ядра с опциями:
option WSDISPLAY_COMPAT_USL option WSDISPLAY_COMPAT_RAWKBD option WSDISPLAY_COMPAT_PCVT option WSDISPLAY_DEFAULTSCREENS=2
Исходя из количества экранов по умолчанию, в данном случае два, добавьте в /etc/rc.local следующие строки, в зависимости от версии OpenBSD, для создания трех дополнительных экранов с предварительно загруженным русским шрифтом. Не забудьте запустить дополнительные процессы getty(8), если нужны, на этих экранах, см. /etc/ttys.
Для OpenBSD 2.9:
if [ -x /usr/sbin/wsconscfg -a -x /usr/sbin/wsfontload ]; then # Русские koi8 шрифты /usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-8x16
for SCREEN in 2 3 4; do /usr/sbin/wsconscfg -t 80x25bf -e vt100 $SCREEN done
/bin/sh /path/to/koi8-map.sh > /dev/null fi
Для OpenBSD 3.0 и новее:
if [ -x /usr/sbin/wsconscfg -a -x /usr/sbin/wsfontload ]; then # Русские koi8 шрифты /usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-r-8x16 # Украинские koi8 шрифты # /usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-u-8x16
for SCREEN in 2 3 4; do /usr/sbin/wsconscfg -t 80x25bf -e vt100 $SCREEN done
# Следующие строчка позволяет создать фиксированный # переключатель на правом Ctrl /sbin/wsconsctl -w keyboard.map+="keycode 157 = Mode_Lock" > /dev/null # а если вы привыкли пользоваться обычным переключателем - правый Alt /sbin/wsconsctl -w keyboard.map+="keycode 184 = Mode_switch" > /dev/null fi
В OpenBSD 2.9 набор русского текста происходит так же, как и в PCVT консоли - зажимая правый Alt. Доступен патч для реализации т.н. sticky переключателя (фиксированного). Патч и краткое руководство по установке доступны . Начиная с версии 3.0, такой переключатель интегрирован в OpenBSD.
Русификация X Window и приложений.
Прежде чем начать описание необходимых действий, внесу ясность:1. В начале установки я в качестве "языка установки" выбрал "Русский"
2. При выборе пакетов я поставил галку "Установить все" - 5 Гб не жалко. Все равно винчестер 80 гб.
3. После копирования пакетов было предложено выбрать "языки системы", где я поставил галочки у "English(USA)" и "Русский". Причем хуже не будет, если в качестве языка по умолчанию вы выберите английский язык.
4. Мне от системы нужно: английский интерфейс и возможность читать/писать по-русски.
5. Чтобы все было в UTF-8 (koi8-r/cp1251 на свалку истории!).
Чтобы производить переключения языка (Русский/Английский) для ввода текста по умолчанию требуется одновременно нажать две клавиши Shift. Причем, что интересно, по умолчанию для ввода используется русский язык, что довольно неудобно.
Для того, чтобы сделать английский язык ввода языком ввода по умолчанию, нужно подредактировать файл /etc/X11/XF86Config и заменить в нем строку:
Option "XkbLayout" "ru,us"
на
Option "XkbLayout" "us,ru".
А чтобы сменить метод переключения "Английский/Русский" нужно сточку:
Option "XkbOptions" "grp:shift_toggle,grp_led:scroll"
заменить на:
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
Также, хочу обратить ваше внимание на переключатель клавиатуры , но сразу предупрежу, что лично у меня он работает в Red Hat 9 мягко говоря очень странно. Возможно вы будете более удачливы.
Итак, приступим к делу. Все команды, которые будут приводится нужно выполнять либо переключившись в пользователя root (для этого можно использовать команду su -l), либо просто войдя в систему пользователем root. Эти команды нужно вводить в запущенном терминале: Applications -> System Tools -> Terminal.
Вам нужно либо выкачать TTF-шрифты (файлы с расширением .ttf) из интернета, либо скопировать их с какого-нибудь диска, либо если рядом есть Windows-машина, взять шрифты из нее. Допустим, что вы поместили эти шрифты в директорию /tmp/ttf/ (название директории взято для примера. вы можете назвать директорию по своему). Вам необходимо скопировать (не переместить! они нам еще понадобятся) все эти шрифты в директорию /usr/X11R6/lib/X11/fonts/TTF/:
[root@developer root]# cd /tmp/ttf/ [root@developer ttf]# cp *.ttf /usr/X11R6/lib/X11/fonts/TTF/ [root@developer ttf]# cp *.TTF /usr/X11R6/lib/X11/fonts/TTF/ [root@developer ttf]# cd /usr/X11R6/lib/X11/fonts/TTF/ [root@developer TTF]# mkfontdir [root@developer TTF]# mkfontscale Couldn't get family name for ./marlett.ttf [root@developer TTF]# |
Отлично. Теперь нужно каким-либо способом подключится к Internet и скачать файл: . После того как вы скачаете его, вам нужно будет установить его:
|
[root@developer root]# cd /tmp/ [root@developer ttf]# wget http://www.linuxshop.ru/redhat/files/XFree86-75dpi-fonts-4.2.0-73.i386.rpm [root@developer ttf]# rpm -e --nodeps XFree86-75dpi-fonts [root@developer ttf]# rpm -ihv XFree86-75dpi-fonts-4.2.0-73.i386.rpm |
На самом деле, теперь у нас уже заработали GTK1-приложения. Но мы не будем останавливаться на достигнутом и продолжим тотальную русификацию.
Теперь нам опять понадобится папка, в которой лежат наши TTF-шрифты. Теперь мы снова скопируем их, но на этот раз в другую папку:
|
[root@developer root]# cd /tmp/ttf [root@developer ttf]# mkdir /usr/share/fonts/ttf [root@developer ttf]# cp *.ttf usr/share/fonts/ttf [root@developer ttf]# cp *.TTF usr/share/fonts/ttf [root@developer ttf]# cd /usr/share/fonts/ttf [root@developer ttf]# mkfontdir [root@developer ttf]# mkfontscale |
|
[root@developer root]# fc-cache [root@developer root]# service xfs restart |
Русификация X Window
В файл конфигурации X Window (/etc/X11/XF86Config для XF4 или /etc/XF86Config для X11) в раздел Section "Files" добавьте следующую строчку, перед ранее написанными директивами FontPath:FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
После рестарта X Window, вы сможете читать тексты на русском языке в кодировке koi8-r. Для ранних версий X Window, вам может понадобится установить дополнительные шрифты, для этого создан порт . Для русификации клавиатуры можно настроить XKB, либо воспользоваться .
Русификация
С чего начинается Linux? С картинки в твоем букв... Нет, не то. Правильно, с консоли!Нужна ли обычному пользователю консоль? Правильно, практически не нужна!
Нужен ли обычному пользователю русский язык в консоли в тех редких случаях, когда консоль нужна? - Правильно, не нужен на фиг!
Тем не менее, если кому-то это очень нужно (вдруг X-ы свалились), его файл /etc/sysconfig/i18n должен выглядеть так:
LANG="en_US.UTF-8" SUPPORTED="en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU:ru" SYSFONT="latarcyrheb-sun16"
Прошу заметить: мы получили UTF-8-ную консоль.
Для тех, кто в консоли хочет иметь koi8-r (рецепт взят с linux.org.ru):
LANG="ru_RU.UTF-8" SUPPORTED="en_US.UTF-8:en_US:en" SYSFONT="koi8u_8x16" SYSFONTACM="koi8r"
А теперь переходим к самому главному для нас (пользователей) -X-Window.
¦Рутущьу
¦К ГьБпуБу ч GNU Emacs, GNU-ьщзпЮщпФьь ЮпврьБчсч, АпэчтчзЦэущБьЮчрпщщчсч, щпАБЮпьрпуэчсч, ЮпАХьЮОуэчсч МзЮпщщчсч ЮутпзБчЮп ЮупшЛщчсч рЮуэущь Emacs. (`G' р `GNU' ГьБпуБАО.)+К счрчЮьэ, ГБч Emacs -- МБч МзЮпщщКы ЮутпзБчЮ, Бпз зпз ЮутпзБьЮЦуэКы БузАБ чяКГщч рьтущ щп МзЮпщу ь прБчэпБьГуАзь чящчршОуБАО, зчстп рК ррчтьБу зчэпщтК. аэчБЮьБу Юпвтуш .
+К щпвКрпуэ усч ЮутпзБчЮчэ ЮупшЛщчсч рЮуэущь, Бпз зпз МзЮпщ чящчршОуБАО чГущЛ ГпАБч, чяКГщч ъчАшу зпжтчсч щпяЮпщщчсч рпэь вщпзп ьшь ъпЮК вщпзчр. мБч ЦэущЛХпуБ зчшьГуАБрч ьщДчЮэпФьь, зчБчЮЦН рК тчшжщК ЦтуЮжьрпБЛ р ъпэОБь, зчстп ЮутпзБьЮЦуБу. аэчБЮьБу Юпвтуш .
+К щпвКрпуэ Emacs ЮпврьБКэ, Бпз зпз чщ ъЮутчАБпршОуБ АЮутАБрп, зчБчЮКу тпНБ щуГБч ячшЛХуу, Гуэ ъЮчАБпО рАБпрзп ьшь Цтпшущьу: ЦъЮпршущьу ъчтъЮчФуААпэь, прБчэпБьГуАзчу Ачвтпщьу чБАБЦъчр р ъЮчсЮпээпЕ, ъЮчАэчБЮ трЦЕ ьшь ячшуу Дпышчр АЮпвЦ, ЮутпзБьЮчрпщьу ДчЮэпБьЮчрпщщчсч БузАБп ь туыАБрьО р БуЮэьщпЕ Аьэрчшчр, Ашчр, АБЮчз, ъЮутшчжущьы, пявпФур ь АБЮпщьФ, п Бпзжу рКЮпжущьы ь зчээущБпЮьур р щуАзчшЛзьЕ ЮпвщКЕ ОвКзпЕ ъЮчсЮпээьЮчрпщьО.
апэчтчзЦэущБьЮчрпщщчАБЛ чвщпГпуБ, ГБч р шНячу рЮуэО рК эчжуБу щпяЮпБЛ АъуФьпшЛщКы Аьэрчш, Control-h, ГБчяК ЦвщпБЛ, ГБч рК эчжуБу АтушпБЛ. ¦К Бпзжу эчжуБу ьАъчшЛвчрпБЛ усч, ГБчяК рКОАщьБЛ, ГБч тушпуБ ъЮчьврчшЛщпО зчэпщтп, ьшь щпыБь рАу зчэпщтК, ьэуНИьу чБщчХущьу з зпзчы-шьяч Буэу. аэчБЮьБу Юпвтуш .
+пАБЮпьрпуэчАБЛ чвщпГпуБ, ГБч рК эчжуБу шусзч ьвэущьБЛ чъЮутушущьО зчэпщт Emacs. +пъЮьэуЮ, уАшь рК ьАъчшЛвЦуБу ОвКз ъЮчсЮпээьЮчрпщьО, р зчБчЮчэ зчээущБпЮьь щпГьщпНБАО А ` ь зчщГпНБАО щп `**>', рК эчжуБу рушуБЛ зчэпщтпэ Emacs тшО ЮпячБК А зчээущБпЮьОэь ьАъчшЛвчрпБЛ ьэущщч Бпзьу АБЮчзь (АэчБЮьБу Юпвтуш ). ¦ЮЦсчы рьт щпАБЮчызь -- МБч ъуЮуЮпАъчшчжущьу ЦАБпщчршущщКЕ зчэпщт. +пъЮьэуЮ, уАшь рК ъЮутъчГьБпуБу, ГБчяК ГуБКЮу чАщчрщКу зчэпщтК трьжущьО зЦЮАчЮп (рруЮЕ, рщьв, ръЮпрч, ршурч) щпЕчтьшьАЛ щп зшпрьХпЕ, ЮпАъчшчжущщКЕ зЮуАБччяЮпвщч щп зшпрьпБЦЮу, рК эчжуБу ъуЮуъЮьрОвпБЛ МБь зшпрьХь. аэчБЮьБу Юпвтуш .
юпАХьЮОуэчАБЛ чвщпГпуБ, ГБч рК эчжуБу ъчыБь тпшЛХу ъЮчАБчы щпАБЮчызь ь щпъьАпБЛ АчруЮХущщч щчрКу зчэпщтК, ъЮчсЮпээК щп ОвКзу ¦ьАъ, ъЮутщпвщпГущщКу тшО впъЦАзп р АчяАБрущщчэ ¦ьАъ-ьщБуЮъЮуБпБчЮу Emacs. Emacs ОршОуБАО "ьщБуЮпзБьрщч ЮпАХьЮОуэчы" АьАБуэчы, ГБч вщпГьБ, ГБч чщ тушьБАО щп эщчсч ДЦщзФьы, зчБчЮКу рКвКрпНБ тЮЦс тЮЦсп; зпжтпО ьв щьЕ эчжуБ яКБЛ ъуЮучъЮутушущп рч рЮуэО АупщАп ЮутпзБьЮчрпщьО. ©чГБь шНяпО ГпАБЛ Emacs эчжуБ яКБЛ впэущущп яув зчъьЮчрпщьО рАусч Emacs. ¦чшЛХьщАБрч зчэпщт ЮутпзБьЮчрпщьО Emacs Цжу щпъьАпщК щп ¦ьАъу; щуАзчшЛзч ьАзшНГущьы эчсшь яК яКБЛ щпъьАпщК щп ¦ьАъу, щч щпъьАпщК щп аь тшО МДДузБьрщчАБь. ечБО БчшЛзч ъЮчсЮпээьАБ эчжуБ щпъьАпБЛ ЮпАХьЮущьу, шНячы эчжуБ ьАъчшЛвчрпБЛ усч ъчАшу. ¦Ашь рК ЕчБьБу щпЦГьБЛАО ъЮчсЮпээьЮчрпщьН щп Emacs Lisp, эК ЮузчэущтЦуэ рпэ зщьсЦ Introduction to Emacs Lisp, щпъьАпщщЦН ючяуЮБчэ ¦ж. гпААушчэ, Бпзжу чъЦяшьзчрпщщЦН дчщтчэ арчячтщчсч ©ЮчсЮпээщчсч +яуАъуГущьО.
¦чстп Emacs впъЦИущ ъчт АьАБуэчы X Windows, чщ ъЮутчАБпршОуБ АчяАБрущщКу эущН ь ЦтчящКу ъЮьрОвзь тшО зщчъчз эКХь. +ч Emacs эчжуБ тпБЛ эщчсьу ъЮуьэЦИуАБрп чзчщщчы АьАБуэК ь щп БузАБчрчэ БуЮэьщпшу. +пъЮьэуЮ, рК эчжуБу рьтуБЛ чтщчрЮуэущщч щуАзчшЛзч Дпышчр, ъуЮуэуИпБЛ БузАБ эужтЦ Дпышпэь ь ЮутпзБьЮчрпБЛ рч рЮуэО ЮпячБК зчэпщт чячшчГзь.
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []
Самодельный HTML-редактор
Я прекрасно понимаю, что сказанное ниже способно вызвать у профессионального программиста лишь ироническую улыбку. Однако это хорошо демонстрирует весь спектр возможностей редактора Nedit, который могут настроить под конкретную задачу даже люди с невысоким уровнем подготовки.Итак, перед нами стоит задача составления достаточно длинных и относительно структурированных документов, предназначенных в первую очередь для размещения в Сети. При этом не исключается возможность, что они в дальнейшем будут воплощены и на бумаге в виде журнальных или книжных публикаций (для чего может потребоваться импорт документа в текстовый процессор или программу верстки). Способов комфортного выполнения этой работы несколько. Что в таком случае можно делать?
Поэтому оптимальным представляется составление документа в текстовом редакторе с одновременной разметкой тегами HTML. Однако проставлять теги вручную, даже если помнишь все наизусть, - занятие малопроизводительное. Посему возникает естественное желание эту процедуру автоматизировать, благо NEdit с его развитым макроязыком и простыми средствами применения последнего такую возможность обеспечивает.
Для начала определимся, какие теги требуются для каждодневного использования. Это: 1) заголовки нескольких уровней - , и т.д.; 2) теги начала абзаца () и разрыва строки (
); 3) структурные теги: emphasis () и preformatted text (pre и /pre); 4) всякого рода списки - маркированные ( ), нумерованные (), списки с определениями и их элементы (
Вот в такой последовательности и будем создавать соответствующие макросы. Включаем режим протоколирования (через меню Macro - Learn Keystrokes или комбинацией клавиш Alt+K) и просто-напросто набираем с клавиатуры последовательность символов.
Для обеспечения непрерывности набора логично вернуть курсор в позицию между открывающим и закрывающим тегами, для чего соответствующее количество раз нажимаем клавишу Left. После чего завершаем протоколирование (через меню Macro - Finish Learn или повторным нажатием Alt+K), при помощи меню Macro Replay Keystrokes (или комбинации Ctrl+K) проверяем правильность исполнения и переходим в меню Preferences - Default Settings - Customize Menu - Macro Menu. В появившейся панели Macro Commands (см. рис. 2) указываем в поле Menu Entry:
Headers>header1
В поле Accelerator приписываем команде клавишу вызова (например, F1, благо она не закреплена за вызовом справки), при желании определяем мнемоническую литеру и нажимаем экранную кнопку Paste Learn/Reply Macro. В результате в поле Macro Command to Execute появляется примерно такой код:
insert_string("<") insert_string("h") insert_string("1") insert_string(">") insert_string("<") insert_string("/") insert_string("h") insert_string("1") insert_string(">") backward_character() backward_character() backward_character() backward_character() backward_character()
Поскольку правильность макрокоманды мы уже проверили, нажимаем Apply для ее включения в список и переходим к следующему пункту нашей программы. Конечно, можно повторить протоколирование набора для тегов заголовков всех уровней последовательно. Но проще с помощью экранной клавиши Copy скопировать только что созданный макрос, изменить в поле Menu Entry его название с header1 на header2, закрепить за ним клавишу F2 и в поле Paste Learn/Reply Macro отредактировать код вручную, заменив строку
insert_string("1")
на
insert_string("2").
Подобную процедуру придется повторить для заголовков всех требуемых уровней (хотя вряд ли их число превысит четыре).
Затем переходим к созданию макросов для наиболее часто требующихся при наборе тегов абзаца и разрыва строки. Порядок действий идентичный: протоколирование ввода тега, вызов панели Macro Commands, описание имени команды (с учетом ее положения в иерархическом меню), закрепление за ней свободной комбинации "горячих" клавиш, помещение "заученного" кода макроса в поле команд для исполнения, включение новой макрокоманды в список доступных. И так для всех тегов, которые, как нам представляется, требуются постоянно и ежедневно...
Завершив создание макросов, следует не забыть сохранить их в меню с помощью Preferences - Save Defaults. После чего они будут доступны в последующих сеансах NEdit, поскольку размещаются в файле .nedit. в секции
nedit.macroCommands:
На сайте http://linuxsaga.newmail.ru/ приведено содержимое этой секции после того, как я разработал серию макросов для своих личных целей. Не судите строго: с точки зрения программиста-профессионала ничего замечательного там не содержится. Но а) этот процесс занял у меня считанные минуты, и б) результатов его мне вполне хватает в 90 случаях из 100.
Чего еще хотелось бы от несложного HTML-редактора? Ну конечно, визуализации производимых изменений в каком-либо внешнем браузере (каковым, с большой долей вероятности, будет Netscape Navigator текущей версии).
Для этого мы прибегнем к настройке меню Shell (Preferences - Default Settings - Customize Menu - Shell Menu). В соответствующей панели (см. рис. 3) определяем, как описано выше, поле имени команды. Если есть желание просматривать плоды своих трудов в разных браузерах, можно создать иерархическое меню, например:
Browser>netscape Browser>lynx Browser>opera
оставляя, скорее всего, пустыми поля Accelerator и Mnemonic (не столь это частая процедура - вызов внешнего браузера, чтобы тратить на нее драгоценную клавишную комбинацию, коих и так не в избытке).
А затем вводим в поле Shell Command to Execute строку
konsole -e netscape %
или иную любимую терминальную программу в качестве первого элемента (xterm. rxvt, etc.). И ни в коем случае не забываем параметр %, предписывающий браузеру отображать именно редактируемый в NEdit файл.
Теперь разбираемся с переключателями. В линейке Command Input логично отметить значение None (иначе есть риск получить по закрытии Netscape пустой файл), в линейке Command Output - значение same window. Кроме того, не худо бы включить также опцию сохранения текущего файла перед выполнением команды (Save file before executing command).
Принимаем изменения (экранной клавишей Apply) и проверяем действие команды. Если все нормально, выбор из меню Shell пункта netscape должен вызвать появление сначала терминального окна, а затем - окна браузера Netscape Navigator, отображающего редактируемый файл в текущем его состоянии. Если да - сохраняем ситуацию (через меню Preferences - Save Defaults), и собственный HTML-редактор готов!
Как и результат редактирования меню макрокоманд, результаты действий по встраиванию команд оболочки попадают в файл .nedit, в секцию
nedit.shellCommands:
где их можно в дальнейшем редактировать непосредственно.
Эта статья написана не только к вящей славе редактора NEdit. Автор руководствовался и собственными корыстными соображениями: вдруг кто-нибудь напишет достаточное количество качественных наборов макросов для NEdit на все случаи жизни?
Saxon
Процессор написан на языке Java, я пользуюсь версией 6.5.2. Все нижеследующие инструкции касаются этой версии, если у вас другая версия, то вам следует обратиться к документации для вашей версии за получением информации по установке и запуску процессора.Search
вполне заслуживает отдельного положения в главном меню, поскольку возможности поиска и замены в NEdit чрезвычайно широки. Здесь и поиск введенной последовательности символов ([Shift]Ctrl+F), и повторный поиск ([Shift]Ctrl+G), и поиск фрагмента, идентичного выделенному ([Shift]Ctrl+H). Возможен поиск как буквенных последовательностей (Literal), в том числе и с чувствительностью к регистру (Case Sensitive Literal), так и регулярных выражений (Regular Expression), поиск вперед и назад (Search Forward и Search Backward, соответственно). При этом поддерживается история искомых выражений: клавиша управления курсором Up вызывает появление предыдущей последовательности, клавиша Down - последующего.Следует отметить, что строка для ввода искомой последовательности может быть выведена не только в диалоговой панели по вызову соотвествтующего пункта меню, но и включена в верхней части окна программы, между строкой меню и строкой состояния (с помощью команды Find Incremental, [Shift]Ctrl+I). В обоих случаях кириллица в строке поиска не отображается, заменяясь знакомой пользователям Windows псевдо-грекофранцузской абракадаброй; тем не менее, самому по себе поиску это отнюдь не мешает - кириллические символы в теле документа находятся исправно.
Разумется, возможна и замена найденных фрагментов (Replace, [Shift]Ctrl+R), и повторная замена (Replace Again, [Shift]Ctrl+T). Опции замены - те же, что и для поиска: с чувствительностью к регистру, с использованием регулярных выражений, вперед и назад, и так далее.
В пункте же Search - переход к строке по ее номеру (Goto Line Number, Ctrl+L) и к выделенному фрагменту (Goto Selected, Ctrl+E), установка закладок (Mark, Alt+M), в качестве которых могут использоваться буквы латинского алфавита (от A до Z), и переход к ранее установленным закладкам (Goto Mark,[Shift]Alt+G) и еще пара пунктов, содержания которых я не очень понял. Это, во-первых, Goto Matching (...) ([Shift]Ctrl+M), не вызывающий никаких действий, и, во-вторых, Find Definition (Ctrl+D), не активизированный вообще.
Переходим к пункту
Searching
Я уже говорил, что возможности поиска в редакторе NEdit весьма обширны. А настриваемость придает им еще и гибкость. В пункте Searching присутствует два переключателя:Третий пункт настройки поиска - режим по умолчанию: Literal (то есть когда искомое значение рассматривается как буквенная последоватлеьность), Case Sensitive (то же, но с чувствительностью к регистру) и Regular Expression (то есть поиск регулярных выражений, представление о синтаксисе которых можно получить из соответствующего пункта меню Help).
Следующая группа настроек -
Секционирование
Разделы текста отделяются командами =headN, например=head1заголовок_первого_уровня
=head2 заголовок_второго_уровня
=head3 заголовок_третьего_уровня
Эти же команды определяют заголовки разделов заголовок_первого_уровня и т.д. Сколько уровней вложенности заголовков (т.е. максимально допустимое N) разрешается -- зависит от конвертора POD-во-что-то-еще. Например, pod2man допускает только два уровня, pos2html -- до шести уровней.
К исходному тексту примеров я добавил номера колонок. Номера строк в настоящем исходном тексте отсутствуют. Здесь они включены для того, чтобы указать на пустые строки, которые должны разделять командные абзацы, т.е. те, которые начинаются со знака равенства в колонке 0. Для того чтобы сделать более понятным, где начинается нулевая колонка, в примере ниже я добавил линейку с делениями.
Пример:
1 2 3 4 5 012345678901234567890123456789012345678901234567890 1 =head1 Аппаратное обеспечение 2 3 Физические составляющие части вашего компьютера 4 называются аппаратным обеспечением, или hardware. 5 6 =head1 Процессор 7 8 Процессор (CPU) -- это самая важная деталь вашего 9 компьютера. 10 11 =head1 Устройства хранения данных 12 13 Устройства хранения данных, или mass storage devices 14 служат для постоянного хранения информации. 15 16 =head2 Жесткие диски 17 18 Жесткие диски (hard disk drives) обеспечивают произвольный 19 доступ к данным. 20 21 =head2 Магнитные ленты 22 23 Магнитные ленты (magnetic tapes) обеспечивают медленный 24 последовательный доступ к данным. 25 26 =head1 Программное обеспечение 27 28 Вот тут-то и начинаются вилы...
Sgml-auto-insert-required-elements
Если этой переменной присвоено ненулевое значение, то каждый раз PSGML будет вставлять какой-либо элемент вместе с тэгами любых требуемых элементов внутри этого элемента. Например, при использовании DocBook DTD, требование к PSGML вставить элемент главы chapter влечет за собой вставку тэгов элемента заголовка title в начале главы. При этом выводится комментарий о необходимости вставки одного из (далее следует список допустимых элементов).Sgml-balanced-tag-edit
Если этой переменной присвоено ненулевое значение, то каждый раз при вставке элемента PSGML будет вставлять элемент с открывающим и закрывающим тэгами, а курсор будет находиться между ними.SGML - документальный метаязык
Валерий КоржовТекст - достаточно значимое явление нашей культуры. Порой он рассматривается как произведение искусства, для которого, как известно, важно не только содержание, но и оформление. Для украшения своих текстов авторы используют различные шрифты и другие визуальные эффекты. Подобные способы оформления текста давно известны, но как их перенести на электронные документы? Язык разметки, который используют для описания внешнего вида документа, еще не устоялся. Сейчас имеет хождение множество всевозможных форматов электронного текста, которые не всегда можно преобразовать один в другой.
SGML и Web
Язык форматирования Web-страниц HTML изначально вводился как приложение SGML. Позже, с бурным развитием WWW, HTML начал всячески расширяться с целью дать автору больший контроль над внешним представлением информации. Новые элементы и атрибуты, такие как илиЭту проблему отчасти призваны облегчить каскадируемые стили, стандарт на которые принят W3 консорциумом. отделяет стиль, задающий визуальное представление элементов, от разметки элементов.
Большой интерес представляет язык , предположительно идущий на смену HTML в качестве языка разметки Web-страниц. Это -- вариант SGML, ориентированный в первую очередь на применение на WWW. Он не требует обязательного наличия DTD, упрощен и сам язык за счет редко используемых сложных конструкций. Это позволит сделать простыми анализаторы, что сделает возможным активное применение XML в браузерах.
XML снимет одно из неприятных ограничений HTML -- фиксированное количество элементов и фиксированная их семантика. Скажем, публикуя в XML список вопросов и ответов, можно задать естественную структуру элементов в таком стиле:
Что такое XML? eXtensible Markup Language |
Заданные в дополнение к самому документу стили форматирования элементов
Sgml-indent-step
Данная переменная "заставляет" PSGML автоматически выравнивать тэги в соответствии с установками относительно структуры элемента. Значение переменной sgml-indent-step по умолчанию равно двум, т.е. тэги вложенных элементов смещены друг относительно друга на два пробела вправо. Ниже будет показано, что элементы title, para, figure выровнены еще два символа относительно открывающих и закрывающих элементов sect2, также как и элементы title и graphic, помещенные внутрь элемента figure.Злоупотребление структурированием текста может привести к тому, что текст будет слишком сильно смещен вправо, поэтому нужно всегда помнить о возможности отключения данной функции. Отключение выравнивания осуществляется присвоением переменной sgml-indent-step нулевого значения. Соответствующая строка в .emacs-файле выглядит следующим образом:
| (setq sgml-indent-step 0) ; default value is 2 |
Sgml-live-element-indicator
Если этой переменной присвоено ненулевое значение, то PSGML будет отображать тип документа и тип текущего элемента в строке состояния. Например, при использовании DocBook DTD, если курсор находится внутри элемента заголовка (title) при редактировании главы (chapter) документа, то в строке состояния возможно появление следующего сообщения:| (SGML [chapter/title])) |
Это может немного замедлять работу Emacs, но жертва часто стоит того, если документ не слишком большой.
Sgml-omittag-transparent
При вставке нового элемента можно "попросить" PSGML перечислить все допустимые типы элемента, которые можно вставить в текущую позицию курсора. Если переменной sgml-omittag-transparent присвоено значение "nil" (ноль), PSGML только перечислит типы элемента, которые могут находиться внутри текущего элемента. Если переменной присвоено ненулевое значение - "non-nil", PSGML также перечислит доступные типы элементов, которые могут следовать за текущим элементом (то есть элементом, в котором расположен курсор), если текущий элемент элемент не нуждается в закрывающем тэге.Например, если текущий элемент - элемент параграфа
SGML против WYSIWYG
Для тех, кто привык пользоваться только "word processor"-ами, например, MS Word или WordPerfect, может быть интересно сопоставление их с SGML инструментами. Эти две группы программных средств, несмотря на схожесть решаемых задач -- производство документов -- весьма друг от друга отличаются по архитектуре и функциям.Word processor -- это интеллектуальная пишущая машинка. Он ориентирован на работу с визуальным представлением текста, характеризующегося набором стилей: стилей символов (шрифт, кегль, начертание), абзацев (красная строка, выравнивание, положение по ширине страницы), страниц (колонтитулы, сноски), разделов и документов (формат бумаги, оглавление), и прочих. Word processor не работает с внутренней структурой документа.
SGML редактор, напротив, ориентирован на работу с содержимым документа. Для SGML редактора, например, раздел -- это элемент, в который могут включаться подразделы, а не промежуток от одного абзаца, набранного стилем "Заголовок" до другого, как для word processor-a.
Это позволяет автору сосредоточиться на содержании текста, а не возиться с его форматированием и выбором стилей. Визуальная стилистика документа определяется при его экспорте в выходные форматы, а не при наборе текста.
SGML-редактор
SGML-редактор отличается как от привычных текстовых редакторов, так и от "word processor"-ов. От первых -- наличием поддержки структурированных документов, от вторых -- отсутствием поддержки визуального форматирования. Редактор разбирает DTD редактируемого документа и "ведет" пользователя в соответствии с ним. Например, если DTD предусматривает элемент , в котором могут встречаться только элементыИз числа популярных SGML-редакторов можно назвать ArborText , SoftQuad , , Adobe , Corel , и множество других.
SGML: с чем это едят?
1997Сегодня все чаще можно встретить аббревиатуру SGML. Многие виды документации поставляются в формате SGML. Популярный язык разметки Web-страниц HTML является приложением SGML. Появляется все больше прикладных программ для работы с SGML: редакторы, средства форматирования, системы документооборота, использующие SGML в качестве формата хранения документов... SGML-продукты выпускают Adobe, Corel, SoftQuad, Microsoft. В SGML готовятся книги издательства O'Reilly, техническая документация IBM, Sun и OSF. Основывается на SGML информационная технология многих ведущих машиностроительных и авиакосмических фирм всего мира.
Появившаяся в начале восьмидесятых SGML-технология переживает сейчас период расцвета. Что это такое? Что она дает своим пользователям? Как с ней работать? На эти и другие вопросы я пытаюсь ответить этой статьей.
Sgml-set-face
Если этой переменной присвоено ненулевое значение, то PSGML будет выделять (если, конечно, это возможно на вашем мониторе) тэги, содержание, определения объектов и комментарии различным шрифтом или цветом. Подробнее см. раздел "Выделение Разметки шрифтом и цветом."SGML
Стандартный обобщенный язык разметки (SGML) - это язык, который основан на внедрении кодов внутрь документа. Этим он похож на HTML, но на этом их сходство заканчивается. Сила SGML в том, что в отличии от WYSIWYG (What You See Is What You Get), вы не определяете такие вещи как цвета,размеры шрифтов или какое либо форматирование. Вместо этого вы определяете элементы составляющие документ (параграфы,секции,нумерованные списки ...) и предоставляете SGML процессору вместе с конечной программой заботу о размещении элементов,цветах,шрифтах и прочем. HTML делает примерно тоже самое и на самом деле является лишь одной из форм SGML. SGML состоит из двух основных вещей. Во первых это Структура, которая обычно называется DTD (Document Type Definition - "определение типа документа"). DTD определяет зависимости между элементами. Например для создания этого документа использовалось DocBook DTD. DTD привносит общий вид и структуру во все документы, созданные с его использованием. Во вторых это наполнение, которое визуализируется SGML процессором и которое видит затем читатель. Например этот параграф - наполнение, но с таким же успехом наполнением может быть графическое изображение, таблица, список и т.д. Наполнение ограничивается тэгами,чтобы отделить элементы друг от друга.Sgmltools-lite
Очень рекомендуется -Это наследник проекта sgmltools,которые был официально остановлен более года назад. После этого Cees de Groot создал немного отличный от него проект,который работает как wrapper для SGML процессора Jade. Он прячет от пользователя сложный синтаксис. Я установил старые sgmltools, затем sgmltools-lite и смог отформатировать этот документ достаточно просто. Есть даже man страница для sgmltools, на которой описан его синтаксис.
СharSets
Давайте теперь рассмотрим собственно наборы символов (character set). Первое что мы должны сделать - это обратить внимание на терминологию. Если мы говорим о наборе "абстрактных" символов, то употребляется термин character repertoire. Если же мы говорим о наборе символов вместе с ихShell
Shell - достаточно необычный пункт меню текстового редактора. Через него можно, во-первых, запустить на исполнение любую команду или программу. Это делается с помощью подпункта Execute Command (Alt+X), который вызывает нечто вроде минитерминала. В нем может быть введена соответствующая команда оболочки (или любая другая) с любыми требующимися параметрами. Поддерживается, посредством клавиш управления курсором Up и Down, историю команд, правда, только в текущем сеансе.Во-вторых, через подпункт Execute Command Line (KP Enter, что это за комбинация - я так и не понял) можно определить в качестве команды на запуск строку из текущего документа. Для этого достаточно установить курсор в любое ее место и выбрать соответствующий пункт меню (или набрать вышеприведенную неудобопонятную клавишную комбинацию, вероятно). Разумеется, если строка эта имеет смысл и записана синтаксически правильно. В противном случае в теле документа атоматически появится сообщение об ошибке. Например: netscape An error occurred running /usr/lib/netscape/netscape-communicator. Или даже полная справка по использованию команды, как в случае
ispell Usage: ispell [-dfile | -pfile | -wchars | -Wn | -t | -n | -x | -b | -S | -B | -C | -P | -m | -Lcontext | -M | -N | -Ttype | -V] file .....
и так далее. Разумеется, эта опция наиболее полезна для программистов. Однако и простым смертным она будет весьма нелишней при отладке скриптов командной оболочки. Необходимость в чем может возникнуть при желании нарастить функциональные возможности NEdit.
Дело в том, что скрипты эти могут быть встроены в меню Shell. Некий их набор включен в последнее по умолчанию. Это провекра правописания (spell), статистика (wc, от word count - подсчет строк, слов и знаков), сортировка строк и их нумерация, а также сугубо программистские сценарии - make для сборки программы из набранного исходного текста, expand и unexpand, смысл которых я не очень понимаю. Однако ничто не мешает пополнять меню Shell своими скриптами любого назначения, освободив его от ненужных лично вам элементов. Как - расскажу в одном из следующих разделов.
Кроме Shell, для наращивания функциональности программы служит и пункт
¦ШНГь ь зчэпщтК
¦ МБчэ ЮЦзчрчтАБру эщчсч чБЮКрзчр, зчБчЮКу счрчЮОБ рпэ, ГБч тушпНБ чБтушЛщКу зшНГь. +ч Emacs щу чъЮутушОуБ вщпГущьу зшНГуы щуъчАЮутАБрущщч. ¦эуАБч МБчсч Emacs ъЮьАрпьрпуБ вщпГущьу ьэущчрпщщКэ зчэпщтпэ ь впБуэ ъЮьтпуБ зшНГпэ вщпГущьО ъЦБуэ ъЮьрОвзь ьЕ з зчэпщтпэ.¦пжтпО зчэпщтп ьэууБ ьэО, рКяЮпщщчу тшО щуу ъЮчсЮпээьАБчэ. +яКГщч МБч ьэО АчАБпршОуБАО ьв щуАзчшЛзьЕ пщсшьыАзьЕ Ашчр, ЮпвтушущщКЕ туДьАпэь; щпъЮьэуЮ, next-line ьшь forward-word. ц зчэпщтК Бпзжу уАБЛ чъЮутушущьу, ОршОНИууАО ъЮчсЮпээчы щп ¦ьАъу; чщп впАБпршОуБ ДЦщзФьН тушпБЛ Бч, ГБч чщп тушпуБ. +п Апэчэ тушу, зчэпщтп р ОвКзу Emacs Lisp -- МБч чАчяпО ЮпвщчрьтщчАБЛ шьАъчрАзчы ДЦщзФьь; МБч БпзпО ДЦщзФьО, зчБчЮпО ЦзпвКрпуБ, зпз ГьБпБЛ пЮсЦэущБК ъЮь ьщБуЮпзБьрщчэ рКвчру. ¦шО ъчшЦГущьО ячшЛХуы ьщДчЮэпФьь ч зчэпщтпЕ ь ДЦщзФьОЕ АэчБЮьБу Юпвтуш `What Is a Function' р The Emacs Lisp Reference Manual. (+ъЮутушущьу, зчБчЮчу эК ьАъчшЛвчрпшь р тпщщчэ ЮЦзчрчтАБру, Ашусзп ЦъЮчИущч.)
арОвЛ эужтЦ зшНГпэь ь ДЦщзФьОэь впъьАКрпуБАО р ЮпвшьГщКЕ БпяшьФпЕ, щпвКрпуэКЕ БпяшьФпэь зшНГуы. аэчБЮьБу Юпвтуш .
¦чстп эК счрчЮьэ, ГБч "C-n АтрьспуБ руЮБьзпшЛщч рщьв щп чтщЦ АБЮчзЦ", эК впэпшГьрпуэ чБшьГьу, зчБчЮчу щу чБщчАьБАО з тушЦ ъЮь чяКГщчэ ьАъчшЛвчрпщьь, щч АЦИуАБрущщч тшО ъчщьэпщьО Бчсч, зпз щпАБЮпьрпуБАО Emacs. мБч зчэпщтп next-line, зчБчЮпО впъЮчсЮпээьЮчрпщп щп Атрьс рщьв. ¦шНГ C-n ьэууБ Бпзчу туыАБрьу, Бпз зпз чщ ъЮьрОвпщ з МБчы зчэпщту. ¦Ашь рК ъуЮуъЮьрОжуБу а-n з зчэпщту forward-word, Бч чщ яЦтуБ ъуЮуэуИпБЛ щп чтщч Ашчрч ръуЮут. ©уЮуъЮьрОвзп зшпрьХ -- чяКГщКы эуБчт щпАБЮчызь.
¦ чАБпшЛщчы ГпАБь МБчсч ЮЦзчрчтАБрп эК чяКГщч яЦтуэ ьсщчЮьЮчрпБЛ МБЦ БчщзчАБЛ, ГБчяК АчЕЮпщьБЛ ъЮчАБчБЦ. гБчяК тпБЛ щучяЕчтьэЦН тшО щпАБЮчызь ьщДчЮэпФьН, эК АБпрьэ ьэО зчэпщтК, зчБчЮпО р туыАБрьБушЛщчАБь рКъчшщОуБ ЮпячБЦ, р зЮЦсшКЕ АзчязпЕ ъчАшу ААКшзь щп зшНГ, зчБчЮКы уу впъЦАзпуБ. +пъЮьэуЮ, эК яЦтуэ счрчЮьБЛ: "¦чэпщтп а-n
(next-line) ъуЮутрьспуБ БчГзЦ рщьв", ьэуО р рьтЦ, ГБч next-line -- МБч зчэпщтп, зчБчЮпО трьспуБ рщьв, п а-n --- МБч зшНГ, зчБчЮКы АБпщтпЮБщч ъЮьрОвпщ з щуы.
юпв Цж эК счрчЮьэ АуыГпА БчшЛзч чя ьщДчЮэпФьь тшО щпАБЮчызь, Бч МБч ъчтЕчтОИьы эчэущБ, ГБчяК ЮпААзпвпБЛ рпэ ч ъуЮуэущщКЕ. гпАБч чъьАпщьу зчэпщт яЦтуБ счрчЮьБЛ: "гБчяК ьвэущьБЛ МБч, ЦАБпщчрьБу ъуЮуэущщЦН mumble-foo". ©уЮуэущщпО -- МБч ьэО, ьАъчшЛвЦуэчу тшО впъчэьщпщьО вщпГущьО. +щчсьу чъьАпщщКу р МБчэ ЮЦзчрчтАБру ъуЮуэущщКу АЦИуАБрЦНБ ъЮчАБч тшО чяшусГущьО щпАБЮчызь: щузчБчЮпО зчэпщтп ьшь тЮЦспО ГпАБЛ Emacs ъЮчруЮОуБ ъуЮуэущщЦН ь рутуБ АуяО ъч-ЮпвщчэЦ р впрьАьэчАБь чБ уу вщпГущьО. ©чзп рК щу ьщБуЮуАЦуБуАЛ щпАБЮчызчы, рК эчжуБу ъЮчъЦАБьБЛ ьщДчЮэпФьН ч ъуЮуэущщКЕ. ¦чстп рК яЦтуБу счБчрК, ГБчяК впьщБуЮуАчрпБЛАО, ъЮчГьБпыБу япвчрКу АрутущьО ч ъуЮуэущщКЕ, ь Бчстп ьщДчЮэпФьО чя чБтушЛщКЕ ъуЮуэущщКЕ яЦтуБ ьэуБЛ АэКАш. аэчБЮьБу Юпвтуш .
¦ШНГь
©чАшутчрпБушЛщчАБЛ зшНГуы, (ьшь зчЮчБзч, зшНГ) уАБЛ ъчАшутчрпБушЛщчАБЛ ррчтьэКЕ АчяКБьы, зчБчЮпО рчАъЮьщьэпуБАО зпз Фушчу, зпз "утьщпО зчэпщтп". +узчБчЮКу зчэпщтщКу ъчАшутчрпБушЛщчАБь Emacs --- МБч ъЮчАБч чтьщчГщКы вщпз ьшь чтщч АчяКБьу; щпъЮьэуЮ, ъЮчАБч C-f тчАБпБчГщч тшО ъуЮуэуИущьО ръуЮут щп чтьщ вщпз. +ч р Emacs Бпзжу уАБЛ зчэпщтК, зчБчЮКу рКвКрпНБАО трЦэО ьшь ячшуу АчяКБьОэь.¦Ашь ъчАшутчрпБушЛщчАБЛ АчяКБьы тчАБпБчГщп тшО рКвчрп зчэпщтК, чщп ОршОуБАО впзчщГущщКэ зшНГчэ. ©ЮьэуЮчэ впзчщГущщКЕ зшНГуы эчсЦБ яКБЛ C-a, X, RET, NEXT (ДЦщзФьчщпшЛщпО зшпрьХп), DOWN (АБЮушзп), C-x C-f ь C-x 4 C-f. ¦Ашь ъчАшутчрпБушЛщчАБЛ щутчАБпБчГщп, ГБчяК АчАБпрьБЛ впзчщГущщКы зшНГ, чщп щпвКрпуБАО ъЮуДьзАщКэ зшНГчэ. ¦ ъЮьэуЮпЕ рКХу C-x ь C-x 4 ОршОНБАО ъЮуДьзАщКэь зшНГпэь. ¦НяпО ъчАшутчрпБушЛщчАБЛ зшНГуы -- МБч шьяч впзчщГущщКы, шьяч ъЮуДьзАщКы зшНГ.
¦чшЛХьщАБрч чтьщчГщКЕ вщпзчр ОршОНБАО впзчщГущщКэь зшНГпэь р АБпщтпЮБщКЕ ъЮьрОвзпЕ зчэпщт Emacs. +уэщчсьу ьв щьЕ ОршОНБАО ъЮуДьзАщКэь зшНГпэь. ©ЮуДьзАщКы зшНГ чяЙутьщОуБАО Ач АшутЦНИьэ АчяКБьуэ р ячшуу тшьщщЦН ъчАшутчрпБушЛщчАБЛ зшНГуы, зчБчЮпО Апэп эчжуБ яКБЛ впзчщГущщчы ьшь ъЮуДьзАщчы. +пъЮьэуЮ, C-x -- МБч ъЮуДьзАщКы зшНГ, ъчМБчэЦ C-x ь АшутЦНИуу АчяКБьу чяЙутьщОНБАО р трЦЕвщпзчрЦН ъчАшутчрпБушЛщчАБЛ зшНГуы. ¦чшЛХьщАБрч МБьЕ ъчАшутчрпБушЛщчАБуы ОршОНБАО впзчщГущщКэь зшНГпэь, р Бчэ ГьАшу C-x C-f ь C-x b. +узчБчЮКу, щпъЮьэуЮ C-x 4 ь C-x r, Апэь ОршОНБАО ъЮуДьзАщКэь зшНГпэь, ъЮьрчтОИьэь з БЮуЕвщпзчрКэ ъчАшутчрпБушЛщчАБОэ зшНГуы. +уБ чсЮпщьГущьО щп тшьщЦ ъчАшутчрпБушЛщчАБь зшНГуы, щч щп ъЮпзБьзу шНть Юутзч ьАъчшЛвЦНБ ъчАшутчрпБушЛщчАБь тшьщщуу ГуБКЮуЕ АчяКБьы.
+пъЮчБьр, тчяпрьБЛ АчяКБьО з впзчщГущщчэЦ зшНГЦ рК щу эчжуБу. +пъЮьэуЮ, трЦЕвщпзчрпО ъчАшутчрпБушЛщчАБЛ C-f C-k щу ОршОуБАО зшНГчэ, Бпз зпз C-f ОршОуБАО впзчщГущщКэ зшНГчэ Апэп ъч Ауяу. +урчвэчжщч тпБЛ C-f C-k щувпрьАьэчу вщпГущьу зпз зчэпщту. C-f C-k -- МБч тру зчэпщтК, п щу чтщп.
Tв рАусч Азпвпщщчсч АшутЦуБ, ГБч ъЮуДьзАщКэь зшНГпэь р Emacs ОршОНБАО C-c, C-h, C-x, C-x RET, C-x @, C-x a, C-x n, C-x r, C-x v, C-x 4, C-x 5, C-x 6, ESC, M-g ь M-j. +ч МБчБ АъьАчз щу рАБЮчущ; МБч ъЮчАБч АБпщтпЮБщпО ъЮьрОвзп зшНГуы р Emacs. ¦ ъЮчФуААу щпАБЮчызь Emacs рК эчжуБу АтушпБЛ щчрКу ъЮуДьзАщКу зшНГь ьшь ЦщьГБчжьБЛ МБь. аэчБЮьБу Юпвтуш .
¦Ашь рК р Апэчэ тушу АчвтпуБу ьшь ЦтпшОуБу ъЮуДьзАщКу зшНГь, МБч ьвэущОуБ щпячЮ рчвэчжщКЕ ъчАшутчрпБушЛщчАБуы зшНГуы. +пъЮьэуЮ, уАшь рК ъуЮучъЮутушОуБу C-f зпз ъЮуДьзА, C-f C-k прБчэпБьГуАзь АБпщчрОБАО зшНГчэ (впзчщГущщКэ, уАшь рК щу чъЮутушьБу усч Бчжу зпз ъЮуДьзА). +пчячЮчБ, уАшь рК ЦщьГБчжьБу чъЮутушущьу ъЮуДьзАп C-x 4, Бч а-Е 4 f (ьшь а-Е 4 ГБч-щьяЦтЛ) щу яЦтуБ р тпшЛщуыХуэ зшНГчэ.
+пъуГпБпр вщпз рКвчрп АъЮпрзь (C-h ьшь F1) ъчАшу ъЮуДьзАщчсч вщпзп, рК ъчшЦГьБу АъьАчз зчэпщт, щпГьщпНИьЕАО А МБчсч ъЮуДьзАп. ¦АБЛ щуАзчшЛзч ъЮуДьзАщКЕ вщпзчр, тшО зчБчЮКЕ C-h щу ЮпячБпуБ -- ъч ьАБчЮьГуАзьэ ъЮьГьщпэ Ц щьЕ уАБЛ тЮЦсчу вщпГущьу тшО C-h, зчБчЮчу щуъЮчАБч ьвэущьБЛ. +ч F1 тчшжщп ЮпячБпБЛ тшО рАуЕ ъЮуДьзАщКЕ вщпзчр.
Show Matching (...), Tag Collisions, Popups Under Pointer
Эти опции объединены в один пункт мной произвольно. И исключительно потому, что я пока не разобрался, что они значат. И, следовательно, не скажу о них ничего. Кроме того, что являют они собой (за исключением Tag Collisions) простые переключатели.Шпаргалка по редактору "Emacs"
^H k <ключ> Краткое / полное описание ключа ^H f <функция> Описание функции ^H a <текст> Все функции с этим текстом ^H w <функция> На какой клавише висит функцияШрифтовое оформление документа
Как известно, по умолчанию в TeX используется семейство шрифтов Computer Modern в собственном формате METAFONT. И хотя эти шрифты не только существуют во всех требуемых кодировках, но и обладают вполне приличными эстетическими качествами, всякое однообразие со временем приедается. К тому же при всех достоинствах технологии METAFONT приходится считаться с тем обстоятельством, что подготовленный с использованием шрифтов в этом формате postscript-файл нельзя будет распечатать на компьютере, где отсутствует TeX.Поэтому всякий пользователь LyX, вероятно, рано или поздно обратит внимание на вкладку "Документ" в диалоговом окне "Формат документа", где в числе прочих опций имеется и раскрывающийся список "Шрифты", предназначенный для выбора основной текстовой гарнитуры. Так вот: к сожалению, надлежит знать, что для русскоязычного пользователя данный список бесполезен. Перечисленные в нем шрифты соответствуют пакетам из стандартной коллекции psnfss, которая обеспечивает поддержку некоего малого джентльменского набора гарнитур Type 1, прилагаемых к любому PostScript-принтеру. Естественно, все эти гарнитуры не содержат символов кириллицы, и потому при попытке их загрузки LaTeX просто выдаст предупреждение об отсутствии шрифта в требуемой кодировке, после чего переключится на стандартный Computer Modern.
Замечу, что дополнить список шрифтов нельзя: он, как и в случае с выбором входной кодировки, жестко задан в ресурсах диалога. И, в общем-то, это понятно: всё равно программа не смогла бы среди сотен пакетов LaTeX самостоятельно найти именно те, которые ведают загрузкой шрифтов. Но хоть бы предоставили пользователю возможность ввести требуемое название вручную: ведь всё, что требуется, это передать системе LaTeX имя пакета, подлежащего загрузке. Впрочем, это не исключает возможности использования нестандартных гарнитур, а только слегка ее затрудняет.
Правда, готовых шрифтовых пакетов для TeX с поддержкой кириллицы весьма и весьма немного. Самостоятельное же их изготовление представляет собой дело хотя и возможное, но достаточно нетривиальное и требующее определенных познаний. Ну а те пакеты, которые доступны в Сети, по большей части либо сделаны непрофессионально, либо вызывают сомнения с точки зрения соблюдения авторских прав. Практически единственным безупречным во всех отношениях является пакет literat, позволяющий использовать для оформления текстов гарнитуру "Литературная" производства фирмы Paratype. Так вот, если мы установим этот пакет и пожелаем использовать его в LyX, единственным выходом из положения будет прямое редактирование преамбулы LaTeX. Для этого из меню "Layout" вызываем диалог "LaTeX-преамбула", в котором и пишем:
\usepackage{literat}
После чего можем наслаждаться видом нового шрифта при просмотре DVI и на печати.
Шрифты
Шрифты - это очень важная вещь, ибо, работая, вы постоянно на них смотрите, поэтому очень важно, чтобы со шрифтами все было в порядке. По умолчанию в Red Hat Linux 8.0 идут Unicode-ные шрифты, в которых отсутствуют русские буквы. Для того, чтобы это исправить, нужно:rpm -Uhv XFree86-75dpi-fonts-4.2.0-73.i386.rpm
service xfs restart
rm -rf $HOME/.fonts.cache-1
На данном этапе у нас уже заработает почтовый клиент Ximian Evolution.
mkfontdir
mkfontdesc
mkfontscale
вам нужно туда дописать строчку:
чтобы у вас в итоге получилось:
service xfs restart
Синхронизация
БлокировкиRace Conditions
Разрешение блокировок
То, как справляться с блокировками уже обсуждалось в разделе Блокировки и Разрешение блокировок.
Использование команды L сильно ограничено тем, что пишущий не может помечать места, на которые будет можно сослаться в дальнейшем в командах L: команды, подобной "acnhor" в HTML нет.
Вторым ограничением является то, что некоторые POD-трансляторы пытаются умничать и "украшают" ссылки дополнительным текстом. Например, pod2latex в примере ниже преобразует обе ссылки на пункты списка:
Как справляться с блокировками обсуждалось в разделе, обозначенном как \textsf{Блокировки$|$"item\_Блокировки"} в другом месте этого документа, и в разделе, обозначенном как \textsf{Разрешение блокировок$|$"item\_Разрешение\_блокировок"} в другом месте этого документа.
Примечание переводчика: Переводя эту статью, я проделал несколько экспериментов с целью уточнить, как описанные приемы работают в кириллическом окружении. Так вот, у меня на компьютере pod2latex фрагмент приведенного выше примера превратил в следующий текст << То, как справляться с блокировками уже обсуждалось в L<разделе Блокировки$|$"item\underscore{}Блокировки"> и L<Разрешение блокировок$|$"item\underscore{}Разрешение\underscore{}блокировок">. >>. Т.е., совсем странно, я даже не стал пробовать, как это будет в dvi:( Поэтому я привожу ниже тот же параграф по-английски, для того, чтобы можно было легче понять мысль автора:). pod2html, впрочем, отработал на примере нормально (или почти нормально). А вот pod2text "сумничал": << Как справляться с блокировками обсуждалось в разделе the section Блокировки... >>
How to cope with deadlocks was discussed in the \textsf{Deadlocks$|$"item\_Deadlocks"} entry elsewhere in this document, and the \textsf{Recovering from Deadlocks$|$"item\_Recovering\_from\_Deadlocks"} entry elsewhere in this document.
подчеркнутые слова добавлены pod2latex. Ясно, что нам нужен способ получше. Этот лучший способ осуществляется с помощью формато-специфичных абзацев.
XML напоминает HTML. Фундаментальное отличие
Синтаксис DocBook/ XML напоминает HTML. Фундаментальное отличие между ними -- строгость, с которой требуется выполнение синтаксических правил. Многие HTML-браузеры в высшей степени терпимы к "незакрытым" [unterminated] элементам и обычно безмолвно игнорируют неизвестные элементы и атрибуты. Трансляторы DocBook/XML отвергают не соответствующие DTD входные данные отказываясь в этом случае выдавать какие-либо выходные данные. Отказ сопровождается подробным отчетом об обнаруженных ошибках.DocBook/XML имеет несколько "наречий", отличающихся интерпретацией закрывающих тэгов. Наиболее "многословный" диалект всегда закрывает тэг
Специальные символы записываются с помощью привычных соглашений об амперсанде & и точки с запятой ;, как и в HTML. Наиболее часто употребимые специальные символы:
Комментарии заключаются между "спецскобками" .
Абзацы Абзацы разделяются одной или более пустыми строками. Число пустых строк не влияет на окончательный вид документа -- одна пустая строка так же хороша, как и несколько. Тоже самое относится к пробелам (разделяющим отдельные слова (но разве вы этого не знали?): сотня пробелов выглядят так же, как и один. Символы новой строки, т.е. завершители строк, считаются пробелами, как и символы табуляции. Если мы применим эти простые правила к трем различным версиям двух приведенных ниже абзацев, то мы придем к выводу, что все они будут одинаково выглядеть на печати. Я добавил номера в начале каждой строки для того, чтобы указать на пустые строки, отделяющие абзацы друг от друга. Эти номера не являются частью текста.
Вариант A 1 Я короткое предложение из первого абзаца. 2 3 А я единственное предложение второго абзаца.
Вариант B 1 Я короткое предложение 2 из первого абзаца. 3 4 А я 5 единственное предложение 6 второго 7 абзаца.Group arguments together
Вариант C 1 Я короткое предложение из первого абзаца. 2 3 4 А я единственное 5 предложение 6 второго абзаца.
Специальные символы Большинству не буквенно-цифровых символов в LaTeX придается специальное значение. Это одно из свойств, приводящих новичков в ужас. Однако через некоторое время привыкаешь учитывать особенности поведения тех или иных символьных комбинаций. Я собрал несколько наиболее важных специальных символов вместе со способами вставить их в текст так, чтобы они правильно отображались на печати.
\ Начинает команду: "\dots" или "\/". Обратите внимание на то, что "\\" не вставляет в текст одиночную обратную косую черту, как могли бы подумать пишущие на C. Управляющая последовательность "\\" вставляет перевод строки, а "буквальная" обратная косая черта вставляется с помощью "$\backslash$". Для того, чтобы еще больше все запутать: "\", т.е. обратная косая черта, за которой следует пробел -- это тоже команда! Она вставляет так называемый "управляемый" пробел, т.е. такой пробел (точнее: в точности один такой пробел), который никогда не "съедается", подобно обычным пробелам, как это объяснялось в разделе "Абзацы". {} Группирует аргументы вместе. Для того, чтобы вставить собственно символ фигурной скобки, его надо "заэскейпить" с помощью обратной косой черты: "\{" или "\}". % Начинает комментарий, продолжающийся до конца строки. Комментарии продолжаются до и включают символ новой строки в ее конце. Этим комментарии в LaTeX отличаются от однострочных комментариев во всех обычных языках программирования, которые не включают символ новой строки. С точки зрения пользователя это означает, что символ новой строки можно замаскировать, заканчивая строку комментарием. Hessenberg-% Triangular % <- обратите внимание на пробел непосредственно перед символом % Reduction
Мы уже заметили, что команды Texinfo начинаются с символа "собаки" -- "@". За ним либо следует единственный небуквенный символ, либо один или несколко букв. Вот несколько команд первой группы:
@@
Вставляет собственно символ коммерческого at ("@"). @"символ
Выводит "умляут-эквивалент" символа, где под символом понимается один из символов ASCII, например "a". То же самое относится к буквам, "украшенным" акцентами (@'символ), циркумфлексом (@^символ) или цедилью (@,символ). За подробностями обратитесь к узлу "Вставка акцентов [Inserting Accents] в документации Texinfo.
а вот примеры из второй группы:
@contents
Вставляет содержание в месте вхождения команды @contents. @page
Начинает новую страницу. @findex имя-фунции
Заносит имя-функции в индекс всех функций.
Команда может требовать один, два, три и более аргументов или не требовать их совсем. Некоторые команды требуют, чтобы агрументы заключались в фигурные скобки, например команда перекрестной ссылки @xref{имя-узла, имя-перекрестной-ссылки, заголовок-раздела}. Мы уже видели команды, считающими своим аргументом остаток той строки, в которой они появляются (например, команда @setfilename).
Формат POD определяет абзацы трех разных типов. Абзацы отделяются друг от друга одной или большим числом совершенно(!) пустых строк.
Абзац с обычным текстом [Ordinary Paragraph]
Любая строка, не начинающаяся, по крайней мере, с четырех пробелов или знака равенства считается обыкновенным текстом. Пустая строка служит разделителем абзацев. Это означает, что документ записывается один абзац за другим, каждый из которых отделяется, по крайней мере, одной пустой строкой.
При окончательном выводе обычные абзацы выравниваются (если формат допускает выравнивание), при необходимости с добавлением пробелов.
Абзац с преформатированным текстом [Verbatim Paragraph]
Строки с отступом в четыре и более пробелов рассматриваются, как преформатированный текст. В окончательном виде они выводятся точно так, как набраны. Все инструкции форматирования, о которых мы будем говорить далее, в преформатированных абзацах не действуют.
Абзац-команда [Command Paragraph]
Команды начинаются со знака равенства "=" в нулевой колонке, за которым немедленно следует идентификатор. Обычно команда состоит из одной строки. Тем не менее, синтаксически команды являются абзацами, поскольку отделяются пустыми строками перед и после ними.
Siren Editor разработан компанией Siren
Siren Editor разработан компанией Siren Software, целиком основан на интерфейсе X/Motif и является интуитивным и легким в использовании. Все команды располагаются в выпадающих меню, хорошо продумана компоновка экрана и работа с мышью. Инсталляция и запуск редактора под силу даже неквалифицированному пользователю. Недостатком редактора Siren является то, что в нем отсутствует какая-либо поддержка процесса программирования, а также базовые средства форматирования текста. Поэтому Siren Editor может быть полезен, главным образом, при первичном наборе и минимальном редактировании текстов. По своей функциональности этот редактор чем-то напоминает NortonEdit из MS-DOS, который очень удобен, когда в текст надо быстро внести пару-другую изменений.Сказ про TeXmacs, или как прикручивали шрифты TeX к графическому режиму, и что из этого получилось
Автор: Алексей Крюков, basileia@yandex.ruОпубликовано: 02.04.2002
Оригинал: http://www.softerra.ru/freeos/17080/
В условиях острого недостатка средств визуального редактирования под Linux каждый текстовый процессор для этой операционной системы непременно становится предметом активного обсуждения в русскоязычном Интернете. Разбираются мельчайшие подробности русификации AbiWord и способы прикрутки новых шрифтов к Ted, равно как и сравнительные достоинства ApplixWord и StarWriter. Да и наша недавняя статья о LyX лишь развивает линии, намеченные предшественниками. Однако же существует программа данного класса, о которой в Сети как будто не обнаруживается почти никакой информации на русском языке. Да и на иностранных-то сайтах трудно найти что-либо, кроме рекламы, заимствованной из ее собственной документации. Имя этой программе - TeXmacs, а автора ее зовут Joris van der Hoeven.
Чем объясняется этот заговор молчания? Возможно, дело в том, что TeXmacs, что называется, обнаруживает способность работать с русскими текстами, так что тема русификации, столь важная в других случаях, не может послужить источником вдохновения. Впрочем, это, как мы увидим, только так кажется. А может быть, пользователей Linux сбивает с толку название программы, недвусмысленно указывающее на то, что она должна иметь отношение к TeX и Emacs. Ну а у этих двух явлений, при всей их разноплановости, общая черта по крайней мере одна: неисчерпаемость. Так что писать о них надлежит не коротенькие заметки в Сети, а толстенные талмуды.
Редактор SlickEdit фирмы MicroEdge известен
Редактор SlickEdit фирмы MicroEdge известен как "быстрый" редактор для разработчиков под MS-DOS. Однако его реализация под UNIX с точки зрения скорости и интерфейса оставляет желать лучшего. Более того, на некоторых из заявленных платформ редактор функционирует неустойчиво. Представляет интерес поддержка редктором таких языков программирования, как С, С++, Pascal, COBOL, dBase, Modula-3, Assembler. Макроязык имеет синтаксис, схожий с языком REXX, использующимся на мейнфреймах IBM и в OS/2. Рекомендовать SlickEdit можно лишь тем, кто имел с ним дело на других платформах.Сохранение и выход
^\ Выход из режима "VI" в режим "EX". Редактор EX - строковый редактор, на основе которого построен редактор VI. Команда редактора EX для возврата в VI :vi. Q Выход из режима "VI" в режим "EX". Редактор EX - строковый редактор. Команда редактора EX для возврата в VI :vi. ZZ Выход из редактора с сохранением изменений.Сохранение результатов редактирования
Чтобы сохранить уже существующий файл, который был подвергнут редактированию просто нажмите C-x C-s (или выберите из меню Files пункт Save Buffer) для запуска команды save-buffer. Чтобы сохранить вновь созданный файл под новым именем, нажмите C-x C-w (или выберите из меню Files пункт Save Buffer As...) для запуска команды write-file. Emacs попросит ввести имя файла. При необходимости можно воспользоваться кнопкой Backspace, чтобы стереть предложенный путь и набрать новый:| Write file: c:\pathname\ |
Сокращения
В руководстве будут использованы следующие сокращения :^X обозначает "control" символ. Например : ^d - удерживая клавишу "control" нажать соответствующий символ. Для этого примера используется клавиша "control" в сочетании с буквой "d".
Сортировка
Сортировка XML-тегов в XSLT выполняется посредством элементаДля демонстрации сортировки я использовал пример альбома с фотографиями, в который добавил элемент
Здесь изменен порядок следования фотографий в выходном html-документе. Теперь xslt сначала упорядочит все элементы photo из xml-файла, а затем передаст их элементу template-match, вот почему xsl:sort должен находиться внутри элемента xsl:apply-templates.
Файлы xsl и html примера вы можете взять здесь:
Создание макрокоманд
Разумеется, макрокоманды на встроенном языке NEdit можно создавать обычным образом, т. е. путем написания их кода "руками", благо особенности языка вполне внятно документированы в системе справки. Однако есть и другой способ, который для начала может оказаться более простым, - это протоколирование действий. Для этого требуется (рис. 1):![]() |
Рис. 1. Протоколирование макрокоманд в редакторе NEdit. |
Запротоколированная последовательность действий будет функционировать в течение данного сеанса работы с Nedit; первый раз ее можно вызвать через меню Macro - Reply Keystrokes, а в дальнейшем через Macro - Repeat. Однако при следующем запуске Nedit она будет утрачена.
Чтобы этого не случилось, следует сохранить созданную последовательность команд в виде пунктов меню Macro. Для этого, успешно завершив протоколирование данного макроса, отправляемся в меню Preferences, выбираем там пункт Default Settings, а в нем - опцию Customize Menu. Выбрав эту опцию, обнаружим пункт Macro Menu, вызывающий панель Macro Commands (рис. 2).
![]() | |
| Рис. 2. Панель Macro Commands. |
В списке доступных команд (в левой части панели) фиксируем курсор на пункте New. В поле Menu Entry задаем название команды и, при необходимости, название более высокого уровня для группы сходных команд, например, таким образом:
Group commands>Command1
(без пробелов перед знаком > и после него). Здесь же можно приписать команду к какому-либо из доступных языковых режимов. Например,
Group commands>Command1@SGML/HTML
будет указывать, что данная команда активизируется только при выборе языкового режима SGML/HTML.
Затем заполняем поле Accelerator. Здесь за командой можно закрепить какую-либо клавишу (из числа, например, функциональных, или Windows-клавиш) или их комбинацию: например, сочетание клавиш Alt или Ctrl (возможно, еще в сочетании с Shift) с какой-либо буквой, желательно имеющей мнемонический смысл. Для этого нужно просто зафиксировать курсор в поле Accelerator и нажать требуемую клавишу (например, F12) или их комбинацию (допустим, Ctrl+литера). Следует только внимательно следить, чтобы эта комбинация не использовалась для вызова штатных функций NEdit: не исключено, что при этом она не будет вызывать ни старого, ни нового закрепленного действия.
Вслед за этим можно заполнить поле Mnemonic, введя в него какую-либо букву из имени нашей команды (так, как оно указано в поле Menu Entry). При вызове меню буква эта будет подчеркнута и теоретически может использоваться для быстрого вызова команды (в сочетании с клавишей Alt). Однако на деле это работает далеко не всегда. Вернее, почти всегда не работает, поскольку большинство букв латинского алфавита уже задействованы для штатных команд NEdit.
Наконец, последнее из предварительных действий - включение, если требуется, переключателя Requires Selection. Он предназначен для команд, которые осуществимы только с предварительно выделенными фрагментами (это, например, копирование, вырезание и т.д.).
А вот теперь нажимаем экранную клавишу Paste Learn/Replay Macro (в правой части панели). И текст макроса волшебным образом появляется в поле Macro Command to Execute, где его можно любым образом отредактировать, дополнить, сократить и т.д. После чего нажимаем клавишу OK, выходя из режима редактирования Macro Menu, - и можем испробовать новую функцию на практике. Если все работает нормально - сохраняем текущую ситуацию через меню Preferences - Save Defaults. Изменения при этом, как уже говорилось, фиксируются в секции
nedit.macroCommands:
файла . nedit из пользовательского каталога. Там же их можно отредактировать вручную.
Таким образом можно насытить меню редактора NEdit командами для выполнения часто требующихся действий, отсутствующих в штатном комплекте (например, как будет показано ниже, для ввода тегов HTML). Однако в некоторых случаях этого может оказаться недостаточно. Иногда возникает потребность в систематическом исполнении каких-либо внешних программ, например, команд оболочки. Конечно, в этом случае можно задействовать стандартное окно терминала либо обратиться к строке мини-терминала, вызываемой через меню Shell - Execute Command, или к клавишной комбинации (Alt+X). Можно еще прибегнуть к непосредственному вводу команд в поле редактирования NEdit с последующим их запуском (через меню Shell - Execute Command Line). Однако все это не обеспечит достаточно комфортной работы.
К тому же подчас необходимо, чтобы команда оболочки выполнялась по отношению к редактируемому в данный момент в NEdit документу (пример - команда ispell для проверки орфографии). И тут нам на помощь приходит еще одна возможность повышения функциональности Nedit - встраивание команд оболочки.
Создание PDF документов с использованием DocBook

Резюме:
Эта заметка рассказывает об использовании DocBook для разработки PDF - документов, утилитах для редактирования DocBook документов и перевода их в PDF - документы. В заметке не рассказывается об инсталляции утилит - они просто перечисляются, эта заметка предназначена опытным пользователям ОС Linux.
В первой части рассказывается о формате DocBook документов. После введения я расскажу об утилитах, необходимых для преобразования DocBook документов в PDF формат для просмотра их программой Acrobat.
Создание разделов.
Как и в LaTeX, могут быть определены разделы и подразделы. txt2html использует эти операторы для автоматического создания ссылок в оглавлении документа. Возможно три уровня%section Name of a section
%subsection Name of a subsection
%subsubsection Name of a subsubsection
Создание споисков.
The item keyword is used для создания списков. Например, список покупок:was created as follows:
%item 3 eggs
%item pint of milk
%1/2 pound of cheese
Списки
В состав LaTeX входит три окружения для создания списков:Они соответствуют ненумерованному списку, нумерованному списку и списку определений в HTML или спискам =item *, =item 1 и =itemтермин в POD.
Собственно элементы списка вводятся командой "\item" и могут состоять из нескольких абзацев.
В списке описаний необязательный параметр, задаваемый команде "\item" -- "\item[термин]" -- указывает термин. Последующий текст служит определение термина.
Примеры:
Список из ненумерованных элементов Что может сделать для Вас emacs: \begin{itemize} \item Вырезание и вставка блоков текста \item Переформатирование и выравнивание абзацев \item Проверка правописания в документах \end{itemize}
Нумерованный список Первый запуск emacs \begin{enumerate} \item Запускаем emacs из командной строки: \texttt{\$ emacs} emacs покажет экран запуска, а затем переключится в буфер под названием \texttt{*scratch*}. \item Нажмите клавишу~Control, а затем нажмите~H. Внизу экрана появится приглашение или окно emacs. \texttt{C-h (Введите ?, чтобы увидеть другие опции)-} \item Для того, чтобы запустить учебник emacs, нажмите~T . \end{enumerate}
Список описаний Некоторые команды emacs: \begin{description} \item[C-x C-c] Выйти из emacs. \item[C-x f] Открыть файл. \item[C-x r k] Стереть [kill] прямоугольник, заданный отметкой и указателем, т.е. активной областью [active region]. \end{description}
Внутри такой таблицы, аргументом @ item служит весь текст от самой команды @item до конца строки. Обратите внимание на это отличие от ненумерованных и нумерованных списков! Определением в таком "списке определений" должно занимать не более одной строки. Текст после такой @item-строки и до следующего элемента @item или конца таблицы становится описанием термина. Описание может состоять из нескольких абзацев, содержать другие списки и т.д.
Поскольку иногда нам нужны дополнительные термины на отдельных строках. Поскольку @item помещает свой аргумент на одной строке, для этого требуется другая команда: @itemx помещает дополнительный термин непосредственно под уже существующим. Команда @itemx допустима только сразу после команд @item или @itemx.
Copyright (C) 2002, Christoph Spiel.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 76 of Linux Gazette, March 2002
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.
Сайт рассылки: http://gazette.linux.ru.net
В Интернете эту статью пока взять негде, ждите второй половины:)
Список использованной литературы
GSwitchIt - переключатель раскладок клавиатуры.http://mcmcc.bat.ru/ - довольно интересный ресурс McMCC по неправильной (с моей точки зрения) русификации (это не касается русификации X WIndow - она выполнена правильно).
RH Linux 8.0 Cyrillic Edition - целый дистрибутив с опять-таки неправильной русификацией.
Сравнение
Создадим идентичные ( теоретически ) файлы - два в редакторе WordPad в формате RTF и DOC и один в формате RTF в редакторе PressWork 2 от GTS.Изображение 1. Кликните на изображении для детального просмотра.

Теперь попробуем открыть эти файлы разными приложениями : StarOffice, WordPerfect8, Maxwell, Abiword и Ted :
-StarOffice открыл файлы и заменил шрифт BibleScript на Helmet. Вид документов сохранился.
-WordPerfect и RTF формат : Arial был заменен на Univers, Courier на Courier 10cp, Times и BibleScript на CG Times. Вид документов ( кроме размера шрифта Courier ) сохранился. Файл в формате DOC открылся более успешно.
-Maxwell (версия 0.53) открыл ( причем плохо ) только Linux RTF файлы. Несмотря на то, что предусмотрена возможность открытия файлов в формате DOC - ничего не получилось.
-Abiword (версия 0.75 beta) достаточно корректно открыл и RTF и DOC.
-Ted прекрасно открыл Windows - RTF файл заменив BibleScript на Helvetica и любой RTF - файл созданный перечисленными выше Linux приложениями.
Изображение 2. Ted и WordPad - файл - похоже, что задача решена успешно. Кликните на изображении для детального просмотра.

Сравнительное решение задач с помощью SED и AWK
Система UNIX обладает несколькими утилитами, которые обрабатывают входной поток данных и позволяют также решать некоторые задачи редактирования: grep , egrep , fgrep , lex и awk . Мощная и многофункциональная утилита awk также может быть применена для простого редактирования текстов, поскольку также основана на использовании регулярных выражений. Однако, как видно из примеров, приведенных ниже, время решения задач с помощью sed значительно меньше по сравнению со временем, затрачиваемым awk . Неинтерактивный редактор sed обеспечивает выполнение в пакетном режиме большинства функций редактирования редактора ed и является оптимальным при решении несложных задач пакетного редактирования.Средства форматирования
Существует множество средств работы с SGML текстами. Бóльшую их часть составляют средства форматирования -- экспорта SGML в другие форматы для печати, просмотра и т.п. Выходные форматы могут быть любыми, завися лишь от доступного программного обеспечения и нужд пользователя. Например, я использую конвертеры в HTML, RTF и LATEX.SGML-процессоры могут быть устроены по-разному. Существует несколько поколений таких средств (стоит вспомнить, что SGML отсчитывает уже второй десяток лет своей истории). Обычно они включают:
Синтаксический разбор SGML довольно сложен, поэтому полноценных анализаторов существует немного. Эталонным считается пакет .
Спецификации, или стили, пишутся на предлагаемом ядром языке программирования. Есть SGML-процессоры, программируемые на языках Perl, Tcl, диалектах Lisp, и т.п. Каждый процессор предлагает собственное представление иерархии документа и собственные примитивы работы с ним.
Такое положение призван изменить недавно принятый стандарт DSSSL (Document Style Semantics and Specification Language). Он специфицирует единый язык и интерфейсы SGML-процессоров. Используемый в нем язык программирования близок к популярному функциональному языку Scheme.
Средства KDE - Kedit, Kwrite, Katy
Графическая среда KDE включает в себя два штатных текстовых редактора Kedit (именуемый в русском варианте простым) и Kwrite (названный по русски расширенным).Первый из них - это закаленное и отточенное орудие для набора текстов. И особенно - для их придумывания. Поскольку Kedit содержит большинство функций для набора текстов и их простейшего редактирования: выделение, копирование, вставка, поиск и замена. И - ничего лишнего для их форматирования. А также имеет почти все необходимые и все достаточные настройки.
Манипуляции с текстами в Kedit осуществляются посредством строки меню и инструментальной панели. В последней - кнопки для файловых операций (создание, открытие, запись), редактирования (копирование, вставка, вырезание), печати и почты. Панель, правда, не настраиваемая.
Пунктов меню - три (не считая help): Файл, Редактирование, Настройка. В первом - создание и открытие (в том числе из списка недавних) файла, его сохранение (и под другим именем тоже) и закрытие. Можно открыть файл из удаленного источника и сохранить в таковом. Здесь же - печать, отправка и прием почты, выход. А также - создание нового окна: Kedit - редактор однооконный, для каждого нового документа требуется запустить его отдельную копию.
В пункте Редактирование - копирование, вставка (которая возможна и стандартным способом, средней клавишей мыши) и вырезание, выделение (всего), вставка даты. Здесь же - поиск, замена, проверка правописания, переход на строку.
Настройки - достаточно богаты для такого простого на вид инструмента. Можно настроить гарнитуру шрифта и его начертание, кегль и, при необходимости, кодировку. Поддаются переопределению цвета шрифта и фона (можно выбрать их стандартной палитры или назначить собственный), параметры Spellchecker'а (выбор словаря и кодировки, по умолчанию используется стандартные для ispell), граница (в знаках) для переноса слов и т.д. Для сохранения установок в следующем сеансе их следует запомнить (подпункт Записать установки).
В общем, инструмент более чем пригодный для набора текстов. Из принципиальных недостатков я отметил бы только отсутствие возможности делать закладки в тексте, и отстутствие функции Undo/Redo. Навигация несколько затруднена невозможностью перейти в начало или конец текста (например, с помощью привычных клавиш Control+Home и Control+End). Не предусмотрен многооконный режим - для работы с несколькими документами нужно открывать соответствующее количество экземпляров программы. Нет также подсветки синтаксиса, но это уже - из области роскошного.
Редактор Kwrite чрезвычайно сходен по интерфейсу с Kedit. Название редактора Kwrite вызывает ассоциацию с приснопамятным по временам Windows 3.xx Write. Однако функционально он отличен от редакторов общего назначения типа Kedit, поскольку предназначен для написания не столько просто текстов, сколько текстов исходных.
С точки зрения интерфейса Kwrite очень сходен с Kedit, обнаруживая строку меню и панель кнопок (рис. 11). Пункты меню почти те же - Файл, Редактирование, Настройки, плюс Закладки.
В пункте Файл - создание, открытие (в том числе Open Recent) и сохранение (в том числе Save as), печать, Новое окно (открытие пустого окна) и Новый вид (открытие второй копии того же документа в новом окне): как и Kedit, Kwrite не является многооконным редактором в полном смысле слова, требуя отдельного своего экземпляра для каждого файла. Кроме того, есть вставка существующего файла в текущий. Ну и выход, конечно.
В пункте Редактирование - стандартные Вырезать, Копировать, Вставить, а также Undo и Redo (отсутствующие в Kedit), поиск, замена, переход на строку. Кроме того, здесь есть ввод отступа строки и и его отмена, и всякого рода выделение (всего, отмена и обращение выделения).
Добавленный против Kedit пункт Закладки содержит три очевидные подпункта - установка, добавление и уничтожение закладок.
А вот настройки в Kwrite существенно отличаются от таковых в Kedit. Перво-наперво, в нем можно установить раскраску синтаксиса какого-либо языка - C, C++, Java, HTML и т.д. Далее, в подпункте По умолчанию устанавливаются гарнитура, размер, кодировка и цвет шрифта, как для нормального текста, так и для различных типов данных. Затем - Раскраска, где настраиваются цвета для языковых конструкций. Так, если ранее была выбрана раскраска HTML, здесь можно определить цвета не только для тэгов, но и для атрибутов и их значений, в результате чего html-код может принять сколь угодно пестрый вид.
Подпункт собственно Настройки - это возможность установить ограничение длины строки (при включении переноса по словам), величину табуляции, уровни отмены, всякого рода отступы, а также параметры выделения (в том числе множественно и вертикальное выделение, иногда - очень полезная возможность).
Еще одна очень интересная возможность - изменение символа конца строки: помимо свойственного Unix LF, можно установить DOS'овский CR-LF или Mac'овский CR.
Также в пункте настройки можно определить горячие клавиши для большого количества команд - перемещения курсора, файловых операций, редактирования, выделения, поиска, замены и перехода. Назначение прочих подпунктов - понятно без комментариев.
Панель кнопок предназначена для производства стандартных операций с файлами, редактирования, отмены и возврата.
Из обзора возможностей Kwrite и его настроек видно, что это типичный редактор для программиста. Что подчеркивается, скажем, отсутствием функции проверки орфографии и даже печати. Однако и для набора длинных связанных текстов он вполне пригоден. А орфографию можно всегда проверить и в любой внешней программе, просто в ispell, наконец.
Кроме штатных, для работы в KDE предназначен такой редактор, как Katy - очень простой, но удобный. Его отличительная особенность - многооконность, переключение между загруженными документами осуществляется с помощью закладок.
Текущая версия Katy (0.2.3), вероятно, еще не вполне функциональна. Об этом можно судить по тому, что разработчиками он позиционируется как аналог такого редактора для Windows, как UltraEdit, но существенно не дотягивает до него по своим возможностям.
Интерфейс Katy достаточно стандартен для KDE-приложений. Управление осуществляется через меню или почти дублирующую его функциональную панель. В меню - пункты:
Полезно, что закладка каждого измененного, но не сохраненного файла маркируется звездочкой.
Из недоработок бросаются в глаза отсутствие переноса слов и подсветки синтаксиса, что весьма необычно для редактора, претендующего на статус развитого. Кроме того, Katy не может похвастаться и стабильностью.
Разумеется, описанными примерами список текстовых редакторов графического режима не исчерпывается. Поэтому более или менее кратко затронем
Ссылки на меня :-)[по результатам /var/log/httpd/referer.log]
Содержание
Last changed 02-01-2000.
Ссылки по теме
— статья о проблемах русских кодировок в Сети— официальный сайт кодировки Unicode
Заметки об извращениях — подробно о русских кодировках
Почтовый декодер Арт. Лебедева — расшифровывает письма, пришедшие в неизвестных науке кодировках
"Крестоносцы" — статья "КомпьюТерры" о проблемах с кодировками
Ссылки
1. 2. Quick Reference: DocBook Elements 3. Emacs major mode for DocBook 4. The Modular DocBook Stylesheets 5. 6. OpenJade 7. JadeTeX 8. 9. DocBook: The Definate Guide on SGML variant| Webpages maintained by the LinuxFocus Editor team © Egon Willighagen LinuxFocus.org 2000 Click here to report a fault or send a comment to Linuxfocus |
Translation information: |
| en | -> | -- | |
| en | -> | ru |
2000-07-05, generated by lfparser version 1.5
Updated on Thursday, July 27, 1995
Updated on Monday, October 3, 1994
Copyright © 1996 University of Hawaii, College of Engineering, Computer Facility
All rights reserved.
| Webpages maintained by the LinuxFocus Editor team © Ben Y. Yoshino LinuxFocus.org 2000 Click here to report a fault or send a comment to Linuxfocus |
Translation information: |
| en | -> | -- | |
| en | -> | ru |
2000-07-05, generated by lfparser version 1.5
Стандартные PC-клавиши
Ctrl+Insert: копирование выделенного (первичным методом) фрагмента в буфер; аналогично действию меню Edit - Copy или клавишной комбинации Ctrl+C; введено для совместимости со стандартом клавишных комбинаций приложений Motif.Shift+Ctrl+: помещение выделенного (первичным методом) фрагмента в позицию курсора.
Delete: действует обычным образом, то есть удаляет символ после позиции курсора.
Ctrl+Delete: удаляет часть строки от позиции курсора до конца.
Shift+Delete: удаление выделенного фрагмента с помещением его в буфер (подобно команде Cut в большинстве Windows-приложений); аналогично действию через меню Edit - Cut или комбинации клавиш Ctrl+X).
Shift+Ctrl+Delete: удаление выделенного первичным методом фрагмента, то же, что просто Delete.
Home: перемещение курсора в начало строки.
Ctrl+Home: перемещение курсора в начало документа.
End: перемещение курсора в конец строки.
Ctrl+End: перемещение курсора в конец документа.
PageUp: перемещение курсора назад на один экран (экранную страницу).
Ctrl+PageUp: довольно заковыристая комбинация, перемещает курсор в пределах абзаца (или истинной строки) влево на столько знаков, сколько имеет место на текущей экранной строке; или, при других опциях переноса слов, на один экран по горизонтали влево.
PageDown: перемещение курсора вперед на один экран (экранную страницу).
Ctrl+PageDown: то же, что и комбинация Ctrl+PageUp, но перемещает курсор, соотвественно, вправо.
F10: якобы активизирует меню для выбора пунктов с клавиатуры посредством клавиш управления курсором и т.д. В моей версии не работает.
Standarts
Существует несколько стандартов описания сharset и способов их кодирования :Описание наборов символов , , в формате POSIX.
Что касается имен
зарегистрированных Charset-ов, то смотри .
Страница отзывов
У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.| talkback page |
| Webpages maintained by the LinuxFocus Editor team © Andre Pascual, FDL LinuxFocus.org Click here to report a fault or send a comment to Linuxfocus |
Translation information: |
| fr | -> | -- | |
| fr | -> | de | |
| de | -> | en | |
| en | -> | ru |
2000-11-06, generated by lfparser version 2.1
Структура документа
Как уже говорилось, документы DocBook должны соответствовать заданной в DTD структуре. В начале каждого документа выбирается конкретная DTD:Для наглядности я разбил заключенное между "<" и ">" выражение на строки и пронумеровал их.
В части (1) говорится, что мы собираемся выбрать DTD. Часть (2) определяет элемент , который становится корневым элементом нашего документа. В части (3) идентификатор PUBLIC сообщает транслятору местоположение DTD на данном конкретном компьютере. Квадратные скобки, составляющие часть (5), могут содержать так называемые определения сущностей [entity definitions], но, поскольку в введении мне не хочется вдаваться в детали, эта часть оставлена пустой.
Итак, наш текст начинается с корневого элемента, в данном случае с book. То, какие элементы могут появится внутри определяется в DocBook DTD. Это может быть, например, bookinfo или chapter. Исчерпывающий перечень разрешенных элементов можно узнать из "Всеобъемлющего руководства". Элементы, которые могут появится внутри bookinfo или chapter определены в DocBook DTD, как и все другие элементы. Единственный способ составления правильного [valid] документа -- следование предписаниям DTD.
Хотя в первый момент правила могут показаться обременительными (Правила? Черт бы их побрал, эти правила!), но они играют ключевую роль в доступе к документам из программ. Поскольку документ соответствует DTD, то вся последующая обработка может использовать это обстоятельство. Какая радость для пишущих программы-обработчики! Признаю, что число элементов и их взаимоотшения понять непросто. Впрочем, эти взаимоотношения вполне логичны: глава [chapter] может содержать один или несколько (вводных) абзацев и один или несколько разделов первого уровня [level 1 sections]. С другой стороны, ни один раздел не может включать главу -- что было бы нелепо. Изучению DocBook может также помочь экземляр "Всеобъемлющего руководства", "поселившийся" рядом с клавиатурой. Ниже приводится краткая подборка часто используемых тэгов.
Вот совсем коротенький, но полный документ DocBook.
Структурирование текста
В главе "Настройка переменных редактора Emacs" говорилось о том, что переменная sgml-indent-step позволяет осуществлять автоматическое структурирование тэгов PSGML, путем смещения вложенных элементов на требуемое количество символов вправо. В Emacs существует команда, которая в режиме PSGML выравнивает тэги. Это команда indent-region, соответствующая комбинация клавиш - M-C-\.Рассмотрим пример. Ниже приводится текст, в котором структурирование выполнено случайным образом.
| |
Выделите данный текст как блок и нажмите M-C-\. PSGML обработает выделенный фрагмент, сделав структуру элементов более понятной:
Структурные тэги [Sectioning Tags]
Структурные тэги делят документ на логические части -- главы, разделы, абзацы и т.д.chapter (глава), sect1 (раздел уровня 1), ..., sect6
заголовок
за которым следуют
абзацы или разделы уровня N+1
Определяет раздел. Обычно, элемент-глава или элеметн-раздел несет атрибут id, который дает возможность ссылаться на данный элемент, например так:
para (абзац)
текст абзаца
Формирует абзац из нескольких строк текста. Этот элемент -- "рабочая лошадка" многих документов.
programlisting (листинг программы)
текст программы
Воспроизводит значительный отрывок программного текста с сохранением разбиения на строки. Предполагается, что программа написана на языке, указанном в атрибуте role. Имейте в виду, что внутри programlisting все специальные символы сохраняют свое значение!
Syntax Highlighting, Statistics Line, Incremental Search Line и Show Line Numbers
Это - просто переключатели, с помощью которых можно показать или скрыть:Правда, для пункта Syntax Highlighting настройке поддается также Recognition Patterns и Text Drawing Styles. Что такое первое - я пока не разобрался, а второе - это приписывание каждому элементу языковых конструкций цвета и шрифтоначертания. Для языка HTML, например, можно определить различные цвета тэгов, их атрибутов и значений последних, комментариев, метатэгов и так далее.
Так же легко понять смысл следующего настраиваемого элемента -
Таблицы.
Создание простых таблиц с помощью txt2html делается с использованием ключевого слова, определяющего начало иконец таблицы, а также ключевого слова, определяющего каждую колонку. Знак | разделяет колонки. Например, таблица:| Average height | Average weight | Red eyes | |
| Males | 1.9 | 0.003 | 0.4 |
| Females | 1.7 | 0.002 | 0.2 |
была создана строкой:
%table
%row | Average height | Average weight | Red eyes
%row Males | 1.9 | 0.003 | 0.4
%row Females| 1.7 | 0.002 | 0.2
%table
Talk
Начиная с OpenBSD 2.9, в программе talk, появилась поддержка русских символов. Другие, более старые версии talk не поддерживали русские символы. Для решения этой проблемы была создана программа bazar. Программа оформлена в виде порта с использованием файлов из /usr/src/usr.bin/talk от OpenBSD. Загрузить порт bazar можно .Программа bazar полностью совместима с talk, но содержит следующие дополнения:
TED 2.la
Редактор TED разработан английской фирмой Eagle Dynamics, имеющей представительство в Москве, и на сегодняшний день является единственным полностью русифицированным профессиональным текстовым редактором для UNIX, распространяемым в России. Редактор работает как на текстовых терминалах, так и под Х Windows, при этом CUA-интерфейс делает его похожим на редактор MultiEdit для MS-DOS или среду разработки Borland IDE. Это единственный из всех редакторов, у которого имеется документация на русском языке (два тома). TED ориентирован как на профессиональных разработчиков, так и на неподготовленных пользователей, может быть легко перенастроен в соответствии с индивидуальными вкусами. Редактор распространяется практически на любых платформах UNIX. Единственным, но несущественным, по мнению автора, недостатком редактора является отсутствие развитого макроязыка, что, впрочем, компенсируется возможностью создания командных и клавишных макро.Ted как орудие бюрократа и головотяпа
О чем - в продолжении, которое, как всегда, следуетTED

Резюме:
Одно из главных препятствий перехода от Windows к Linux - несовершенство переноса данных между платформами. Если в области графических изображений это не проблема, то что касается документов и данных Microsoft Office это так.
Кто - нибудь обязательно возразит, что StarOffice 5.2 прекрасно взаимодействует с файлами Word и Excel, да это так, но всегда ли есть необходимость запускать такое мощное приложение для того, чтобы просмотреть или изменить простой файл Word или WordPad.
Как раз для этого и создан TED.
Технология XML свободна от лицензирования, платформо-независима и хорошо поддерживаема

Revised 13 Nov. 2001 (last update: $Date: 2001/12/20 10:34:31 $)
Created 27 Mar 1999 by Bert Bos
Перевод: В.Ярошевич, 10 декабря 2001 года
(Previous version)
© 1999-2000 ® (MIT, INRIA, ), All Rights Reserved.
Текстовые буферы в редакторе VI
Редактор vi предоставляет пользователю 36 буферов для хранения информации и также буфер общего назначения. Удаленный или скопированный текст помещается в буфер общего назначения. Многие пользователи vi редко используют другие буферы. Но можно использовать так называемые "поименованные" буферы. Для их применения используется команда ". Эта команда используется в сочетании с буквой или цифрой для определения буфера. Например : команда "mdd использует буфер m для вырезания в него текущей строки. Команды p или P используются для вставки текста. Команда "mp вставит содержимое буфера m за текущей позицией курсора. Эти буферы могут быть использованы командами, рассматриваемыми в следующих двух разделах.Текстовые процессоры
Здесь материалов будет существенно меньше. Во-первых, текстовых процессоров под Linux просто меньше, чем текстовых редакторов. Во-вторых, самые могучие из процессоров, по доброй традиции последних лет, выступают не самостоятельно, а в составе офисных комплектов, которые будут предметом следующей саги. И в третьих, многие программы, которые могли бы занять достойное место в этом разделе, находятся в процессе разработки и не могут считаться пока полнофункциональными.Каково, на мой взгляд, предназначение текстового процессора? От ответа на этот вопрос будет зависеть и их оценка, а потому задержусь на нем чуть подробнее.
Можно наметить три сферы приложения текстовых процессоров:
Рассмотрим их по очереди, начав с последней; поскольку именно для этого применяются текстовые процессоры подавляющим большинством пользователей, во-первых, и потому, что именно на это ориентированы все развитые коммерческие их представители - во-вторых.
Мне представляется, что это - самый нерациональный подход, который только можно себе представить. Почему - нетрудно ответить. Как известно, пятиборцы (да простят меня представители этого, очень мной любимого, вида спорта) - это те, кто все умеет делать. Плохо. И потому ожидать, что программа будет одинаково хорошо выполнять столь противоречивые функции, как просто ввод текста и его редактирование, форматирование, вставку рисунков и таблиц с их точным позиционированием (а подчас и обработку, и даже подготовку иллюстраций), сравнение версий с точки зрения содержания и оформления - было бы наивно. Каждый, кто пробовал набирать текст в PageMaker или верстать оригинал макет в Word - вероятно, спорить со мной не будет. Во всяком случае, то, что книжки, сверстанные в Word, безошибочно опознаются с первого взгляда (и не своими высокими оформительскими достоинствами) - медицинский факт, как сказал бы О.Бендер.
Даже если представить себе непредставимое (подобно квадратному трехчлену) и создать программу, в равной степени хорошо выполняющую все перечисленные (но далеко не все, которые могут реально потребоваться) функции удалось бы - страшно представить, каких аппаратных ресурсов потребует такой монстр. Впрочем, страшно-то страшно, но можно: именно тех, каких требуют современные развитые коммерческие текстовые процессоры. Что, впрочем, не означает, что они хоть в какой-то мере приблизились к туманному идеалу.
Хотя, справедливости ради, нужно заметить: такой цели - приблизиться к идеалу - перед этими продуктами создатели и не ставили. Ведь основное, я бы сказал - сакральное, предназначение коммерческих офисных приложений - облегчение не труда, а кошелька пользователя. Первейшая обязанность которого, как известно - постоянные upgrade аппаратуры в соответствие с требованиями нового софта...
Однако я отвлекся, пора перейти ко второй сфере применения текстовых процессоров. То есть обработке уже написанного. Обработка эта может быть двоякого рода - с точки зрения содержания и представления, что требует различных функций.
Обработка с точки зрения содержания требует средств редактирования - раз, и средств сравнения и контроля версий - два. Первая задача достаточно успешно решается, не выходя за рамки текстовых редакторов. Вторую, значение которой при коллективной работе трудно переоценить, теоретически также можно попробовать решить средствами текстовых редакторов, по крайней мере наиболее развитых. Однако это потребует дополнительных усилий - штатные средства такого рода в них мне неизвестны. И потому функции контроля и коллективной работы - это единственное, что хоть как-то примиряет меня с программными монстрами типа Word или WordPro. Благо самому этими средствами пользоваться почти не приходится...
Обработка с точки зрения оформления - понятие чрезвычайно обширное. С одной стороны, под него попадает несложное шрифтовое оформление и центрирование заголовков перед выводом на печать докладной записки, с другой - сложная верстка, вплоть до оригинал-макета для типографского воспроизведения. О первой крайности - чуть ниже, а вот для второй человечеством специально придуманы т.н. настольные издательские системы. Зато все промежуточные варианты обработки для представления - создание и ранжирование рубрик, составление оглавлений и предметных указателей, разметка иллюстративного и табличного материала - это именно и по преимуществу вотчина текстовых процессоров.
Наконец, сфера делопроизводства. Речь идет, разумеется, не о документообороте министерства или транснационального концерна. А о тех планах, отчетах, этапах, сметах, служебных записках, которые каждый из нас пишет но сто раз на дню и имя которым - легион. Ведь, как доказано практикой, повсеместное внедрение электронного документооборота привело к росту документооборота бумажного в геометрической прогрессии. Что понятно: раньше, чтобы напечатать бумагу в трех экземплярах, нужно было напрячься и каждый лист проложить копиркой, а сейчас - отправил на принтер хоть сто копий - "и сидишь себе, болтаешь ножками, сам сачкуешь, а она работает" (А.Галич).
Вот со сферы такого, с позволения сказать, локального, документооборота мы и начнем. Для чего рассмотрим
Текстовые редакторы для ОС UNIX
А. Фомичев andy@eagle.msk.su, Eagle Dynamics, Москва17.04.1994
| |
Известно, что программисты достаточно легко меняют язык программирования или даже операционную систему, но чрезвычайно редко и весьма неохотно меняют любимый текстовый редактор. Этот факт можно объяснить тем, что для любого разработчика текстовый редактор является непосредственной средой обитания, где готовятся тексты программ и документация, откуда осуществляетея взаимодействие с различными компонентами операционной системы (файловой системой, интерпретатором команд, процессами и т. п.). Пользователь настраивает эту среду в соответствии со своими требованиями и вкусами, со временем у него вырабатыеетея определенный стиль работы с редакторе, многие действия доводятся до полного аетоматизма. Поэтому любая перемена означает изменение привычек, а это никогда не проходит безболезненно. Зачастую первоначальный выбор редактора обусловлен лишь отсутетвием в текущий момент какой-либо альтернативы. Цель данной статьи - сориентироеать всех, кто недавно перешел в ОС UNIX из более дружественных" операционных систем и стоит на перепутье в выборе подходящих программных средств. Здесь будет сделан обзор как коммерческих текстовых редакторов, так и редакторов, предлагаемых бесплатно, в той или иной степени ориентированных на разработку программ. Постараюсь показать, что при веей ограниченности выбора альтернативы vi вее же есть!
В последнюю пару лет в России (что, впрочем, соответствует и общемировым тенденциям) можно наблюдать все более возрастающий интерес к операционной системе UNIX со стороны государственных служб, финансовых и управляющих структур (министерств, департаментов, ассоциаций, инспекций и т. д.), а также коммерческих организаций (банков, акционерных обществ, бирж и прочих). Всеобщая компьютеризация, похоже, из показухи переросла в насущную потребность, без которой стало практически невозможно успешно вести какие-либо дела внутри страны, не говоря уже о выходе на международный рынок. Прошли те времена, когда предприятию достаточно было приобрести пару-другую компьютеров типа IBM РС-286 и установить на них несколько программ для расчета зарплаты, учета складской продукции и т. п., состряпанные за пару месяцев умельцами, использующими незабвенный Clipper, dBase, Clarion или другие "подручные" средства. Сегодня признаком хорошего тона является наличие в организации нескольких UNIX-машин, объединенных в сеть, с установленным лицензионным программным обеспечением, стоимость которого, к слову, сравнима со стоимостью самого вычислительного оборудования. Такое положение дел может только радовать.
Причины возрастания популярности ОС UNIX, на мой взгляд, следующие. Во-первых, характер требующих решения задач (автоматизация офиса, банковской деятельности или производства, управление коммуникациями) диктует необходимость использования многопользовательской, многозадачной, сетевой и открытой для наращивания операционной системы. Наиболее развитой и распространенной операционной системой такого класса, безусловно, является UNIX. Во-вторых, за последние годы значительно снизились цены как на вычислительное оборудование, так и на сами операционные системы UNIX, с одновременным возрастанием их возможностей и производительности. Ну и, в-третьих, это, вероятно, дань моде - "чем я хуже?".
Зачастую можно наблюдать ситуацию, когда переход на платформу UNIX наконец-то осуществлен, штат имеется, цели вроде бы ясны, а вот со средствами достижения этих целей туговато. Пользователь, будь то программист, администратор или оператор по набору текстов, работавший раньше в MS-DOS и имевший в своем распоряжении несколько текстовых редакторов и программных сред на выбор, ощущает дискомфорт при общении с "недружественным" UNIX'ом из-за отсутствия в последнем подобного выбора. Имеющиеся средства (как правило, это уже морально устаревший редактор vi или, в лучшем случае, Emacs) оставляют желать лучшего, будучи недружелюбными, сложными в освоении, и, как иногда кажется, нелогичными, лично я не могу понять, почему, например, команда "l" в vi означает "курсор вправо". Получается, что "нормально" работать в UNIX могут только хакеры, которым, в принципе, ничего кроме vi и не надо ("vi жил, vi жив, vi будет жить"), а также те, кто прошел курс обучения vi или Emacs или нашел в себе мужество перекопать документацию для того, чтобы выяснить, например, что сохранить файл в Emacs можно, нажав Ctrl+X Ctrl+W. Невольно возникает вопрос: не лучше ли потратить время на изучение языка 4GL или освоение электронной банковской системы, чем на изнурительное изучение Emacs или vi, чья "криптография" не только поражает, но и подавляет!? Справедливости ради заметим, что в свое время Emacs сыграл свою роль мощного средства разработки, да и сейчас пользуется популярностью у большого числа программистов - поэтому не будем его категорично отвергать. Да и у нелюбимого мною (которому, кстати, исполнилось уже 16 лет) есть, по крайней мере, одно достоинство - он присутствует, наверное, в любой реализации UNIX и иногда оказывается единственным доступным средством.
Ну, а теперь перейдем от лирики к прагматике. На вопрос "Можно ли найти под UNIX'ом что-нибудь приличное в классе текстовых редакторов общего назначения?" я с полной ответственностью отвечаю: "Да, можно!". Сделаю оговорку: термином "текстовый редактор" я обозначаю программный продукт, ориентированный на подготовку текстов (писем, отчетов, исходных кодов программ) и работающий с файлами в стандартноформате ASCII, без вставки каких-либо специальных символов. В данной статье я сознательно не буду упоминать так называемые "текстовые процессоры" типа WordPerfect и "настольные издательские системы" типа FrameMaker, поскольку продукты этих категорий, во-первых, решают несколько другие задачи, а, во-вторых, значительно дороже текстовых редакторов. Кроме того, по скромному мнению автора, лучше и дешевле Макинтошей или персональных компьютеров IBM РС, оснащенных системой MS Windows, для настольных издательских целей еще ничего не придумано. Так зачем же стучаться в открытую дверь?!
Итак, все текстовые редакторы для UNIX можно условно разделить на три категории:
- редакторы, разработанные специально под ОС UNIX; редакторы, перенесенные в UNIX из других платформ;
- эмуляторы "родных" редакторов из других операционных систем.
При этом часть редакторов распространяется в исполняемом виде или в исходных кодах как продукт категории "public domain", то есть бесплатно. Преимущества использования продуктов "public domain" очевидны: экономия денег, возможность адаптации под свои требования. Но налицо и недостатки: практическое отсутствие печатной документации, какой-либо поддержки со стороны производителя, затрата человеческих ресурсов на адаптацию и сопровождение. Из данной статьи Вы узнаете, где можно приобрести как коммерческие текстовые редакторы, так и распространяемые свободно.
Тело документа
Тело документа Texinfo представляет собой смесь команд секционирования, используемых при печати (части TeX-публикации: главы, разделы, подразделы и т.д.) и команд группировки, используемых при просмотре на экране (собственно Info: узлы [nodes]). Теоретически, каждая из этих двух "ипостасей" может задавать свою структуру документа. Такая ситуация, однако, может изрядно обескуражить читателя, а это, вероятно, не входит в план написания технической документации.Я изложу упрощенный подход к созданию тела документа, в котором структура он-лайновой и печатной версий максимально близки. Ценой незначительного ограничения возможностей навигации это избавляет пишущего от головной боли ручной разбивки документа для экранного просмотра. Упрощенная метода требует, чтобы структура информации в Info-версии соответствовала структуре печатной версии.
Структура Info определяется командами @node node-name, в то время как структура печатного документа задается -- среди прочего -- командами @chapter chapter-title, @section section-title и @subsection subsection-title. Команда @node всегда появляется первой. Вот некоторые примеры:
@node Введение @chapter Введение
или
@node Итеративные-процессы @section Итеративные процессы
или
@node Численная стабильность @subsection Численная стабильность итеративных алгоритмов
Аргумент команды @node присваевает узлу имя node-name. Имя состоит из одного или более слов. Пробелы в node-name вполне допустимы, но точка .'', запятая ,'', двоеточие :'' и апостроф ' -- запрещены. В имени узла также рекомендуется избегать команд (чего-либо, начинающегося с "@"). Имена узлов чувствительны к регистру. В документе Texinfo каждый узел должен иметь уникальное имя. Существует соглашение, по которому слова в именах узлов начинают с заглавной буквы, как это делается в именах глав и разделов (автор имеет в виду традицию англоязычной типографики, согласно которой все значимые слова -- существительные, прилагательные и глаголы, но не предлоги и артикли, пишут с заглавной буквы. прим. пер.).
Узел может либо содержать исключительно данные (а именно текст, таблицы, иллюстрации и перекрестные ссылки), либо узел должен определять меню навигации. Далее узлы "первого рода" я называю терминальными, а узлы второго рода -- узлами-меню.
Терминальные узлы
Структура терминального узла такова
@node имя-узла
@section заголовок-секции
текст-узла-главы
я воспользовался командой @section, как примером команды секционирования.
Терминальные узлы -- плоть документа. В них заключена вся информация, которая видна читателю. текст-узла-главы обычно содержит один или более абзацев, таблиц и т.д.
Узлы-меню
Узлы-меню обеспечивают "децентрализованные" оглавления (что уже является мета-информацией), из которых можно быстро "перескочить" к любому из перечисленных в меню разделов.
Структура узла-меню схожа с терминальным узлом за исключением того, что узел-меню заканчивается определением меню навигации. Меню навигации вставляется исключительно в Info-версию и никогда не появляется в печатной версии.
@node имя-узла
@chapter заголовок-главы
необязательный-вводный-текст-и-для-узла-и-для-главы
@menu
* Имя узла для первого раздела :: Синопсис первого раздела
* Имя узла для второго раздела :: Синопсис второго раздела
...
* Имя узла для последнего раздела :: Синопсис последнего раздела
@end menu
Меню навигации заключается "в скобки"
@menu
@end menu
и каждая строка между ними превращается в пункт меню. Каждый пункт должен начинаться с символа "звездочки" *'', за которым следует имя узла, на который этот пункт указывает [target node]. Далее идет двойное двоеточие ::'', а за ним может помещаться необязательное краткое описание "указУемого" раздела:
* Имя раздела :: Необязательное описание раздела
Корень документа Один узел-меню играет особую роль в каждом документе Texinfo: главный узел, которому "принадлежат" все остальные. Корень документа называется узлом Top и определяется двумя командами: @node Top
@top имя-корневого-узла
Поскольку корневой узел оказывается первым каждый раз, когда документ загружается для просмотра на экране (если нет явного указания начинать просмотр с какого-либо иного узла), то желательно включить в него вводный текст. Такой вводный текст обычно не годится для печатной версии. Не забыли, что в печатной версии вообще нет меню? Поэтому нам надо исключить вводный текст из печатной версии, что достигается с помощью команд условной трансляции: парных команд @ifinfo и @end ifinfo. Несложный корневой узел выглядит следующим образом:
@ifinfo
@node Top
@top Пример
Это пример документа Texinfo.
@end ifinfo
@menu
* Имя первой главы:: Синопсис первой главы
* Имя второй главы:: Синопсис второй главы
* Имя третьей главы:: Синопсис третьей главы
@end menu
Вот мы и готовы написать полный документ Texinfo.
\input texinfo @setfilename example.info @settitle Texinfo Example
@ifinfo @node Top @top Пример Это пример документа Texinfo. @end ifinfo
@menu * Введение:: Определения, Меры, Сложность * Исчисление полиномов:: Изучение обычных операций @end menu
@node Введение @chapter Введение В этой главе обсуждаются концепции, в дальнейшем используемые в разных частях этого документа. Более того, здесь вводятся мера эффективности и мера ограничения сложности.
@menu * Определения:: Основы * Меры эффективности:: Как измерять эффективность * Ограничения сложности:: Типичные ограничения сложности @end menu
@node Определения @section Определения ...
@node Меры эффективности @section Меры эффективности ...
@node Ограничения сложности @section Ограничения сложности ...
@node Исчисление полиномов @chapter Исчисление полиномов ... @bye
Терминология
GML (Generalized Markup Language) разработан в недрах вездесущей корпорации IBM. Его наследник SGML (Standard Generalized Markup Language) принят в 1986 году в качестве международного стандарта для определения независимых от устройств ввода/вывода, независимых от вычислительной среды методов представления текстов в электронной форме. Более точно, SGML -- это метаязык, то есть средство формального описания языка, в данном случае, языка разметки.Исторически слово разметка использовалось для описаний аннотаций или других обозначений внутри текста, предназначенных для указаний составителю или "верстальщику" того, как именно конкретное место должно быть напечатано или сверстано. Примеры включают подчеркивание волнистой чертой, обозначающее курсив, специальные значки для пропуска фраз или их печати конкретным шрифтом, и так далее. Когда форматирование и печать текстов стали автоматизированными, этот термин стал охватывать все виды специальных кодов разметки, вставляемых в электронные тексты для управления форматированием, печатью или другой обработкой.
Обобщая, разметку, или кодировку, определяют как любое средство сделать явным интерпретацию текста. На банальном уровне все напечатанные тексты кодированы в этом смысле: знаки препинания, использование заглавных букв, расположение букв по странице, даже интервалы между словами можно считать в какой-то степени разметкой, функция которой -- помочь человеку, читающему текст, определить, где кончается одно слово и начинается другое, или как идентифицировать особенности структуры, такие как заголовки, или простые синтаксические единица вроде подчиненных предложений. Кодирование текста для компьютерной обработки, в принципе, как расшифровка манускрипта с пергамента, -- процесс делания явным неявного или подразумеваемого, процесс указания пользователю того, как должно интерпретироваться содержимое текста.
Под языком разметки понимают набор соглашений о разметке, применяемых для кодирования текстов. Язык разметки должен специфицировать, какая разметка допустима, какая разметка обязательна, как отличить разметку от текста и что разметка значит. SGML предоставляет решения для первых трех задач, отдельная документация обычно необходима для последней.
TeX
НеобязательноTeX (рифмуется с blech!) это популярный язык разметки, который используют многие люди, особенно в математическом мире. Я до сих пор помню многие Calculus экзамены, которые были написаны на TeX. Это также один из первых языков разметки, который до сих пор используется (другой это формат *roff используемый в man страницах). TeX следует концепциям схожим с SGML. Так ка TeX визуализирует свои файлы в DVI (Device Independent - "независящий от устройства") который может быть в свою очередь визуализирован в другой формат. К сожалению DVI не так то легко конвертировать во что-либо, кроме языков печати (PostScript,PCL),что делает сложным генерацию HTML. TeX устанавливается или доступен в большинстве дистрибутивов Линукс. TeX также прилагается практически ко всем дистрибьюциям как LaTeX или TeTex. Любой из них подойдет вам.
Text Fonts
Этому вопросу я всегда придавал первостепенное значение. Во-первых, из соображений эстетических (грешным делом, люблю красивые шрифты), во-вторых, по причине плохого зрения. Так вот, с точки зрения выбора экранных шрифтов NEdit заслуживает аплодисментов.При вызове пункта Text Fonts возникает панель с предложением определить основную гарнитуру (по умолчанию - нормального, то есть не курсивного и не полужирного, начертания) и отдельно - гарнитуры для каждого из начертаний (опять же, курсивного, полужирного, и полужирного курсивного). Впрочем, можно нажать экранную клавишу Fill Highlight Fonts from Primary - и тогда все прочие, кроме нормального, начертания унаследуют его гарнитуру.
В строке Primary Font (как, впрочем, и в любой другой) определить гарнитуру (и прочие параметры) экранного шрифта можно вводом вручную, с указанием всех требуемых атрибутов. Однако проще нажать экранную клавишу Browse и выбрать из списка всех доступных системе шрифтов. Каковой осуществляется в панели о трех колонках; в них необходимо явным образом отметить все три доступные для выбора атрибута - Font (то есть гарнитуру), Style (начертание, но нашему) и Size (сиречь кегль), иначе последует сообщение о некорректном определении шрифта.
Что характерно (вернее, не характерно для большинства текстовых редакторов, оперирующих обычно только моноширинными гарнитурами): хотя по умолчанию в списке присутствуют моноширинные шрифты, можно включить также показ шрифтов пропорциональных, и использовать их в свое удовольствие.
Подчеркну, но таким образом можно определить шрифт только для экранного представления набираемого текста. На шрифты интерфейсных элементов, а также системы помощи это не окажет никакого воздействия. Разумеется, и они могут быть подобраны по вкусу, но об этом - несколько ниже.
Thomas Adam
Меня зовут Thomas Adam. Мне 18, и в настоящее время я готовлюсь к A-Levels (= вступительные экзамены в университет). Живу на маленькой ферме в округе Дорсет в Англии. Я большой энтузиаст Linux, и помогаю в школе со всеми делами, связанными с его повседневным использованием. Linux использую уже около шести лет. Когда я не работаю с Linux, то играю на пианино, люблю пешие прогулки и кататься на мотоцикле.Типы документов
SGML вводит понятие типа документа, и, соответственно, определения типа документа(document type definition, DTD). Документы считаются типизированными, так же, как и другие обрабатываемые компьютерами объекты. Тип документа формально определяется его составными частями и их структурой. Определение, например, отчета может быть таким, что он состоит из заголовка и, возможно, автора, за которыми следует аннотация и последовательность одного или более абзацев. Любой документ в отсутствие заголовка, в соответствии с этим формальным определением, не будет формально являться отчетом, так же как не будет им являться и последовательность абзацев, за которой следует аннотация, невзирая на то, насколько похож на отчет такой документ с точки зрения читателя-человека.
Поскольку документы относятся к известным типам, можно использовать специальную программу, называемую анализатором (parser), для того, чтобы обработать документ, утверждающий, что он относится к конкретному типу, и проверить, действительно ли все элементы, требуемые для данного типа документов, присутствуют и находятся в правильной последовательности. Что еще более важно, разные документы одного типа могут обрабатываться унифицированным образом. Можно писать более интеллектуальные программы, использующие знания, заключенные в информационной структуре документа.
Титульная страница
Сделать приличную титульную страницу легко. Команда @titlepage, а также дополнительные команды [sub-commands] @title, @subtitle (необязательно) и @author, берут на себя заботы о компановке титульной страницы. Если вы хотите, чтобы материал, следующий за титулом, располагался на нечетной странице -- нужно добавить разрыв страницы непосредственно после @end titlepage.Пример:
@titlepage
@title Образец документа Texinfo
@subtitle Пробуем, как Texinfo форматирует текст
@author Joanne H. Acker
@page @c -- начинаем последующий текст с нечетной страницы
@end titlepage
Тэги корневого раздела [Root Section]
Эти теги определяют самый "внешний" элемент любого документа.book
article
Тэги, образующие списки [List-Making Tags]
Создают списки трех обычных типов.Пункты списка [items] и определения [definitions] обычно образуются из одного или более абзацев, но могут содержать и листинги программ. Термины [terms] обычно состоят из одного или более слов, но не абзацев.
Первый элемент списка
Второй элемент списка
...
Первый пункт
Второй пункт
...
первое определение
второе определение
...
Тэги прямого форматирования [Inline Markup Tags]
emphasis (выделение)Делает небольшую часть документа, обычно -- единичное слово, выделяющейся на фоне окружающего текста.
filename (имя файла)
Слово оформляется, как имя файла.
literal
Помечает слово, как литеральное выражение (т.е. выражение, не обрабатываемое транлятором, а передаваемое "на выход" в неизмененном виде). Используйте этот тэг в лишь в самом крайнем случае, когда не годится ни один из более конкретных тэгов. Для того, чтобы успокоить нечистую совесть, literal часто дополняется атрибутом role, который более точно описывает, что он собой прествавляет.
replaceable (заменяемое)
Помечает мета-переменную.
title (заголовок)
Содержит имя раздела или другого формального элемента, например таблицы.
Transfer interrupted!
преобразованиясимвол<-->код, то речь идет о CCS : coded character set. Именно этому набору : coded character set
и присваивается имя : KOI8-R,
ISO_8859-1, ASCII. Иногда термин CCS
сокращают до сharset.
Так например в стандарте MIME
употребляется термин сharset, хотя подразумевается конечно же CCS:
Content-Type: text/plain; charset=koi8-r
Content-Type: text/plain; charset=Windows-1251
Content-Type: text/plain; charset=ibm-866
Как определяется character repertoire
для определенного charset ?
Чаще всего набор символов определяется из языка (lang) и соответствующей ему системы письменности (script). Иногда рассматривается набор символов, воспризводимый конкретной аппаратурой ( например DEC VT-100 Character Set).
Иногда конкретный набор символов является подмножеством другого, более обширного набора символов или же комбинацией
нескольких наборов (или их частей). Например, широко распространенный набор символов для представления русского языка : KOI8-R, содержит в себе символы из наборов LATIN, CYRILLIC, BOX DRAWING, BLOCK ELEMENT и т.д.. А конкурирующий с ним charset
- содержит больше символов из набора CYRILLIC (русские, украинские, белорусские), но меньше - из BOX и BLOCK. Кроме того в KOI8-R
нет например символа EURO.

Старшая половина charset (CCS) и code points символов.
Младшая половина совпадает с US-ASCII.
(см. также описние в формате POSIX.)
Существует минимальный
(переносимый) (POSIX) - набор символов, который должны поддерживать любые информационные системы (определен в стандарте ISO 646) (он же ). С другой стороны, существует также "универсальный" Universal Character Set (UCS, ) включающий в себя все
возможные символы человеческих языков, технические, картографические и т.д. символы (~40.000 символов) (ISO 10646). Также, для примера, можно упомянуть один из довольно широко распространенных наборов символов : (Czyborra ).
Каждый charset имеет определенное .
Теперь насчет кодирования. Каким образом выбирается CES ?
Выполнить "кодирование" (encoding) довольно легко как для латинских так и для всех (?) индоевропейских языков (фонетическое письмо). Действительно, закодировать 26 латинских (ASCII) или 33 буквы не составляет труда (даже в варианте заглавных и прописных, плюс цифры, плюс знаки препинания). Количество символов (character repertoire) мало, соответственно не велико и code space и получается меньше 256 сode points, что позволяет уместить их в один байт (2^8=256
различных кодовых позиций).
Для языков, чья письменность построена по идеографическому (иероглифическому) принципу, ситуация несколько сложнее. Например в современном 1850
"официальных" иероглифов, тогда как в китайском их число доходит до 5000. Одного байта мало. Необходимы обширные CCS, например EUC-JP или UNICODE. Для поддержки таких языков в POSIX введены механизмы Multibyte и Wide Class chars.
В настоящее время в подавляющем большинстве charset-ов применяется 8-ми битное (байтовое) кодирование. Все настолько к этому привыкли, что charset-ы c большим количеством символов (>256) иногда называют large charset.
Проблемы могут возникнуть лишь при необходимости создания многоязычных
текстов, например русско-японско-английских, или содержащих русский и иврит, e.t.c. В этом случае - практически единственное решение : .
Также проблемы возникают в том случае, если заранее неизвестна
кодировка текста (потеряна CES), так как в UNIX, да и в других OS не имеет никаких дополнительных атрибутов. Это также актуально для HTTP, в том случае, если кодировка (CES) файла .HTML неизвестна. Это довольно неудобно, поскольку часто единственный способ - это подбор подходящей кодировки... Вывод : указывать кодировку необходимо.
Три части SGML-документа
SGML документ состоит из заголовка и собственно текста. Заголовок делится еще на две дополнительные части - общие SGML-определения и описание типа документа. Различное программное обеспечение по-разному связывает заголовок с основным текстом. В некоторых случаях он может быть жестко "вшит" в программу, как это сделано, например, в HTML-браузерах. В общем же случае заголовок находится в дополнительном файле, на который указывает явная ссылка в тексте SGML-документа. В SGML предусмотрен механизм определения наиболее общих характеристик языка разметки: диалект SGML, используемый для описания языка разметки; набор разделительных символов; ограничение длины идентификаторов и многое другое. Обычно наиболее общие SGML-определения выполнены в форме таблиц, компилируемых SGML-процессором, и не видны пользователю. Тип документа, определенный описанием DTD, позволяет проверять правильность составления основного текста. Как и общие SGML-определения, указание DTD может быть выполнено в виде компилируемых SGML-процессором таблиц или связанного с SGML-документом файла. Во втором случае от пользователя требуется только указать, в каком собственно файле находится описание типа документа. Причем определения, описанные во внешнем файле, можно дополнить новыми командами. В самом простом случае DTD находится в начале основного текста документа. Основной текст состоит из собственно текста, разметки и общих ссылок на ранее определенные сущности. В основном тексте не может быть никаких новых определений. Его можно комбинировать из уже существующих документов, если определить в заголовке текста ссылку на них.Три носителя
Электронный документ имеет три ипостаси - документ, подготовленный к печати, набранный в текстовом редакторе и распространяемый по сети. Хотя многие текстовые редакторы и имеют широкие возможности по форматированию и разметке документа, но до специализированных программ верстки им еще далеко. Языку же описания документов, который используется для публикаций в Web, присущи более ограниченные функции по форматированию документов.Сейчас для каждого из перечисленных носителей существует самый распространенный формат. Для печатных документов это PostScript - интерпретируемый алгоритмический язык прорисовки страницы. Этот язык разработан компанией Adobe, он имеет реализации практически на всех платформах и современных принтерах. Он наиболее точно описывает печатную страницу, однако PostScript-файлы имеют очень большой объем. Особенно это относится к русскоязычным текстам, поскольку они, как правило, содержат описание русских шрифтов.
Самый распространенный текстовых редактор - это, безусловно, Word. Его формат документов настолько распространен в России, что его часто используют для обмена документами между организациями. Однако Word имеет меньше возможностей для отображения документов, чем PostScript, и его трудно прочитать другим текстовым редактором. Эти факторы ограничивают применение Word в гетерогенной сети.
Для публикаций в Web используется гипертекстовый язык разметки HTML, который описывает не только внешний вид документов, но и связи между ними и программным обеспечением. Вместе с HTML появился и гипертекстовый транспортный протокол - HTTP, позволяющий передавать HTML-документы по Сети, запускать на сервере программы и поддерживать диалог с пользователем. Благодаря гипертекстовой технологии стало возможным создавать действительно распределенные системы с универсальным пользовательским интерфейсом. Кроме того, по размеру HTML-документ получался не очень большим, что важно для Сети. Однако с развитием Web обнаружились серьезные ограничения HTML в области представления документов и диалогов с пользователем.
Поскольку перечисленные языки ориентированы на разные носители, их практически невозможно "собрать" в единый и универсальный язык. При этом часто возникает задача подготовки одинаковых документов для разных носителей, а преобразовать текст из одного формата в другой не всегда возможно. Хотя документ, подготовленный в текстовом редакторе типа Word, можно преобразовать в любой из перечисленных форматов, однако такие форматы, как правило, трудно переносимы на другой текстовый редактор или платформу. Поэтому использовать его в качестве универсального средства подготовки документов в большой организации невозможно. Таким образом, предъявляются следующие требования к корпоративному средству подготовки документов:
Всем этим требованиям удовлетворяет обобщенный язык разметки SGML (Standard Generalized Markup Language). Документы, подготовленные в этом формате, можно преобразовать во все перечисленные форматы, для него есть программное обеспечение на самых распространенных платформах, и даже бесплатное. SGML позволяет определить новые форматы документов, работать со сложными документами и даже управлять хранилищами информации. Этот язык представляет собой международный стандарт ISO 8879, что гарантирует переносимость документов с одной платформы на другую. Таким образом, SGML - первейший кандидат для корпоративного использования.
Три особенности SGML
Язык SGML относится к структурным языкам разметки и имеет очень богатые возможности по определению структурных элементов текста. Для него характерны следующие три особенности:Структурная разметка, используемая в SGML, представляет собой просто название структурного элемента. Символы разметки, типа
даже если в документе использованы символы, которых нет на другой платформе, их всегда можно преобразовать в тот вид, который окажется правильно воспринят на другой платформе. Строки символов, определенные с помощью механизма подстановок, называются сущностями (entity).
Три типа SGML-программ
SGML-технология предполагает наличие трех основных компонентов: редакторов, браузеров и форматеров-конвертеров. Основная цель редакторов - помочь пользователю составить корректный документ в соответствии с указанным типом документа. SGML-редакторы обычно разбирают спецификацию DTD и дают пользователю возможность вставлять в текст только соответствующие теги, ограждая его таким образом от ошибок. Как правило, SGML-редактор может выполнять и роль SGML-браузера, основная цель которого - предоставить пользователю возможность перемещаться по иерархии SGML-документов и просматривать каждый конкретный документ. Кроме того, есть немало конвертеров из одного типа документов в другой. Они строятся на основе специальных синтаксических анализаторов и SGML-ядра, которые предоставляют базовые функции по разбору SGML-документа. Именно возможность простой разработки конвертеров и делает язык SGML наиболее популярным средством для подготовки документов. Если, к примеру, использовать DTD TEI Lite, можно легко преобразовать этот тип документа в формат LaTeX (а затем и в PostScript), RTF (а затем и в Word) и HTML. Таким образом, используя одинаковые средства подготовки документов и управления ими, можно преобразовать их в три наиболее популярных формата. А ведь именно это и требуется для корпоративного формата документов. В пользу SGML говорит еще одно их преимущество - хорошо определенный тип документа навязывает автору логическую структуру текста, что позволяет строго регламентировать обязательные части документа. В тех областях деятельности, где подготовка текста уже превратилась во вполне рутинную работу, это качество SGML наиболее ценно, так как автор оказывается застрахован от возможных ошибок.Tщпзь, зшНГь ь зчэпщтК
мБп сшпрп ЮпААзпвКрпуБ ч щпячЮпЕ вщпзчр, ьАъчшЛвЦуэКЕ р Emacs тшО ррчтп зчэпщт ь рщЦБЮь Дпышчр, п Бпзжу чяЙОАщОуБ зчщФуъФьь зшНГуы ь зчэпщт, зчБчЮКу щучяЕчтьэК тшО ъчщьэпщьО Бчсч, зпз Emacs рчАъЮьщьэпуБ ррчт А зшпрьпБЦЮК ь эКХь.Tutorial-e
rusconv v.3.11 tutorial.
Due historical reasons our country does not have standard encoding. So sometimes it is impossible to read content of files. In this cases you should use special programs which convert encodings. We are hope you choose rusconv.
In past most popular encoding was alternative (or codepage 866) which was used in MS-DOS. Now leader is windows encoding (codepage 1251). But encoding KOI-8 is still important. It was very usefull in first stages of growing of Russian Internet. Very rarely you can find text written in Macintosh. There were a lot of other encodings but they are died. It is impossibe to use one encoding to read text written in another one.To avoid this some people write texts in latinica (transliteracija, volapjuk) - russian text spelled latin letters. More, different operating systems use different methods to code end of line. DOS and Windows code it by two chars, UNIX - by one. So text written in UNIX will be as one long line in DOS/windows.
All this troubles can be solved by rusconv.
Content:
Printing help.
Converting file from one encoding to another.
Changing type of lines.
Abbreviations of flags for most often tasks.
File overwriting.
Converting to several encodings and specifing own extensions for files.
Converting of several files simultaniously.
Specifing output directory.
Using long file names and network files.
Other flags.
How to recognize file encoding.
Using rusconv in command scripts.
Printing help.
Rusconv is the program with a lot of flags. If you forget some of them you can get help from rusconv. To do this simple run rusconv without any arguments or give flag '-h'.
Examples:
DOS: C:\UTIL>RUSCONV C:\UTIL>rusconv /h UNIX: $rusconv -h $rusconv
Using of rusconv in windows is more difficult than in other operating systems because rusconv is command-line oriented program. It is recommended to use any file manager like Norton Commander (we recommend Windows Commander). Then usage of rusconv in windows will be simpler. Anyway, you can run program from menu "Start". In this menu choose item "Run...", write full path to rusconv (better use button "Browse..."), add flags and files and press button "OK".
As any other UNIX utility, UNIX version is not verbose. It prints only short list of flags. To get more help try
$man rusconv
The best way is to use HTML documentation.
Converting file from one encoding to another.
Suppose, you work in windows, found old DOS program and wish to remember how to run it. But "Notepad" instead of documentation prints unreadable text. To read it you first should convert it from DOS encoding to windows one:
C:\GAMES\WARCRAFT>rusconv -alt +win read.me
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\read.me -> .\read.win: ok. 1 file(s) converted.
After converting in current directory (usually it is directory from which you run rusconv, here - c:\games\warcraft) will be created file with the same name but with other extension. Extension shows what encoding is in a new file.
Here a list of extensions for encodings:
.alt - alternative encoding, uses in DOS .koi - KOI-8 encoding, uses in UNIX .lat - latinica, russian text spelled latin letters .mac - Macintosh encoding .win - Windows encoding
To specify from which encoding to convert use one of flags
-alt, -koi, -mac or -win.
Rusconv can't convert from latinica. To specify target encoding use some of flags
+alt, +koi, +lat, +mac or +win.
As any other UNIX utility, UNIX version of rusconv is not verbose. By default it prints only warnings and error messages. To print all messages use flag '-v'.
In next example will be created file 'test.file' which contains text "оПНБЕПЙЮ ТКЮЦЮ '-v'." (testing '-v' flag.). This file will be in KOI-8 encoding. For begin we convert this file to windows encoding without flag '-v'. File 'test.win' will be created but you don't get any message from rusconv. Then we converts file to latinica using flag '-v'. To finish example, we check content of file 'test.lat'.
$echo оПНБЕПЙЮ ТКЮЦЮ '-v'. >test.file
$rusconv -koi +win test.file
$rusconv -v -koi +lat test.file
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./test.file -> ./test.lat: ok. 1 file(s) converted. $cat test.lat
Proverka flaga '-v'.
Changing type of lines.
Even if text written in latinica there is no guarantee that it will be possible to read it on any operating system. In DOS and Windows end of line is coded by two chars, in UNIX - by one.
Suppose, you work in DOS or windows and downloaded from Internet text file created in UNIX. Notepad shows this text as one long line with funny chars where should be line breaks. To convert text to normal view use command
C:\NEW>rusconv -cr2crlf readme.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\readme.txt -> .\readme.crlf: ok. 1 file(s) converted.
Result of converting will be in file with the same name and with extension .crlf (UNIX and windows) or .crl (DOS). In this example - in 'readme.crlf'.
If you are in UNIX then incorrect format leads to another problem. At the end of lines text editors print additional char, some programs could not be compiled. To solve this problem use flag '-crlf2cr':
$rusconv -crlf2cr -v files.bbs
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./files.bbs -> ./files.cr: ok. 1 file(s) converted.
Abbreviations of flags for most often tasks.
Every operating system use own methos of creating russian files.
DOS:
Windows:
UNIX:
For correct converting you should consider encoding and type of line ends. Here is minimal set of flags to do it:
From DOS to UNIX : -alt +koi -crlf2cr
From UNIX to DOS : -koi +alt -cr2crlf
From windows to UNIX : -win +koi -crlf2cr
From UNIX to windows : -koi +win -cr2crlf
From DOS to windows : -alt +win
From windows to DOS : -win +alt
Probably most often tasks is converting text from UNIX to DOS, from UNIX to windows and back. Converting between DOS and windows styles usually unnecessary - for windows texts you can use Notepad, for DOS texts use can you old DOS file managers like Norton Commander.
It is not good idea to type every time this sets of flags. So you can use abbreviations:
-dos2unix - the same as '-alt +koi -crlf2cr' -unix2dos - the same as '-koi +alt -cr2crlf' -win2unix - the same as '-win +koi -crlf2cr' -unix2win - the same as '-koi +win -cr2crlf'
This abbreviations are usefull but and they are long enough. So you can cut them:
-d2u - the same as '-dos2unix' -u2d - the same as '-unix2dos' -w2u - the same as '-win2unix' -u2w - the same as '-unix2win'
rusconv -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index.html -> .\index.koi: ok. 1 file(s) converted.
File overwriting.
When converting, rusconv creates new files. But sometimes you don't need them or you wish only replace encoding in specified file. In this case use flag '-o'. Then rusconv for begin creates temporary file where results of recoding will be placed and then moves this temporary file on place of source. If any error occurs then source file will be unchanged and temporary file will be contain text converted before error.
Example:
D:\HTML>rusconv -o -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index.html -> D:\HTML\rcA290.TMP -> .\index.html: ok. 1 file(s) converted.
Converting to several encodings and specifing own extensions for files.
Sometimes, especially when you create web site, file should be converted to several encodings. For example, you write HTML pages in DOS but your homepage is in windows and KOI encodings. You can run rusconv twice but better do so:
C:\HTML>rusconv -alt +koi +win index-pre.html ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index-pre.html -> .\index-pre.koi, .\index-pre.win: ok. 1 file(s) converted.
Results are placed in files with the same names and with default extensions:
.alt - for alternative encoding .koi - for KOI-8 encoding .lat - for latinica .mac - for Macintosh encoding .win - for Windows encoding
Often default extensions are not convenient. Then you can define you own extension. To do this use commands:
-aext extension - for alternative encoding -kext extension - for KOI-8 encoding -lext extension - for latinica -mext extension - for Macintosh encoding -wext extension - for Windows encoding
For example, you typed russian alphabet in windows encoding and wish to know how it looks in all other encodings. More, you wish that results should be in text files. No problems:
E:\EX>dir
folder E:\EX .
E:\EX>rusconv -win +alt -aext alt.txt +koi -kext koi.txt +lat -lext lat.txt +mac -mext mac.txt +win -wext win.txt alphabet.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\alphabet.txt -> .\alphabet.alt.txt, .\alphabet.koi.txt, .\alphabet.mac.txt, .\alphabet.lat.txt, .\alphabet.win.txt: ok. 1 file(s) converted.
E:\EX>dir
folder E:\EX .
If you wish change extension you can use one of commands 'aext', 'kext', 'lext', 'mext' or 'wext'. But if you converts to only one encoding then it is more better to use command
-ext extension
Depending on target encoding this command is interpreted as one of commands '-aext extension', '-kext extension', '-lext extension', '-mext extension' or '-wext extension'.
Using command '-ext' you can also redefine default extensions '.cr' and '.crlf' when you change only type of end of lines:
E:\EX>rusconv -cr2crlf unixtext
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\unixtext -> .\unixtext.crlf: ok. 1 file(s) converted.
E:\EX>rusconv -cr2crlf -ext txt unixtext
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\unixtext -> .\unixtext.txt: ok. 1 file(s) converted.
Converting of several files simultaniously.
When you wish convert a group of files from one encoding to another it is convenient to convert all group simultaniously. To do this only write all file names after flags. You can use metachars - rusconv will find all appropriate files. In UNIX version use metachars with caution, see "Specifing output directory" for more information.
C:\HTML>rusconv -alt +koi +win -kext koi.html -wext win.html *.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\rusconv.txt -> .\rusconv.koi.html, .\rusconv.win.html: ok. .\readme.txt -> .\readme.koi.html, .\readme.win.html: ok. .\index.txt -> .\index.koi.html, .\index.win.html: ok. 3 file(s) converted.
Specifing output directory.
By default files with results are created in current directory. Usually it is directory from which you run rusconv. But if last argument is directory name then files will be created in this directory.
In UNIX use metachars with caution. Here interpretating of metachars is the work of operating system and program get ready list of arguments. There is no any guarantee that last argument is not a directory. So do not forget to specify output directory:
Content of current directory: $ls -l
-rwxr-xr-x 1 w_re w_re 21394 Oct 25 02:27 file1.html -rwxr-xr-x 1 w_re w_re 21394 Oct 25 02:27 file2.html drwxr-xr-x 2 w_re w_re 1024 Oct 25 02:27 res
May be error: $rusconv -v -w2u *
// After interpetating: // rusconv -v -w2u file1.html file2.html res ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./file1.html -> res/file1.koi: ok. ./file2.html -> res/file2.koi: ok. 2 file(s) converted.
To create files in current directory: $rusconv -v -w2u * .
// After interpetating: // rusconv -v -w2u file1.html file2.html res . ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ warning: 'res' is a directory, skipping. ./file1.html -> ./file1.koi: ok. ./file2.html -> ./file2.koi: ok. 2 file(s) converted.
Using long file names and network files.
Version 3.0 of rusconv was released for DOS and UNIX. To use long file names version 3.11 has release for windows. Because of use of new operating system functions this version can't be run on computer without Windows 95/98. But now you can use long file names and network files.
To convert file with space in its name use quotes:
C:\HTML>rusconv -win +alt "long file name.txt"
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\long file name.txt -> .\long file name.alt: ok. 1 file(s) converted.
Most of file managers for windows like Norton Commander if you press keys Ctrl+Enter add file name to command line. If file name contains spaces then they automatically surround it by qoutes. If it is not so then change your file manager. We recommend Windows Commander.
Working in local windows network you can (if you have rights) convert files on other computers without drive mapping. To do it use universal file names (\\server\\resource\file):
rusconv -w2u -ext html \\comp\c\html\*.html "\\comp\c\html\koi version"
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ \\comp\c\html\tutorial.html -> \\comp\c\html\koi version\tutorial.html: ok. \\comp\c\html\index.html -> \\comp\c\html\koi version\index.html: ok. \\comp\c\html\errors.html -> \\comp\c\html\koi version\errors.html: ok. 3 file(s) converted.
Other flags.
Now it is time to say about flags '--', '-s', '-v', '-close' and '-noclose'. They are usually used in command scripts.
-- end of flags
Rusconv scans command line from left to right. First argument which is not a flag starts a list of file. Rusconv consider that flag is argument which first char is '-' or '+' (or '/' in DOS and windows versions). Sometimes you need to break flag parsing. To do this use chars '--'. All after them is a file list.
Suppose, file with name '-file.txt' should be converted from windows encoding to KOI-8 encoding:
Error: E:\EX>rusconv -win +koi -file.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ error: unrecognized flag '-file.txt'. try 'rusconv -h' or read the manual for help.
Success: rusconv -win +koi -- -file.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\-file.txt -> .\-file.koi: ok. 1 file(s) converted.
-s silent mode, no any message will be printed -v verbose mode, all messages will be printed
Flag '-s' suppresses printing of messages. Contrary, flag '-v' causes talkative work. If you specify both flags '-s' and '-v' then error message will be printed. DOS and windows versions are talkative by default. UNIX version by default prints only warnings and error messages.
-close close rusconv's window after program finished -noclose do not close window
Flags '-close' and '-noclose' are used only in windows version. DOS and UNIX versions ignore them. Windows operating system runs rusconv in separate window which should be closed after program finished. To avoid this and to let user to see report rusconv after all files converted waits for key pressed ('-noclose', by default). Behavior can be changed by flag '-close'. With this flag rusconv finishes after all files converted. If you specify both flags '-close' and '-noclose' then error message will be printed.
How to recognize file encoding.
To recognize file encoding use program whatrus. This program is distributed with rusconv.
C:\UTIL>whatrus \\comp\c\html\index.html
WIN detected.
You can't specify several file names. If you don't need message and wish only to get return code then use flag '-s'.
Windows operating system runs whatrus in a separate windows which should be closed after program finished. To keep window and to let user to see result whatrus after recognition waits for key pressed. To avoid this use flag '-s'.
Using rusconv in command scripts.
If you are going to use rusconv in command scripts then consider this advises.
This chars breaks flag parsing and prevents error if you script get file name which can be interpreted as rusconv's flag.
Is is very impotant when you are working in UNIX because user can use metachars. In UNIX interpretating of metachars is the work of operating system and program get ready list of arguments. There is no any guarantee that last argument is not a directory.
To keep window on the desktop and to let user to see report rusconv after all files converted waits for key pressed. In command scripts you probably don't need such behaviour. So use flag '-close' and rusconv will finish immediately after converting.
In windows version of whatrus flag '-s' is the same as flag '-close' in rusconv.
Usage of return codes of rusconv and whatrus makes you script more intelligent.
rusconv:
whatrus:
error occured
encoding not recognized
alternative encoding
KOI-8 encoding
Windows encoding
Macintosh encoding
Here is an example of command script. It get any file and convert them to file index.html in windows encoding.
windows version, makeindex.bat:
@ECHO OFF
REM Copy source file to file with name 'index'. ECHO COPY %1 index copy %1 index IF EXIST index GOTO TAKEENC ECHO copy failed EXIT
REM Guess encoding :TAKEENC ECHO WHATRUS -s %1 whatrus -s %1
REM Branching started from big numbers because REM 'IF ERRORLEVEL = N' is indeed REM 'IF ERRORLEVEL >= N'. IF ERRORLEVEL = 255 GOTO WRERR IF ERRORLEVEL = 14 GOTO MACENC IF ERRORLEVEL = 13 GOTO WINENC IF ERRORLEVEL = 12 GOTO KOIENC IF ERRORLEVEL = 11 GOTO ALTENC ECHO encoding not recognized EXIT
:WRERR ECHO whatrus failed EXIT
REM convert file 'index' to 'index.html'. :ALTENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -alt +win -ext html index EXIT :KOIENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -koi +win -ext html index EXIT :MACENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -mac +win -ext html index EXIT :WINENC ECHO RUSCONV -win -alt +win -ext html index rusconv -close -alt +win -ext html index EXIT
UNIX version for bash, makeindex.sh:
# Copy source file to file with name 'index'. rm -f index cp $1 index if [ ! -f index ] then echo copy failed exit fi
# Guess encoding and convert file to 'index.html' whatrus $1 case $? in 255) echo error executing whatrus;; 0) can''t detect encoding;; 11) rusconv -alt +win -ext html index;; 12) rusconv -koi +win -ext html index;; 13) rusconv -win +win -ext html index;; 14) rusconv -mac +win -ext html index;; esac
Have a nice work!
tutorial-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Tutorial
Учебник по rusconv v.3.11.
По историческим причинам в нашей стране нет единого стандарта на используемую в русскоязычных текстах кодировку. Это приводит к тому, что иногда невозможно понять содержимое файла. В таких случаях надо пользоваться специальными программами, которые меняют кодировку. Надеемся, Вы выберете rusconv.
Долгое время наиболее популярной была альтернативная кодировка, которая использовалась в операционной системе MS-DOS, другое ее название - кодовая страница 866. С наступлением эпохи Windows первенство захватила windows-кодировка, или кодовая страница 1251 (CP-1251). Все еще сохраняет свои позиции кодировка КОИ-8 (koi8-r), которая была очень полезна на раннем этапе становления Русского Интернета. Изредка попадаются тексты, набранные на компьютерах Macintosh. Предлагались и другие кодировки, но они не получили распространения. Текст, написанный в одной кодировке, невозможно читать в другой. Для борьбы с этим иногда русские буквы заменяют латинскими - latinica (латиница, или транслитерация, или волапюк). Кроме разных кодировок, операционные системы используют разные способы кодирования конца строк. В DOS и Windows для этого применяется два символа, в UNIX - один символ. Из-за этого текст, созданный в UNIX, в DOS/Windows выглядит как одна большая строка. Со всеми трудностями, связанными с несовместимостью кодировок операционных систем, помогает справиться rusconv.
Содержание:
Вывод текста помощи.
Перевод файла из одной кодировки в другую.
Изменение типов концов строк.
Сокращения для часто используемых наборов флагов.
Перезаписывание файлов.
Перевод сразу в несколько кодировок и задание своих расширений для файлов.
Перевод сразу нескольких файлов.
Задание выходной директории.
Использование длинных имен файлов и сетевых файлов.
Остальные флаги.
Как определить кодировку файла.
Использование rusconv в командных файлах.
Вывод текста помощи.
Rusconv - программа с большим количеством флагов. Если Вы забудете какой-нибудь из них, то всегда можете получить от rusconv текст помощи. Для этого надо либо просто запустить rusconv без каких-либо аргументов, либо дать флаг '-h'.
Примеры:
DOS: C:\UTIL>RUSCONV C:\UTIL>rusconv /h UNIX: $rusconv -h $rusconv
В операционной системе windows использовать rusconv сложнее. Желательно работать в какой-нибудь оболочке типа Norton Commander (рекомендую Windows Commander). Тогда использование rusconv в windows ничем не отличается от его использования в DOS. В любом случае, rusconv можно запустить из меню "Пуск". В этом меню надо выбрать "Выполнить...", написать полный путь к программе (проще воспользоваться кнопкой "Обзор..."), добавить необходимые ключи и имена файлов и нажать кнопку "OK".
UNIX-версия rusconv, как и большинство утилит этой операционной системы, неразговорчива. В ней выдается только список флагов. Для получения дополнительных сведений можно дать команду
$man rusconv
Еще лучше воспользоваться HTML-документацией.
Перевод файла из одной кодировки в другую.
Предположим, что Вы работаете в windows, достали старую программу для DOS и пытаетесь вспомнить, как она работает. Но "Блокнот"(Notepad) вместо описания выводит непечатные символы. Чтобы прочитать текст, его из альтернативной кодировки, используемой в DOS, надо перевести в кодировку windows. Делается это так:
C:\GAMES\WARCRAFT>rusconv -alt +win read.me
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\read.me -> .\read.win: ok. 1 file(s) converted.
В результате в текущей директории (обычно это та, откуда запущен rusconv, в данном примере - c:\games\warcraft) создается файл с тем же именем, что и у исходного файла, но с другим расширением, которое показывает, какая кодировка в файле.
Вот список, какое расширение какой кодировке соответствует:
.alt - альтернативная кодировка, используется в DOS .koi - кодировка КОИ-8, используется в UNIX .lat - латиница, русский текст латинскими буквами .mac - кодировка Macintosh .win - кодировка Windows
Чтобы указать, из какой кодировки переводить, надо дать один из флагов
-alt, -koi, -mac или -win.
Rusconv не переводит из латиницы. Чтобы указать, в какую кодировку переводить, надо дать один из флагов
+alt, +koi, +lat, +mac или +win.
UNIX-версия, как и большинство утилит этой системы, неразговорчивая, и по умолчанию выводит только сообщения об ошибках. Чтобы ее "разговорить", надо использовать флаг '-v'.
В следующем примере создается файл 'test.file', содержащий строку "Проверка флага '-v'.". Файл будет в кодировке КОИ-8, используемой в UNIX. Вначале мы переводим его в кодировку windows, при этом флаг '-v' не используем. Будет создан файл 'test.win', но rusconv на экран ничего не выдаст. Затем мы переводим файл в латиницу, используя этот флаг, и проверяем результаты конвертирования.
$echo Проверка флага '-v'. >test.file
$rusconv -koi +win test.file
$rusconv -v -koi +lat test.file
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./test.file -> ./test.lat: ok. 1 file(s) converted. $cat test.lat
Proverka flaga '-v'.
Изменение типов концов строк.
Даже то, что текст написан только латинскими буквами, не может гарантировать, что его можно нормально читать во всех операционных системах. В DOS и windows концы строк кодируются двумя символами, в UNIX - одним.
Допустим, Вы работаете в DOS или windows и скачали из Интернета текст, созданный в UNIX. Тогда для Вас этот текст будет выглядеть как одна большая строка с забавными символами в тех местах, где она должна быть разбита на части. Чтобы привести текст к читаемому виду, надо дать команду
C:\NEW>rusconv -cr2crlf readme.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\readme.txt -> .\readme.crlf: ok. 1 file(s) converted.
Результат преобразования будет содержаться в файле с таким же именем и расширением .crlf (UNIX и windows) или .crl (DOS). В данном примере - в файле 'readme.crlf'.
В UNIX при использовании неправильного формата файлов тоже возникает подобная проблема. На концах строк текстовые редакторы выводят лишний символ, некоторые программы из-за этого символа не компилируются. Чтобы исправить положение, используйте флаг '-crlf2cr':
$rusconv -crlf2cr -v files.bbs
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./files.bbs -> ./files.cr: ok. 1 file(s) converted.
Сокращения для часто используемых наборов флагов.
Каждая операционная система создает русскоязычные тексты по-разному.
DOS:
Windows:
UNIX:
Для правильного преобразования файлов приходится учитывать как кодировку в нем, так и тип строк. Из-за этого надо писать несколько флагов:
Из DOS в UNIX : -alt +koi -crlf2cr
Из UNIX в DOS : -koi +alt -cr2crlf
Из windows в UNIX : -win +koi -crlf2cr
Из UNIX в windows : -koi +win -cr2crlf
Из DOS в windows : -alt +win
Из windows в DOS : -win +alt
Вероятно, наиболее часто приходится переносить тексты из UNIX в DOS и обратно, а в последнее время - из UNIX в windows и обратно. Преобразовывать файлы из DOS-формата в windows-формат и наоборот обычно не требуется - для windows-текстов можно использовать Notepad, а для просмотра DOS-текстов достаточно запустить программу типа Norton Commander.
Чтобы не набирать постоянно стандартные наборы флагов, rusconv предлагает использовать сокращения для них:
-dos2unix - то же самое, что '-alt +koi -crlf2cr' -unix2dos - то же самое, что '-koi +alt -cr2crlf' -win2unix - то же самое, что '-win +koi -crlf2cr' -unix2win - то же самое, что '-koi +win -cr2crlf'
Эти сокращения легки в использовании, но и они могут показаться слишком длинными. Поэтому есть еще более короткие сокращения:
-d2u - то же самое, что '-dos2unix' -u2d - то же самое, что '-unix2dos' -w2u - то же самое, что '-win2unix' -u2w - то же самое, что '-unix2win'
rusconv -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index.html -> .\index.koi: ok. 1 file(s) converted.
Перезаписывание файлов.
При конвертировании rusconv создает новый файл. Но иногда его не требуется, или нужно заменить кодировку в заданном файле. В этом случае можно использовать флаг '-o'. Тогда rusconv вначале создает временный файл, в котором сохраняется результат перевода, а затем перемещает этот временный файл на место исходного. Если в процессе работы случится ошибка, то исходный файл остается нетронутым, а временный файл остается на диске и содержит текст, который был переведен до возникновения ошибки.
Пример:
D:\HTML>rusconv -o -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index.html -> D:\HTML\rcA290.TMP -> .\index.html: ok. 1 file(s) converted.
Перевод сразу в несколько кодировок и задание своих расширений для файлов.
Иногда, особенно при создании HTML-страниц, файл надо перевести в несколько кодировок. Например, Вы создаете текст в операционной системе DOS, а текст на домашней страничке должен быть в кодировках windows и КОИ. Можно запустить rusconv два раза, но лучше все сделать сразу:
C:\HTML>rusconv -alt +koi +win index-pre.html ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\index-pre.html -> .\index-pre.koi, .\index-pre.win: ok. 1 file(s) converted.
Результат находится в файлах с тем же именем и с расширениями по умолчанию:
.alt - для альтернативной кодировки .koi - для кодировки КОИ-8 .lat - для латиницы .mac - для кодировки Macintosh .win - для кодировки Windows
Часто расширения по умолчанию являются неудобными. Тогда можно задать свои расширения. Для этого надо использовать команды:
-aext расширение - для альтернативной кодировки -kext расширение - для кодировки КОИ-8 -lext расширение - для латиницы -mext расширение - для кодировки Macintosh -wext расширение - для кодировки Windows
Допустим, Вы набрали русский алфавит в кодировке windows и хотите узнать, как он выглядит во всех остальных кодировках. При этом желательно, чтобы результат находился в текстовых файлах. Это возможно так:
E:\EX>dir
Содержимое папки E:\EX . <ПАПКА> 24.10.98 15:27 . .. <ПАПКА> 24.10.98 15:27 .. ALPHABET TXT 66 02.10.98 13:15 alphabet.txt
E:\EX>rusconv -win +alt -aext alt.txt +koi -kext koi.txt +lat -lext lat.txt +mac -mext mac.txt +win -wext win.txt alphabet.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\alphabet.txt -> .\alphabet.alt.txt, .\alphabet.koi.txt, .\alphabet.mac.txt, .\alphabet.lat.txt, .\alphabet.win.txt: ok. 1 file(s) converted.
E:\EX>dir
Содержимое папки E:\EX . <ПАПКА> 24.10.98 15:27 . .. <ПАПКА> 24.10.98 15:27 .. ALPHAB~1 TXT 66 24.10.98 16:24 alphabet.alt.txt ALPHAB~2 TXT 66 24.10.98 16:24 alphabet.koi.txt ALPHAB~3 TXT 66 24.10.98 16:24 alphabet.mac.txt ALPHAB~4 TXT 82 24.10.98 16:24 alphabet.lat.txt ALPHAB~5 TXT 66 24.10.98 16:24 alphabet.win.txt ALPHABET TXT 66 02.10.98 13:15 alphabet.txt
Если Вы хотите поменять расширение у файлов с результатами, то для этого надо давать одну из команд 'aext', 'kext', 'lext', 'mext' или 'wext'. Но при переводе только в одну кодировку лучше воспользоваться командой
-ext расширение
В зависимости от того, в какую кодировку Вы переводите, эта команда воспринимается как одна из команд '-aext расширение', '-kext расширение', '-lext расширение', '-mext расширение' или '-wext расширение'.
С помощью команды '-ext' можно также переопределить стандартные расширения '.cr' и '.crlf', используемые при изменении типов концов строк в файлах:
E:\EX>rusconv -cr2crlf unixtext
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\unixtext -> .\unixtext.crlf: ok. 1 file(s) converted.
E:\EX>rusconv -cr2crlf -ext txt unixtext
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\unixtext -> .\unixtext.txt: ok. 1 file(s) converted.
Перевод сразу нескольких файлов.
Когда надо перевести несколько файлов из одной кодировки в другую, неудобно переводить по одному файлу. Лучше перевести сразу всю группу. Для этого достаточно написать их имена после флагов. Можно использовать метасимволы - rusconv сам найдет файлы, подходящие под шаблон. В UNIX-версии используйте метасимволы с осторожностью, причины этого можно найти в абзаце "Задание выходной директории".
C:\HTML>rusconv -alt +koi +win -kext koi.html -wext win.html *.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\rusconv.txt -> .\rusconv.koi.html, .\rusconv.win.html: ok. .\readme.txt -> .\readme.koi.html, .\readme.win.html: ok. .\index.txt -> .\index.koi.html, .\index.win.html: ok. 3 file(s) converted.
Задание выходной директории.
По умолчанию файлы с результатами перевода создаются в текущей директории - обычно это та директория, из которой запускается rusconv. Но если последним аргументом является имя директории, то файлы будут создаваться именно в ней.
При использовании UNIX-версии rusconv будьте осторожны с метасимволами. В этой операционной системе метасимволы раскрывает оболочка, и программе дается уже готовый список файлов. При этом никто не гарантирует, что последним элементом в списке не будет директория. Поэтому, на всякий случай, явно указывайте выходную директорию:
Содержимое текущей директории: $ls -l
-rwxr-xr-x 1 w_re w_re 21394 Oct 25 02:27 file1.html -rwxr-xr-x 1 w_re w_re 21394 Oct 25 02:27 file2.html drwxr-xr-x 2 w_re w_re 1024 Oct 25 02:27 res
Скорее всего, ошибка: $rusconv -v -w2u *
// После раскрытия метасимволов оболочкой: // rusconv -v -w2u file1.html file2.html res ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ ./file1.html -> res/file1.koi: ok. ./file2.html -> res/file2.koi: ok. 2 file(s) converted.
Чтобы файлы создавались в текущей директории: $rusconv -v -w2u * .
// После раскрытия метасимволов оболочкой: // rusconv -v -w2u file1.html file2.html res . ** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ warning: 'res' is a directory, skipping. ./file1.html -> ./file1.koi: ok. ./file2.html -> ./file2.koi: ok. 2 file(s) converted.
Использование длинных имен файлов и сетевых файлов.
Версия 3. 0 была для двух операционных систем - для DOS и UNIX. Чтобы использовать длинные имена файлов, в версии 3.11 есть rusconv для windows. Из-за обращения к новым функциям для работы с файлами, его невозможно запустить на машинах, не работающих в среде windows 95/98. Зато доступны длинные имена и сетевые файлы.
Если надо перевести файл, в имени которого есть пробел, надо использовать кавычки:
C:\HTML>rusconv -win +alt "long file name.txt"
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\long file name.txt -> .\long file name.alt: ok. 1 file(s) converted.
Большинство оболочек для windows, похожих на Norton Commander, при нажатии клавиш Ctrl+Enter добавляют в командную строку имя файла. Имена файлов, содержащие пробелы, автоматически окружаются кавычками. Если это не так, то надо заменить оболочку. Мы рекомендуем Windows Commander.
При работе в локальной windows-сети можно (если есть права) переводить файлы на другом компьютере без предварительного подключения сетевого диска. Для этого нужно использовать универсальные имена файлов (\\сервер\ресурс\файл):
rusconv -w2u -ext html \\comp\c\html\*.html "\\comp\c\html\koi version"
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ \\comp\c\html\tutorial.html -> \\comp\c\html\koi version\tutorial.html: ok. \\comp\c\html\index.html -> \\comp\c\html\koi version\index.html: ok. \\comp\c\html\errors.html -> \\comp\c\html\koi version\errors.html: ok. 3 file(s) converted.
Остальные флаги.
Осталось рассмотреть флаги '--', '-s', '-v', '-close' и '-noclose'. Обычно они используются при работе в командных файлах.
-- конец флагов
Rusconv просматривает аргументы слева направо. Первый аргумент, не являющийся флагом, начинает список файлов для перевода. За флаг rusconv считает аргумент, начинающийся с символа '-' или '+' (или '/' в DOS и windows-версиях). Иногда требуется насильно прервать в некотором месте интерпретацию флагов. В этом случае используется сочетание символов '--'. Все, что стоит после него - имена файлов для перевода.
Допустим, файл с именем '-file.txt' надо перевести из windows-кодировки в КОИ-8:
Неправильно: E:\EX>rusconv -win +koi -file.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ error: unrecognized flag '-file.txt'. try 'rusconv -h' or read the manual for help.
Правильно: rusconv -win +koi -- -file.txt
** rusconv -- convertor of Russian codepages, v.3.11. ** (c)w_re -- Oleg A. Paraschenko http://beta.math.spbu.ru/~prof/w_re/ .\-file.txt -> .\-file.koi: ok. 1 file(s) converted.
-s работа без вывода сообщений на экран -v вывод всех сообщений на экран
Флаг '-s' подавляет любой вывод на экран. Флаг '-v', наоборот, делает rusconv разговорчивым. Если задать одновременно и '-s', и '-v', то будет выведено сообщение об ошибке. DOS и windows-версии по умолчанию разговорчивые. UNIX-версия по умолчанию выводит только сообщения об ошибках.
-close позволять windows закрывать окно с результатами работы rusconv -noclose оставлять окно на экране
Эти флаги имеют смысл только в windows-версии, в остальных версиях они игнорируются. При запуске программы операционная система windows создает для rusconv отдельное окно. Если задан флаг '-close', то это окно закрывается сразу после завершения перевода файлов. По умолчанию, или если задан флаг '-noclose', окно с результатами работы остается на экране. Чтобы его закрыть, можно нажать любую клавишу. Если одновременно написать и '-close', и '-noclose', окно останется на экране и будет содержать сообщение об ошибке.
Как определить кодировку файла.
Для определения кодировки в файле можно использовать программу whatrus, которая распространяется вместе с rusconv:
C:\UTIL>whatrus \\comp\c\html\index.html
WIN detected.
За один раз можно распознать кодировку только в одном файле. Если требуется только код возврата, а сообщение не надо, используйте флаг '-s'.
При запуске программы в среде windows 95/98, операционная система создает для whatrus отдельное окно для вывода результата. Чтобы закрыть его, нажмите любую клавишу. Если требуется, чтобы оно закрывалось автоматически, используйте флаг '-s'.
Использование rusconv в командных файлах.
Если Вы собираетесь использовать rusconv в командных файлах, воспользуйтесь этими советами.
Благодаря этому, не возникнет ошибки, если пользователь даст на вход Вашему сценарию имя файла, которое rusconv может воспринять как флаг.
Это особенно важно при работе в UNIX. В этой операционной системе метасимволы раскрывает оболочка, и программе дается уже готовый список файлов. При этом никто не гарантирует, что последним элементом в списке не будет директория.
Чтобы windows не закрывало автоматически окно с сообщениями, rusconv после завершения перевода всех файлов ждет нажатия любой клавиши. Для командных файлов, скорее всего, такое поведение не требуется. Поэтому используйте флаг '-close', чтобы rusconv завершился сразу после перевода файлов.
В windows-версии программы whatrus флаг '-s' служит для того же, что и флаг '-close' в программе rusconv.
Использование кодов возврата программ rusconv и whatrus делает Ваш сценарий более интеллектуальным. Коды возврата:
rusconv:
whatrus:
произошла ошибка
кодировка не распознана.
альтернативная кодировка
кодировка КОИ-8
кодировка windows
кодировка Macintosh
В качестве примера приводится командный сценарий. На его вход дается некоторый файл, который преобразуется в файл index.html в кодировке windows.
windows-версия, makeindex.bat:
@ECHO OFF
REM Копируем исходный файл в файл с именем 'index'. ECHO COPY %1 index copy %1 index IF EXIST index GOTO TAKEENC ECHO copy failed EXIT
REM Узнаем кодировку, в которой создан файл. :TAKEENC ECHO WHATRUS -s %1 whatrus -s %1
REM Определение кода возврата начинаем с больших чисел, так как REM 'IF ERRORLEVEL = N' на самом деле воспринимается как REM 'IF ERRORLEVEL >= N'. IF ERRORLEVEL = 255 GOTO WRERR IF ERRORLEVEL = 14 GOTO MACENC IF ERRORLEVEL = 13 GOTO WINENC IF ERRORLEVEL = 12 GOTO KOIENC IF ERRORLEVEL = 11 GOTO ALTENC ECHO encoding not recognized EXIT
REM Сообщение об ошибке при исполнении whatrus. :WRERR ECHO whatrus failed EXIT
REM Конвертируем файл index в index.html. :ALTENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -alt +win -ext html index EXIT :KOIENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -koi +win -ext html index EXIT :MACENC ECHO RUSCONV -close -alt +win -ext html index rusconv -close -mac +win -ext html index EXIT :WINENC ECHO RUSCONV -win -alt +win -ext html index rusconv -close -alt +win -ext html index EXIT
UNIX-версия для bash, makeindex.sh:
# Копируем исходный файл в файл с именем 'index'. rm -f index cp $1 index if [ ! -f index ] then echo copy failed exit fi
# Узнаем кодировку в файле и конвертируем его в файл index.html whatrus $1 case $? in 255) echo error executing whatrus;; 0) can''t detect encoding;; 11) rusconv -alt +win -ext html index;; 12) rusconv -koi +win -ext html index;; 13) rusconv -win +win -ext html index;; 14) rusconv -mac +win -ext html index;; esac
Приятной работы!
tutorial.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Удаление, перемещение и копирование элементов.
Ранее уже обсуждались возможности редактора Emacs по удалению, копированию и перемещению выделенных блоков текста. Аналогичные операцию можно выполнять с элементами SGML.Чтобы удалить элемент SGML, можно воспользоваться стандартным способом, т.е. выделить блок от открывающего тэга до закрывающего, а затем нажать C-w. Но есть способ лучше. Команда PSGML sgml-kill-element (комбинация C-M-k) удаляет текст внутри элемента начиная с текущей позиции курсора и до закрывающего тэга. Альтернативный вызов команды из меню Modify - пункт Kill element. При использовании команды sgml-kill-element всегда следует помнить о команде отката - undo (C-_).
Если после удаления текста вторично нажать C-M-k, то в окне минибуфера появится сообщение:
| No more elements in название_элемента element |
Команду sgml-kill-element можно использовать для перемещения текста. Элемент, помещенный данной командой в буфер обмена, может быть потом вставлен в нужное место командой yank (C-y).
Перед тем, как перейти к рассмотрению вопросов, связанных с копированием элементов, обратим внимание на работу двух команд: sgml-untag-element и sgml-kill-markup.
Команда sgml-untag-element (комбинация C-c -) удаляет открывающий и закрывающий тэги текущего элемента. Альтернативный вызов команды через пункт Untag Element меню Modify.
Команда sgml-kill-markup (комбинация C-c C-k или пункт Markup меню Modify) удаляет в буфер фрагмент текста, заключенного между символами "<" и ">". Эта команда полезна для удаления комментариев, которые PSGML вставляет около элементов, если переменной sgml-auto-insert-required-elements присвоено ненулевое значение.
PSGML не имеет встроенной команды для удаления текста от текущей позиции до конца элемента. Данный пробел можно восполнить, добавив следующий макрос в файл .emacs:
| (defun sgml-kill-to-eoelement () ; kill to end of element (interactive) (let ((start (point))) (sgml-end-of-element) (kill-region start (point)))) ; assign to ^Ck keystrokes (define-key global-map "^Ck" sgml-kill-to-eoelement) |
UNICODE
UniPress Emacs 2.20e
Немногим отличается от собрата UniPress Emacs 2.20e, выпущенный компанией UniPress Software. В отличие от GNU Emacs данный редактор поставляется с документацией (хотя и неудачно написанной), обладает более привлекательным интерфейсом, имеет поставляемые за дополнительную плату (от 695 до 995 долларов) языко-ориентированные реализации для С, С++, Fortran и Ada. В целом, различия между GNU Emacs и UniPress Emacs незначительны. Если Вы являетесь поклонником Emacs, то, несомненно, будете удовлетворены обеими реализациями.Управляющие структуры
Условное предложение:if ( < условие> ) < предложение>
\hskip 1cm [else < предложение> ]
Предложения цикла:
while ( < условие> ) < предложение>
for (< выражение> ; < условие> ; < выражение> )
\hskip 1cm < предложение>
Например:
for(i=1; i< =NF; i++) - Аналогично циклу for в языке ``С''
for (i in array) - Цикл по элементам массива. Но, элементы массива доступны в этом случае в случайном порядке.
break - Немедленный выход из цикла.
continue - Переход к выполнению следующего предложения.
next - Немедленный переход к анализу следующей строки.
exit - Выход из программы (на конец input).
# - Комментарий
Условная трансляция
В разделе мы столкнулись с командами условной трансляции @ifinfo/@end info. Условная трансляция означает, что определенные части документа направляются на вход только одного определенного транслятора (в нашем примере это makeinfo), или же, в случае @ifnotinfo/@end notinfo, что определенный транслятор не используется при обработке части документа.На одной строке вместе с открывающей (@ifformat) и закрывающей (@end format) последовательностью команд условной трансляции не должно быть больше ничего.
Имеются три парных директивы включения (исключения) части материала при конвертации документа в формат Info, TeX и HTML соответственно.
@iftex
...
@end tex
@ifinfo
...
@end info
@ifhtml
...
@end html
@ifnottex
...
@end nottex
@ifnotinfo
...
@end notinfo
@ifnothtml
...
@end nothtml
Установка и настройка Apache с поддержкой PHP и phpMyLingvo.
"Апачи вышли на тропу войны!"Итак, нам осталась пара пустяков -- установить и настроить Apache. Те, кто этого раньше никогда не делал -- не комплексуйте! Всё очень просто. Нам нужно установить несколько пакетов -- apache, mod_php, php-mysql. Все остальные пакеты (apache-common, php-common, ...) по необходимости. Почему я так невразумительно говорю? Наверное, потому что я "обленился" и переложил работу по отслеживанию зависимостей между пакетами на APT. Хотя APT -- это детище Debian, но он неплохо себя чувствует на дистрибутивах ALT Linux и его несложно настроить под RedHat (думаю, и под Mandrake тоже, как и под любой другой rpm-based дистрибутив).
Установили? Теперь проверьте запущен он или нет, и настроен ли так, чтобы автоматически запускаться после загрузки. Вам нужно повторить все те же операции, что и с mysqld (см. п. 2.1), только в нашем случае название сервиса httpd. Проверьте конфигурационный файл /etc/httpd/conf/httpd.conf -- в конце файла должна быть строка:
Include conf/addon-modules/mod_php4.conf
Эта строка подключает модуль php к apache.
Теперь отправляемся на домашнюю страницу phpMyLingvo и скачиваем оттуда последний вариант программы. Распаковываем его и копируем в /var/www/html/phpMyLingvo (/var/www/html -- это корень, если так можно выразиться, "файловой системы" документов, хранящихся на веб-сервере; см. опцию DocumentRoot в файле /etc/httpd/conf/httpd.conf).
Отредактируйте файл config.php пакета phpMyLingvo -- замените строку:
mysql_connect("localhost", "root", "") or die("MySQL connection error: ".mysql_error());
на
mysql_connect("localhost", "ptkdic_usr", "") or die("MySQL connection error: ".mysql_error());
(Обратите внимание, что здесь в качестве хоста я указал localhost. Сделано это по той причине, что к MySQL будет обращаться php-скрипт, размещённый локально, даже если вы планируете открыть доступ к словарям в сети. В этом случае, за предоставление такого доступа будет отвечать apache.)
А теперь запустите веб-браузер и наберите в нём http://localhost/phpMyLingvo/ или http://имя_хоста/phpMyLingvo/ (если пытаетесь подключиться к веб-серверу с другого компьютера.)
У меня получилось (см. скриншот). А у вас?
Если хотите попробовать в действии phpMyLingvo, не устанавливая его у себя, то вам .
Несколько слов о достоинствах phpMyLingvo (слово автору программы, Сергею Галину):
Недостатки, недоделки и известные ошибки:
Если вы планируете предоставлять услуги веб-сервера в сети и ваша сеть будет подключена к Интернет, то вам следует подумать о безопасности -- ограничить доступ к портам и т.п.
Установка и настройка GtkDic.
Пакет берём , где и ptkdic. Если планируете собирать из "сырцов", то вам придётся установить devel-пакеты соответствующих библиотек (glib-devel, gtk+-devel, libMySQL-devel). К сожалению, GtkDic написан на GTK+ 1.2.x. Можно попытаться собрать его под GTK+ 2.x, но стабильность работы GtkDic в этом случае под вопросом.Для того, чтобы GtkDic заработал, вы должны установить, как минимум, два пакета: gtkdic и gtkdic-simple. После этого вы должны отредактировать конфигурационный файл /etc/gtkdicrc (для глобальных настроек), либо создать файл ~/.gtkdic/gtkdicrc в домашнем каталоге пользователя. Минимальные изменения, которые нужно внести, это:
host = p4.home dicdb = ptkdic user = ptkdic_usr password =
Остальное по вкусу.
Возможно, вы заметили, что в случае с пользователем gtkdic_usr я оставляю переменную password, даже если пароль отсутствует. Можно, конечно, её убрать или закомментировать. Это не принципиально. Просто есть пользователь, есть пароль. А если пароль отсутствует, то каков он по умолчанию? Вот поэтому я и оставил всё как есть.
Запускаем (см. скриншот). Работает прямой и обратный поиск, а также поиск по частичному вхождению. Работают перевод выделенного текста и обратный перевод, но следует учитывать две вещи: первое -- выделять вы должны только слово (словосочетание или часть слова), встречающееся в словаре, а не целый кусок текста и второе -- у gtk+ свой буфер обмена (clipboard), а работу с system-wide xclipboard автор не доделал, поэтому этой возможностью вы можете воспользоваться, работая только в gtk+ приложениях. Хотя есть другой вариант -- собрать PtkDic под GTK+ 2.0 (./configure --without-old-gtk). Тогда эта проблема будет решена. Хотя я заставить работать GtkDic в таком варианте не смог (почему-то оказался заблокированным ввод в поля "English" и "Russian".).
Кроме этого, интерес представляют пакеты gtkdic-audio и gtkdic-audio_edit. Первый -- это gtkdic с возможностью воспроизведения произношения слова. Решение при этом выбрано простое (см. скрипт /usr/bin/gtkdic-say.sh пакета gtkdic) -- проигрывать mp3-файлы, размещённые в подкаталоге /tmp. Не ахти какой механизм работы со звуком, но как временное решение проблемы вполне подойдёт. Второй пакет вместе с возможностью аудио воспроизведения имеет встроенный редактор, позволяющий добавлять в базу новые словарные статьи (см. пункт меню "Update dictionary"). Если вы хотите отказаться от ввода данных, то воспользуйтесь пунктами меню "Undo last update" или "Undo all updates". (Это единственная из программ, рассматриваемых здесь, которая способна заполнять словарные статьи.)
Принцип работы редактора следующий -- в поле "English" вводите слово, а в окне, где обычно показываются словарные статьи, пишете свою статью. После этого выбираете пункт меню "Update dictionary". Недостаток редактора в том, что он не обновляет статью с таким же именем, а добавляет ещё одну. Так что будьте внимательны, если захотите воспользоваться этой возможностью. Да! И самое главное -- если вы используете предложенный мною вариант работы с базами, основанный на использовании двух пользователей, то напоминаю вам, что для добавления новых словарных статей у пользователя должны быть соответствующие права на это, поэтому замените пользователя gtkdic_usr на gtkdic_adm.
Как и PtkDic, GtkDic корректно работает с европейскими языками, используя тоже два шрифта для вывода на экран плюс автоопределение кодировки и имеет возможность печати.
И ещё. В составе пакета gtkdic есть скрипт, написанный на Perl, который представляет из себя простой веб-интерфейс
для доступа к словарям. Чтобы заставить его работать, вам нужно установить и настроить apache (подробнее об этом читайте дальше в п. 2.6 "Установка и настройка Apache с поддержкой PHP и phpMyLingvo.") и скопировать скрипт webdic.pl в подкаталог /var/www/cgi-bin, предварительно настроив в нём доступ к базе данных:
... my $dbhost = 'p4.home'; my $dbname = 'ptkdic'; my $dbuser = 'ptkdic_usr'; my $dbpass = ''; ... И добавив в скрипт, после определения переменной $q, строку указывающую кодовую страницу для генерируемого html-документа:
... my $q = new CGI; $q->charset('KOI8-R'); # по умолчанию используется iso-8859-1 ... В данный момент проект не развивается, т.к. автор сделал то, что хотел, а желающих продолжить и развивать проект не нашлось. А жаль.
Установка и настройка MySQL.
Нам понадобятся три пакета -- MySQL-server, MySQl-client и libMySQL. Как устанавливать -- сугубо личное дело каждого дистрибутива.Сразу после того как вы установили MySQL, вы должны для себя решить -- используется MySQL только локально или sql-сервер должен предоставлять доступ к своим ресурсам другим машинам? Если да, то редактируем файл /var/lib/mysql/my.cnf и убираем из него строку
skip-networking
Получаем примерно следующее:
[mysqld] chroot=/var/lib/mysql datadir=/db bdb-logdir=/log log=/log/queries pid-file=/mysqld.pid skip-locking socket=/mysql.sock tmpdir=/tmp user=mysql
Перезапускаем сервис mysqld:
[root@p4 bin]# service mysqld restart
И заодно проверяем будет ли mysqld автоматически грузится при старте системы:
[root@p4 mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
В моём случае mysqld отключен, поэтому я включаю его:
[root@p4 mysql]# chkconfig mysqld on [root@p4 mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
Теперь при загрузке в runevel 3,4 или 5 будет автоматически грузиться mysqld. Проверяем запущен ли mysqld:
[root@p4 mysql]# service mysqld status mysqld is stopped
Если нет, запускаем:
[root@p4 mysql]# service mysqld start
Если вы установили MySQL в первый раз, то вам необходимо настроить пароль суперпользователя в MySQL. Изначально для пользователя root пароль не указан. Что делаем? Для любителей GUI советую установить пакет mysqlnavigator и настроить всё через него. Для адептов командной строки у меня есть небольшой набор скриптов для предварительной настройки и установки словарей:
Если вы только что установили MySQL, то всё, что от вас потребуется, это сделать следующее (можно не под привилегированным пользователем):
[alex@p4 bin]$ ./set_mysql_ptkdic.sh Установка пароля для root... Создаём базу ptkdic... Создаём новых пользователей, ptkdic_adm и ptkdic_usr, и назначаем им привилегии... Перегружаем mysql...
А теперь давайте объяснимся. Что это за два пользователя, ptkdic_adm и ptkdic_usr? Первый согласно скрипту set_mysql_ptkdic.sh получает полные права над БД ptkdic, где будут храниться таблицы словарей. Второй пользователь, ptkdic_usr, получает возможность делать только выборки из БД ptkdic. Это решение я использовал вместо того, которое предлагалось в описании по установке пакета GtkDic -- создать пользователя ptkdic и присвоить ему все (!) права на базу ptkdic и в дальнейшем использовать его для её заполнения и для работы с ней, что чревато неприятностями. Поэтому для работы с базой словарей я ввёл вместо одного пользователя двух.
Установка и настройка PtkDic.
Пакет берём на . Для работоспособности PtkDic вам необходимо установить Perl и несколько модулей для него: perl-Tk и perl-DBD-mysql. Что ещё за собой потянет установка этих пакетов зависит от того, что у вас уже установлено в системе. В моём случае это были perl-DBI, perl-Net-Daemon и perl-PIRPC. Но это так ... лирика ... вам поможет разобраться с пакетными зависимостями apt или yum (к сожалению, я не в курсе чем отслеживают зависимости пользователи Slackware).Сам скрипт ptkdic расположите там, куда указывает переменная $PATH или добавьте новый путь. Кроме это, скопируйте файл ptkdicrc.templ в ~/.ptkdic/ptkdicrc и настройте пользователя, ip-адрес или имя хоста MySQL-сервера, код доступа к БД ptkdic и шрифты. С последними, возможно, придётся повозиться -- воспользуйтесь программой xfontsel, она облегчит вам жизнь. Получится примерно следующее:
host = p4.home user = ptkdic_usr passwd = ""
font_lat = -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1 # 8859-1 font font_latb = -misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 # 8859-1 bold font font_rus = -rfx-courier-medium-r-normal-*-14-140-75-75-m-90-koi8-r # koi8-r font font_rusb = -rfx-courier-bold-r-normal-*-14-140-75-75-m-90-koi8-r # koi8-r bold font
latex_preamble = "\documentclass[a4paper,10pt]{article} \n \usepackage[koi8-r]{inputenc} \n \usepackage[english,russian]{babel} \n \pagestyle{empty}"
geometry = 800x600+0+0
Запускаем (см. скриншот). Работает прямой и обратный поиск, а также поиск по частичному вхождению. Печать (тут я положусь на слова автора, т.к. принтера поблизости нет и проверить это не могу). При печати в подкаталоге ~/.ptkdic формируются три файла texput.(aux|dvi|log). Несомненный плюс -- корректная работа с европейскими языками (но это можно сказать и о других, описываемых здесь словарях). Для этого используется два шрифта для вывода на экран плюс автоопределение кодировки.
Установка J2RE 1.4 и JaLingo.
Всё просто как "кусок хозяйственного мыла". Нам нужны: а -- пакет J2RE и б -- клиент для доступа к словарям, JaLingo. Пакеты для J2RE можно взять здесь. Я воспользовался Sisyphus (репозиторий пакетов ALT Linux) и взял там два пакета: j2se1.4-sun и j2se1.4-sun-fonts. Их установка потребовала наличия в системе ещё одного пакета -- java-common.Теперь скачиваем программу-клиент с с домашней страницы проекта. На момент написания статьи это была альфа-версия 0.2. Запускаем (см. скриншот):
[alex@p4 bin]$ java -jar jalingo-0.2a.jar
Интерфейс напоминает старый добрый Lingvo. Работает только прямой поиск. Но есть возможность поиска в процессе ввода слова (так, как это реализовано в Lingvo). Интересен тем, что может подключать словари PtkDic через MySQL-соединение и/или файловый словарь Мюллера или любой другой с таким же форматом (см. скриншот). Программа показывает транскрипцию для словаря Мюллера (если она там есть), форматирует статью, делает подсветку служебных слов и сокращений. Статьи из MySQL-словарей отображаются как есть, без форматирования. Неоспоримое преимущество -- кроссплатформенность. Хотя ещё и сыроват, поэтому, если вас заинтересует этот клиент и вы найдёте в его работе ошибки, не забудьте сообщить о них автору программы, Александру Шишко.
Установка параметров
^X ^N Поставить стоп на next, previous-line ^U ^X ^N Снять truncate-lines=no Не сворачивать строки help-char term-file-prefix keyboard-translate-table scroll-... 1. (мягкий скролл, без прыжков) ctl-arrow nil Представлять CTRL-символы ^? или \xxxУстановка PSGML
Пользователь обычно получает PSGML как совокупность файлов, объединенных в один сжатый файл типа DOS/Windows ZIP или UNIX GNU zip. Файлы, извлеченные из этого дистрибутивного файла относятся к трем главным категориям:Пользователи UNIX обнаружат инсталляционные команды и сценарии, включенные в комплект поставки PSGML. Пользователям DOS/Windows придется выполнить важные шаги вручную.
Файлы .elc созданные для какой-либо конкретной версии Emacs или в специфической операционной системе скорее всего не будут работать с другой версией программы или на другой операционной системе. Но файлы .elc всегда можно создать самостоятельно из файлов .el. PSGML может работать и .el-файлами, но это несколько замедлит работу, поскольку перед каждым выполнением такого файла будет проходить процесс его компиляции.
Сначала, поместите все файлы из пакета PSGML в их собственный подкаталог и удостоверьтесь, что Emacs осведомлен об их местоположении. Для этого добавьте следующий LISP-код в файл .emacs:
| (setq load-path (append (list nil "/app/emacs/psgml") ; substitute your PSGML directory name load-path)) |
ПРИМЕЧАНИЕ:Даже при использовании Emacs и PSGML под DOS/Windows, PSGML ожидает, что в имени каталога будет присутствовать прямой слеш ("/"), а не обратный ("\"), как это имеет место в упомянутых операционных системах.
Тем самым переменной Emacs load-path, содержащей имена каталогов, откуда происходит загрузка программ, будет добавлено имя каталога, содержащего файлы PSGML. Переместите файлы PSGML в каталог /app/emacs/psgml.
Затем, нажмите M-x и в командной строке наберите byte-compile-file. Нажмите ввод, и после Byte compile file: введите имя .el-файла. Снова нажмите ввод.
Повторите процедуру для всех файлов с расширением .el. Если в процессе трансляции появляются сообщения об ошибках, компилируйте другие файлы, а затем вернитесь к тем файлам, где были ошибки и попробуйте снова. Возможно, ошибки - это результат наложения от других файлов.
Ускорить процесс компиляции можно, если вместо команды byte-compile-file использовать команду byte-force-recompile, которая запрашивает имя каталога, а затем компилирует все .el-файлы из этого каталога.
Выше было упомянуто, что Emacs имеет встроенный режим SGML, который, однако, имеет ограниченный набор возможностей, поэтому следующим шагом нужно сообщить Emacs использовать PSGML вместо встроенного режима SGML. Сделать это можно добавлением строки
| (autoload sgml-mode "psgml" "Major mode to edit SGML files." t ) |
Помимо программных файлов пакет PSGML включает в себя документацию, которую можно просматривать в Emacs средствами справки. Поместите файл psgml.info в каталог (вероятно, подкаталог главного каталога Emacs называемого info), где лежат все файлы подсказки. Отредактируйте файл dir, находящийся в том же каталоге, включив в него следующую строку:
| * PSGML: (psgml). SGML editing. |
| C-h i g (/pathname/psgml.info) |
При определении местоположения файла информации учтите, что DOS/Windows Emacs допускает в названиях каталогов как прямых слешей ("/"), так и обратных ("\")
Установка словарей.
С пользователями мы разобрались, теперь переходим к увеличению словарного запаса -- установке словарей. Лучше сразу идти на страницу проекта phpMyLingvo и взять словари там, т.к. на сайте страницы проекта PtkDic/GtkDic не работает докачка и, во-вторых, Сергей Галин (автор проекта phpMyLingvo) поддерживает набор словарей в актуальном состоянии. Скачайте то, что вас интересует. Обратите внимание на метод сжатия файлов -- gzip или bzip. Зачем? Сейчас поймёте. Дело в том, что файлы словарей представляют из себя огромные, предварительно сжатые, скрипты, которые "скармливаются" MySQL. Для этого воспользуйтесь скриптом install_dic.sh (за основу взят скрипт из пакета PtkDic). Но, чтобы install_dic.sh "не ошибся", помогите ему -- измените значение переменной PACK_PRG в var_mysql_ptkdic.sh на нужное вам: gzip или bzip. После этого можно устанавливать словари:[alex@p4 tmp]$ ./install-dic.sh eng_rus_slang.bz2 Подождите, пожалуйста. Загружаю словарь eng_rus_slang.bz2 в БД ptkdic... Операция успешно завершена!
Установка xruskb
Установите порт . Добавте в ~/.xinitrc или ~/.xsession следующую команду:[ -x /usr/local/bin/xrus ] && xrus jcuken-koi8.xmm
Установка заголовка и имени автора.
Это делается с помощью ключевых слов %title и %author . Например,%title How to create an HTML document
%author D.R. Lorimer
было использовано в этом файле.
Установка значений переменных PSGML.
В разделе "Настройка переменных редактора Emacs" говорилось, что в Emacs существуют переменные, изменяя значения которых можно менять настройки редактора, и что эти переменные сохраняются в файле .emacs. PSGML добавляет к списку переменных несколько новых. Наиболее важные приведены ниже. Все они являются Булевыми переменными и должны иметь значение "t". Это можно сделать добавлением строки в файл .emacs, подобной той, что приведена ниже| (setq sgml-omittag-transparent t) |
Установка
После того как вы скачаете архив с процессором saxon вам нужно распаковать его:[danguer@perseo xslt]$ unzip saxon6_5_2.zip
Затем, вам нужно добавить файл saxon.jar к пути поиска классов, путь к jar-архиву можно передать с помощью ключа -cp path (можно добавить путь к jar-файлу в переменную окружения CLASSPATH прим. перев.). Я поместил файл saxon.jar в каталог xslt, кроме того необходимо передать Java используемый класс, в случае Saxon 6.5.2 используется класс com.icl.saxon.StyleSheet и затем должны следовать xml-документ и xsl-файл, например:
[danguer@perseo xslt]$ java -cp saxon.jar com.icl.saxon.StyleSheet document.xml tranformation.xsl
Эта команда отправит результат работы процессора на устройство стандартного вывода (STDOUT), перенаправить вывод в файл можно так:
[danguer@perseo xslt]$ java -cp saxon.jar com.icl.saxon.StyleSheet document.xml tranformation.xsl > file_processed.html
Например мы можем преобразовать наш первый пример XSLT с помощью процессора saxon:
[danguer@perseo xslt]$ java -cp saxon.jar com.icl.saxon.StyleSheet hello.xml hello.xsl > hello.html
Вариации на тему emacs
Подобно vi, текстовый редактор emacs - инструмент классический. Именно он стоит у истоков всего течения open source. И уже поэтому заслуживает внимания. К тому же он часто рассматривается как универсальный инструмент, позволяющий решать почти любые задачи - от правки конфигурационных файлов до написания исходников программ в многие тысячи строк.Естественно, о emacs написано немало. Достаточно вспомнить книгу Ричарда Столмена "Руководство по GNU Emacs", недавно изданную в русском переводе. Не говоря уже о многочисленных статьях, как в Интернете, так и в традиционных журналах. Однако обычно уделяется внимание использованию emacs как редактора для программистов. Мы же посмотрим, каковы его возможности в написании не исходных, но просто текстов.
Функционально emacs существенно ближе к текстовым редакторам DOS, чем vi. Он имеет один-единственный режим - режим редактирования, включающийся сразу же после запуска редактора. Практически все нем манипуляции осуществляются с помощью управляющих клавиш Control, Escape и Alt в комбинации с буквенными. Что особенно приятно нашему человеку, комбинации эти работают вне зависимости от раскладки клавиатуры.
В основе концепции emacs лежит понятие буфера - то есть области оперативной памяти, в которой и осуществляются манипуляции с текстом. При запуске программы по умолчанию открывается пустой буфер. С буфером возможны следующие манипуляции:
Редактор emacs позволяет работать в одной консоли с несколькими файлами одновременно. С этой целью для каждого файл посредством ([Control+x] b) создается новый буфер со своим именем (которое никакого отношения к имени файла иметь не обязано).
В каждом буфере можно работать с любым количеством окон, сколько их поместится на экране. Разделение экрана на два окна осуществляется командой ([Control+x] 2), переход между окнами командой ([Control+x] o). Фрагменты текста могут переноситься из окна в окно либо штатными командами emacs, либо путем выделения мышью и вставки в позицию курсора щелчком средней ее клавиши.
Очень приятной особенностью emacs является нормальное, с точки зрения пользователя DOS, поведение клавиш Home и End, перемещающих курсор, соответственно, в начало и конец строки. И еще: перенос слов на границе экрана осуществляется без разрыва строки, то есть, в терминологии текстовых процессоров, без образования нового абзаца (который возникает только при нажатии клавиши Enter). Что очень полезно, если в дальнейшем предполагается экспорт в какой-либо текстовый процессор типа Word: искоренение лишних символов возврата каретки, возникающих при переносе слов во многих редакторах, - занятие не из самых жизнерадостных.
Редактор emacs обладает довольно эффективными инструментами для редактирования введенного текста. Они основываются на понятии блока - то есть текстового фрагмента, расположенного между меткой (вводимой комбинацией [Control+@] и текущим положением курсора. Блок может быть изъят (аналог Cut в Windows) командой [Control+w] и вставлен (в текущем окне или буфере, или в ином другом) командой [Control+y]. Имеется также многоуровневая отмена последовательностю команд ([Control+x] u).
В общем, пользователь, имеющий навыки работы со старыми текстовыми процессорами для DOS, основанными на использовании клавишных комбинаций, способен без большого труда освоить emacs. А доведя манипуляцию ими до автоматизма - и эффективно его использовать. Недостаток его (впрочем, характерный почти для всех консольных редакторов Linux) - крайне непривычное, для пользователей DOS использование мыши: с ее помощью можно только выделять фрагменты текста, но на текущую позицию курсора она никакого влияния не оказывает. Кроме того, мерцание последнего раздражает (по крайней мере, меня).
Впрочем, некоторая, скажем так, непривычность интерфейса emacs в известной мере сглаживается, если он запущен в окне терминала системы X Window. Это, как ни странно, не совсем то же самое, что emacs в режиме консольном. Правда, его можно запустить в окне терминала и в первозданном виде - командой emacs -nw (что означает "no window"); правда, не очень понятно, зачем это нужно - тогда уж лучше просто работать в консоли.
Потому что emacs, запущенный в терминальном окне той же командой без параметров, предоставляет многие дополнительные возможности по сравнению с чисто консольным вариантом. Для начала, в нем волшебным образом появляется строка меню, избавляющая от необходимости запоминания немерянного количества клавишных комбинаций (что само по себе не смертельно, но требует постоянной практики). Кроме того, курсор начинает вести себя обычным (для DOS/Windows-мигранта) способом, то есть может позиционироваться мышью. Есть и еще несколько приятных особенностей.
Итак, первое, что бросается в глаза при запуске emacs в окне терминала - это строка меню. Организованное не вполне стандартным, но по своему логичным образом.
Первым пунктом идет Buffers - основополагающее понятие для emacs. Здесь можно, во первых, переключаться между открытыми буферами, во вторых - вывести список буферов. В пункте Files, как это ни странно, помимо открытия, сохранения, переименования и вставки файла, также присутствуют операции с буферами (обращение и уничтожение буфера), а также с фреймами; термин "фрейм" в контексте emacs соответствует понятию окна в большинстве иных приложений.
В пункте Tools - масса всяких опций, от печати и сравнения файлов и буферов до чтения новостей, получения и отправки почты, поиска файлов, компилирования и отладки программ. В пункте Edit - обычный набор инструментов для редактирования (вырезание, копирование и вставка, а также отмена). Здесь же - всякого рода форматирование, именуемое свойствами текста - от шрифтоначертания и выравнивания до отступов и установок цвета фона и текста. В пункте Search - разнообразный поиск, а также работа с закладками (Bookmark).
Все, что не вошло в перечисленные пункты, собрано в пункте Mule (не от мула ли?). Главным образом, однако, он предназначен для установки языкового окружения. Причем язык может быть выбран почти любой - от английского и любого другого европейского до тибетского и эфиопского. Присутствует и русский, причем сразу в четырех своих ипостасях - ISO, Alt, KOI-8R и (да простят меня мои незалежные братья по этносу) KOI-8U.
В общем, через окно терминала наглядно можно видеть величие системы emacs, в которой, теоретически, заложены все мыслимые и немыслимые возможности. Которые в чисто консольном варианте замаскированы длинными списками команд. Однако, не смотря на изобилие возможностей, и для непосредственной задачи, то есть ввода текстов, emacs вполне пригоден.
Правда, для этого требуется некоторая привычка. Начать с того, что открытие файла осуществляется не вполне традиционно: при выборе из меню File - Open File внизу окна появляется нечто вроде командой строки с предложением ввести имя открываемого файла. Сделать это не сложно - поддерживается режим дополнения пути с помощью клавиши табулятора.
Если же на приглашение командной строки просто нажать Enter - появляется список файлов и подкаталогов текущего каталога (по умолчанию - $HOME). Который представляет собой отдельный буфер, видимый в их списке (пункт меню Buffers).
Далее с помощью мыши (или, конечно, курсором управления курсором) можно перейти к подкаталогу с требуемыми файлами. Однако открыть этот подкаталог можно, только нажав Enter. После чего появляется содержимое дочернего каталога, также представляющее собой самостоятельный буфер. В результате, при достаточной вложенности подкаталогов, довольно быстро пункт Buffers заполняется всеми этапами пути до требуемого файла. Так что лучше уж принять приглашение командной строки в самом начале...
Правда, после открытия файла никаких сложностей при его редактировании не возникает. Перемещение по тексту происходит обычным для пользователя DOS способом - с помощью клавиш управления курсором, Home и End, PageUp и PageDown, а также мыши; никаких неожиданных эффектов не возникает.
Выделение текстовых блоков - также обычное: мышью, клавишами управления курсором при нажатой клавише Shift; слово можно выделить двойным щелчком мышью. А щелкнув правой клавишей мыши, можно выделить блок между текущей и предшествовавшей позицией курсора.
В буфер обмена (не буфер в понимании emacs) автоматически попадают только блоки, выделенные мышью. Для помещения в буфер обмена фрагментов, выделенных клавишами управления курсором, их нужно поместить туда явным образом - через пункт меню Edit - Copy. Как ни странно, за этой операцией не закреплено комбинации горячих клавиш.
Вставка содержащегося в буфере обмена фрагмента, не зависимо от способа его помещения туда, может быть осуществлена щелчком правой клавиши мыши, через меню (Edit - Paste) или комбинацией клавиш Control+y.
Измененные файлы могут быть сохранены - через пункты меню File - Save Buffer или Save Buffer as. По умолчанию устанавливается также автосохранение файлов. Предупреждаю: если вы закрываете родительское для emacs окно терминала, не сохранив изменений - emacs будет закрыт, и никаких предупреждений о необходимости записи измененных файлов не ждите.
Интерактивных способов настройки emacs не предусмотрено. Такие параметры, как размер и гарнитура экранного шрифта, его цвет и цвет фона, изменяются ручным редактированием файла ~/.Xdefaults (в домашнем каталоге пользователя). Относящаяся к emacs его секция имеет примерно такой вид: ! emacs, xemacs
emacs*Background: DarkSlateGray emacs*Foreground: Wheat emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: -cronyx-courier-medium-r-*-*-20-*-*-*-*-*-koi8-r !xemacs*font: -etl-fixed-medium-r-*-*-14-*-iso8859-5 emacs.geometry: 80x25
Из чего понятно, что могут быть заменены цвета фона, текста, индикатора курсора, гарнитура, начертание и размер экранного шрифта и его кодировка, а также геометрия окна. Впрочем, для единичного сеанса все это можно указать в качестве параметров при запуске emacs из командной строки.
Более сложная настройка emacs (нужно сказать, что возможности таковой - почти безграничны) осуществляется редактирование файла инициализации - ~/.emacs, который представляет собой, в сущности, программу на языке LISP. На нем я останавливаться не буду - это описано в упоминавшейся книге Ричарда Столмена.
Следует упомянуть, что существует и собственно графическая модификация emacs - XEmacs. Однако, кроме внешнего вида, никаких впечатлений о нем получить мне не удалось: программа с регулярностью, достойной лучшего применения, слетала после ввода нескольких слов. Не имею оснований для обобщений - вероятно, это особенность моей системы. Поскольку многие множества пользователей XEmacs применяют - и не жалуются. Однако мне про него сказать нечего...
Vi и emacs - далеко не единственные редакторы для текстового режима. Однако в большинстве своем они продолжают одну из двух этих линий. Хотя есть и самостоятельные программы, которые стоит рассмотреть в рубрике
Редакторы семейства VEDIT разработаны фирмой
Редакторы семейства VEDIT разработаны фирмой Greenview Data и предназначены для использования в текстовом режиме под управлением различных операционных систем на платформе Intel (MS-DOS, QNX, XENIX, UNIX 286/386, FlexOS). Редактор целиком написан на ассемблере, что ограничивает его переносимость на другие аппаратные платформы, а также исключает возможность использования в рамках системы Х Window. Интерфейс VEDIT вполне современный (CUA-подобные меню, окна, интенсивное использование цвета, напоминает Borland IDE), функциональная раскладка клавиатуры достаточно интуитивна, возможна эмуляция некоторых известных редакторов и текстовых процессоров. VEDIT может редактировать любые файлы (в том числе двоичные, размером до 2 ГБайт), имеет удобный режим шестнадцатеричного редактирования. Отдельные реализации редактора включают макроязык, который, однако, чрезмерно мнемоничен, что затрудняет написание и понимание программ. Так, например, команда удаления текущей строки выглядит как "0КК". В общем, по своим возможностям VEDIT похож на ранее упомянутый редактор TED, однако поддержка процесса программирования и интерфейс с операционной системой здесь явно слабее. К тому же редактор, не русифицирован.Vi/Ex
Стандартный дистрибутив OpenBSD содержит nvi/nex версию редакторов vi и ex. Для того чтобы эти редакторы правильно отображали русские буквы, необходимо создать файл ~/.nexrc, содержащий следующие строки:set print=абвгдежзийклмнопрстуфхцчшщыьъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЪЭЮЯ set noprint=
$RuOBSD: howto-cyrillic.html,v 1.49 2002/04/09 20:17:03 dfa Exp $
Vi - классика мира Unix
Vi - редактор, в различных своих версиях (Vim, elvis и другие), модификациях и клонах (сохраняющих полную совместимость между собой) представленный абсолютно во всех Unix- и Unix-подобных системах. В большинстве случаев он является системным редактором по умолчанию. А в критических обстоятельствах может оказаться просто единственным.Поэтому иметь представление о Vi необходимо любому пользователю Linux. Хотя назвать его чрезвычайно удобными в использовании я бы не рискнул - от него веет какой-то допетровской Русью. Я понимаю его поклонников - это пользователи Unix старого закала. В те времена былинные, после строчного редактора (помните о таких? в DOS это был edline, в Unix - просто ed), vi выглядел как шедевр. И те, кто впитал привычку к нему с молоком матери - никогда от него не откажутся. Тем более, что как редактор исходных текстов или системных файлов - он более чем функционален. Посмотрим же и мы, что это такое.
Основная сложность в освоении Vi для человека, привыкшего к редакторам с более или менее, но все же человеческим лицом, является наличие трех режимов: командного, ввода и построчного редактирования. После запуска программы (а это делается просто: vi имя_файла, существующего или нового) перед вами возникает черный экран с тильдами по левому краю каждой строки.
Пользователь DOS, помнящий еще о WordPerfect версий 4 и 5 (прекрасный был, кстати сказать, процессор), попытается тут же начать ввод текста - и не получит ничего, кроме звукового cигнала. Поскольку находится в режиме командном, ввода не допускающем. То есть нажатия на клавиши интерпретируются не как коды букв, а как команды программы.
Для перехода в режим ввода нужно нажать клавишу a (app) или i (insert); первая позволяет добавлять текст после курсора, вторая - вставлять перед. Теперь-то можно и печатать буквы, как в любом другом редакторе или процессоре.
Можно также и перемещаться по тексту с помощью стрелок управления курсором. Следует помнить только, что нажатие таких клавиш, как End и Home, не даст привычного для пользователя DOS эффекта. И, более того, автоматически переведет редактор в командный режим. Для всякого рода сложных перемещений (на слово влево и в право, в начало и конец строки, на стоку вверх и вниз, и так далее) используются комбинации клавиш в командном режиме. То же относится и к операциям удаления и замены слов и текстовых блоков: клавиши delete или insert не окажут никакого действия на выделенный фрагмент; нужно перейти в командный режим и выполнить соответствующие действия уже там.
А вот сохранение файла и выход из него требуют еще одного режима - построчного редактирования. Для этого нужно перейти из режима ввода в командный режим (нажатием клавиши Escape) и набрать : (то есть двоеточие), а после (без пробела) букву для соответствующего действа; например, w - для сохранения, q - для выхода (если файл был изменен, последует предложение сохранить изменения командой :w) или q! - для выхода без сохранения изменений.
Следует заметить, что далеко не всегда ясен текущий режим редактора. В той версии, к которой я набираю эти строки (Vim), режим ввода маркируется строчкой --INSERT-- внизу экрана; но в общем случае - это не обязательно. Косвенно текущий режим можно определить нажатием клавиши escape: в случае режима ввода это переведет редактор в командный режим, а в командном - просто вызовет звуковой сигнал.
В наших условиях сложность работы с vi усугубляется русскими буквами: если вы перешли в командный режим непосредственно из кириллической раскладки (да еще и забыли об этом) - никакие его команды работать не будут. Вызывая жалобное попискивание. А поскольку в консоли раскладка клавиатуры не индицируется (по крайней мере, мне неизвестно, как это можно сделать) - можно провести некоторое время в недоумении, пока не сообразишь переключиться на латиницу.
Я, конечно, понимаю, что все особенности vi - реликты той далекой эпохи, когда главным средством доступа к вычислительным мощностям компьютеров были текстовые терминалы. Клавиатуры которых не имели, скажем, стрелок управления курсором. Однако немало с тех пор воды утекло. И найти ныне такую (работающую) клавиатуру - посложнее, чем пользователя, помнящего о ее существовании. Для которого применение vi и оправдано долголетней привычкой и доскональным знанием. Ныне же приходящим в Linux - есть что выбрать из иного.
Причем - выбор есть, даже не выходя за пределы консольного режима. Примером чему -
Vim-2 или "что может быть проще?"
Автор: Владимир Поповpopov_inm@yahoo.com
Опубликовано: 13.09.2001
Оригинал:http://www.softerra.ru/review/oses/linux/12607/
Заметка с размышлениями о vim, опубликованная 04.09.2001, имела некоторый резонанс, в связи с чем разговор об этом мощном редакторе хочется продолжить. Парадоксально, но, признав некоторую сложность vim в прошлый раз, сейчас я попытаюсь обосновать утверждение о его исключительной простоте. Парадокса, собственно, никакого и нет: все зависит от того, с чьей позиции смотреть. Для пользователя, только что загрузившего дистрибутив vim, он действительно сложен. Достаточно сказать, что в файле index.txt свыше 1200 строк, а ведь этот файл - всего лишь перечень доступных команд с краткими описаниями в одно, максимум два предложения. 1000, пусть 500 команд не способствуют желанию познакомиться с редактором. Не будем торопиться. Во-первых, команды довольно часто дублируются. Во-вторых, часть из них унаследована от vi и предполагает возможность ввода на любом алфавитно-цифровом терминале. Современному пользователю более естественным покажется использование функциональных клавиш и клавиш позиционирования курсора, мыши, наконец. Все эти возможности vim, разумеется, поддерживает, но и старые варианты набора команд не отменяются. Список сокращается: предположим, до 150 команд. Не так уж и много для редактора, который может "все" (уточнять и в этот раз не будем), но есть ли основания говорить об "исключительной простоте"? Как это ни странно, есть. И основания эти следующие:
Таким образом сконфигурированный, документированный и дополненный системой меню vim становится "образцом дружественности" к пользователю. Вас что-то не устраивает? Cделайте так, как считаете более удобным! Для этого не нужно обладать какими-то специальными знаниями, но что-то ДЕЛАТЬ - действительно нужно. Здесь придется еще раз признать (и напомнить), что vim написан программистами и для программистов. Но поскольку ряды последних все ширятся, то и круг пользователей также должен расширяться. Если это не так, то, возможно, и потому, что вышеупомянутые более чем 1000 строк одного перечисления команд кого-то "оттолкнули" при знакомстве. Именно на этого кого-то и ориентирован данный материал.
Для начала стоит объяснить, зачем все-таки нужно такое количество команд, если большинство редакторов вполне обходится системой меню. Для примера предлагаю взять части текста, выделяемые для выполнения над ними какой-то операции и называемые, как правило, текстовыми объектами. Можно выделять их мышью, как это и делается во многих редакторах: решение универсальное, но крайне не эргономичное - попробуйте выделить абзацев 5-6. В общем случае текстовым объектом может быть символ, слово, предложение, абзац, текст в целом плюс блоки, которые, в свою очередь, могут быть ограничены угловыми, квадратными, фигурными или круглыми скобками (мы ведь говорим о тексте программы). Курсор (или указатель мыши) в момент выбора также может находиться в начале, конце или внутри текстового объекта. Можно, конечно, "метить" начало и конец текстового объекта - но это бывает так утомительно... Согласитесь, также, что меню, отражающие все эти возможности, выглядело бы весьма громоздким. А вот как это сделано в vim: если курсор в начале объекта, то первая буква команды выделения - (add), а если внутри, то (inner). Теперь осталось указать, что является объектом. Вторая буква -
Логика интерфейса такова, что если вы обнаружили какую-то возможность в одном из режимов, то почти наверняка найдете аналогичную в другом. Упомянутые в первой статье
"Универсальными" могут быть не только последние символы команд, как в предыдущих примерах, но и первые. Прежде всего, это уже упоминавшиеся
Некоторые символы сохраняют свое назначение и в командном режиме: - фильтр, <@x> - выполнить содержимое регистра 'x', '<' и '>' - уменьшить и, соответственно, увеличить "отступ" строк. Вообще, командный режим стоит несколько "особняком", поскольку является практически самодостаточным: в нем доступны практически все действия, инициируемые командами остальных режимов, разве что объем ввода будет больше. Зато текст команд достаточно "прозрачен". Например:
:buffer N - перейти к буферу N;
:Print - распечатать;
:set - показать или установить опции.
А количество вводимых символов уменьшается благодаря допустимым сокращениям и уже неоднократно упоминавшемуся автозаполнению. Перечислять эти самые "EX" команды нет смысла - их без малого три сотни, а вот просмотреть этот список - стоит. Хотя бы для того, чтобы знать, какие еще возможности имеет vim. Кроме команд, дублирующих команды других режимов, мы найдем здесь команды управления буферами (==открытыми файлами), меню, "привязкой" команд к клавиатурным последовательностям (map), средства программирования, индексации (tags), управления редактором и многое, многое другое.
Так мы подошли к следующему достоинству vim, обеспечивающему его "простоту" - исключительным возможностям настройки. Прежде всего обратимся к конфигурационному файлу vimrc (для графического режима - gvimrc). На стоит взять vimrc.forall - файл написанный "на все случаи жизни". Файл прекрасно прокомментирован и действительно при некоторых модификациях может устроить многих. Но лучше использовать его как "руководство к действию". Познакомившись для начала с командой map:
map \\
которая заменяет
set langmap=йцу...ЙЦУ...;qwe...QWE...
Три точки в данном случае означают "все остальные символы на клавиатуре" в нижнем и верхнем регистрах для раскладок ru и us. <;> перед 'qwe' отделяет "подменяемый" набор от "подменяющего". Точку с запятой (в наборе, а не разделяющую) и двойные кавычки нужно исключать (quote) с помощью backslash (\), как обычно. Данная опция делает не нужным переключение раскладки клавиатуры, когда требуется латинский символ в нормальном режиме - несуществующий, как видите, недостаток vim, о котором я писал в первой статье. Спасибо всем указавшим на эту опцию. Что касается Свена Гукса, то, позаботившись о вводе таких необходимых ему умляутов, он действительно не учел нашу привязанность к кириллице - вполне простительно для жителя Берлина. Следующая секция vimrc.forall научит использовать сокращения - abbreviations. Дело вкуса. Занятно использовать сокращения в качестве "автокорректора" опечаток: aslo->also. Или - записной книжки: Ysnail->Sven Guckes
map
imap
cmap
Последние две команды можно заменить одной: map!
map
map n
будет по
Последующие секции, описывающие применение автокоманд для использования vim в качестве почтового клиента, PGP-шифрование и операции с синтаксисом, очень интересны, но уже не имеют отношения к разговору о "простоте" vim.
Вышеизложенное должно было убедить читателя, что "не так страшен vim..." и изучать устрашающих размеров help может быть, и не придется... У меня, во всяком случае, на каком-то этапе знакомства в этим редактором сложилось впечатление, что имей я под рукой 1-2 странички подсказок... А почему - нет? Поскольку по
$MyHelp myhelp.txt /*myhelp.txt*
Все элементы строки, надеюсь, понятны: первый - ссылка, второй - имя файла, третий - позиция в этом файле. Файл tags - сортирован по алфавиту и, если не хотите сортировать его заново, строку нужно поместить в соответствующее место. В данном случае между строками, $LANG.... и $VIM...
Готово. Запускаем vim, нажимаем
Ну, а поскольку "эталоном" дружественности интерфейса долгое время считалась система выпадающих меню, то осталось посмотреть, как таковая реализуется в vim. Дистрибутив содержит файл menu.vim, активный по умолчанию только для графической среды. Для появления меню в консольном режиме во все тот же vimrc нужно вставить следующие команды:
source $VIMRUNTIME/menu.vim
set wildmenu
set cpo-=<
set wcm=
map
На месте
amenu 10.330 &File.&Close
Элементы строки разделяются пробелами. В данном случае первый из них, amenu - команда, обеспечивающая появление данной позиции меню во всех (all) режимах. Второй - число, часть до точки которого определяет позицию в главном (горизонтальном), а после точки - в выпадающем (вертикальном) меню. Подобным образом лексемы до и после точки третьего элемента строки представляют собой текстовое содержание позиции меню. Пробелы и точки в составе этих лексем исключаются (quote) с помощью обратной косой черты (backslash). Допустим только один служебный символ -
Таким образом vim может обретести интерфейс, проще которого (при заданном уровне функциональности) уже не будет. Все желаемые усовершенствования Вы можете сделать сами. Средств для этого - достаточно. Не стану утверждать, что путь к этой "простоте" так уж, извините за тавтологию, прост, но "нет ничего ценнее хорошего инструмента". В том числе и для программиста.
Многих возможностей vim, кстати, ни, первая ни вторая статья даже не касались. Вне рассмотрения остались интеграция с Perl и Python, программирование пользовательских функций, форматирование текста и многие другие темы, достойные отдельного обсуждения.
Конец
Vim: уже шесть!
Автор: Владимир Попов, popov_inm@yahoo.comОпубликовано: 06.02.2002
Оригинал: http://www.softerra.ru/freeos/15764/
Итак, версия 6 популярного редактора vim вот уже три месяца в разряде стабильных и входит, практически, во все последние дистрибутивы Linux. На настоящий момент количество пользователей vim во всем мире приблизительно оценивается, как превышающее миллион. Vim используется программистами таких компаний как Sun, HP, MicroSoft.
Напомним, что встроенный язык программирования (помимо фактически стандартного для любого "приличного" редактора языка макрокоманд) и практически неограниченные возможности настройки с момента рождения сулили vim долгое и успешное развитие. Зачем же тогда эти новые версии, если редактор как инструмент конечного пользователя, может эволюционировать практически исключительно усилиями его сторонников, склонных в той или иной мере к программированию? И эволюционирует: количество расширений и советов (plugin's & tip's), предложенных пользователями через , измеряется сотнями, а количество "вовлеченных в разработку" все растет. Но и Bram Moolenaar, представьте, никак не "остепенится" (быть может, идеи, предложенные пользователями, оказываются слишком интересными). Налицо факт: автор "сотоварищи" окончательно "перепутались", и если в том, что касается кода самого редактора, последнее слово все-таки за Bram Moolenaar, то расширения vim (собственно, все содержимое архивов runtime) – создаются многими и многими участниками проекта. Время от времени Bram Moolenaar решает, что количество изменений и дополнений предыдущей версии превысили некоторый предел, и – появляется новая версия. Что же нового появилось в 6-й? Данный материал – попытка ответить на этот вопрос.
Одним из самых отмеченных vim-сообществом событий, происшедших между выходами 5-й и 6-й версий, было, издание в апреле 2001 года книги Steve Oualline. Это первая книга, посвященная исключительно vim – впечатляющий фолиант объемом свыше шестисот страниц, говорят, очень живо написанный. Так или иначе, то, что сотрудничество со Steve Oualline повлекло за собой переработку документации vim – очень отрадный факт. Предыдущие версии содержали, фактически, только "reference guide" – описание всех доступных при редактировании функций. Описание полное, но, если можно так сказать, "недружественное". Мало того, что список этих функций у vim и так чрезвычайно обширен, эти функции к тому же дублируют друг друга в разных режимах, наследуют "предков", ориентированных на алфавитно-цифровые терминалы, а иногда и просто избыточны для многих категорий пользователей. Теперь представьте себе эти более чем тысячу клавиатурных последовательностей, разбитых на режимы и отсортированных по алфавиту – ужас! Но теперь это – в прошлом. Не в том смысле, что "изъят" reference guide, а в том, что теперь документация содержит и "user manual" – 46 сравнительно небольших глав, каждая из которых посвящена одной из сторон работы редактора. Получить помощь в vim и раньше было просто: набрал help [что-то] – и получи ответ… Знать бы только, какие бывают эти "что-то" – вот в чем была трудность. Теперь, просмотрев USER MANUAL, можно смело браться за редактирование: если чего-то не вспомнишь – найдешь. А в качестве небольшого, но полезного дополнения – коротенький справочник в отдельном файле – quick reference. Bravo, Bram!
Теперь о "нововведениях" первого порядка. Тех, что, на мой взгляд, существенно дополнили функциональность vim.
Прежде всего это возможность вертикального деления окон (:vsplit или CTRL-W v). На первый взгляд – ничего особенного, тем более – в графической среде. Но это – только возможность. А как ею воспользуется программист с фантазией? Первое следствие – реализация нового режима: diff-mode. Набираем:
vimdiff file1 file2
(файлов может быть до четырех)… и появляются два вертикальных окна, в которых совпадающие строки – скрыты, а отсутствующие или несовпадающие – выделены цветом. С различиями допустимы все мыслимые операции: переходы, удаления, копирования и т.п. Пишущих под unix, трудно этим удивить: замечательная утилита diff тоже очень много умеет, но что бы сам редактор…
Обратите внимание на "скрытие" совпадающих фрагментов в окнах diff-mode. Видите символы "плюс" левее начала строки? Переводим туда маркер, нажимаем "пробел" – текст открылся. Набираем
Подробное описание заняло бы слишком много места, но полезность новшества сомнений не вызывает.
Следующее "приобретение" – приведение существовавшего и ранее механизма подключения пользовательских скриптов к популярной форме plugin's. Как программист, я не вижу большой разницы в том, загружается скрипт строкой в конфигурационном файле или помещением в каталог /plugin, но – веление времени. Отныне всякий скрипт, помещенный в каталог /plugin, будет загружаться при запуске vim автоматически.
А вот еще один каталог, которого не было в предыдущей версии – /ftplugin. Это тоже скрипты, но загружаться они будут в зависимости от типа открываемого файла. Раньше типом файла определялась только подсветка синтаксиса, а теперь – и некоторые особенности редактирования. Очень рационально.
Принято считать, что vim создан "программистами для программистов", и предназначен прежде всего для написания текстов программ. То ли "онтогенетическое родство" программистов и Сети сыграло свою роль, то ли слишком многие программисты стали web-master-ами, но посмотрите на новую возможность: vim позволяет редактировать файлы в кодировке UTF-8 – это при том, что еще не все browser-ы и mail-клиенты умеют ее читать!
Как часто адептам unix приходится слышать о "трудностях" работы с командной строкой… Ни авто-заполнение, ни неисчерпаемая "история команд" не убеждают оппонентов, предпочитающих всему на свете "drag'n'drop". И вот еще одна попытка убеждения от vim 6.0: теперь, набрав
Использовали ли Вы когда-нибудь выделение вертикальных блоков? Очень удобно при работе с таблицами. Вот если бы еще блок можно было отмечать независимо от того, есть в нужной позиции символ или нет, то есть пустые позиции автоматически заполнялись бы пробелами… Ну, теперь – можно! Разрешаем "виртуальное редактирование" командой:
set virtualedit=block
Вместо block может быть insert, или – all: в зависимости от того в каком режиме нам это требуется, и – пожалуйста.
"Нововведениями" второго порядка, я бы назвал те, которые изменили функциональность vim не так существенно. Это, конечно, вопрос субъективный, так что, прошу не судить слишком строго.
На мой взгляд, это:
"Нововведениями" третьего порядка я бы назвал те, которые не имеют отношения непосредственно к коду vim. Это упоминавшиеся plugin's, файлы описания синтаксиса, вспомогательные утилиты, файлы меню. Среди них есть очень существенные для оценки vim как целостного продукта: "третьестепенность" в данном случае не коррелирует с "не важностью".
Прежде всего это global plugin's:
Количество скриптов, зависящих от типа редактируемого файла пока что на порядок меньше, чем количество файлов-описателей синтаксиса, но и оно впечатляет: 26. Хочется верить, что такое число языков программирования, редактируемых в соответствии с их особенностями, удовлетворит большинство пользователей.
Что касается файлов описания синтаксиса, то он еще более расширился, превысил три сотни и в этом смысле vim, кажется, вне конкуренции.
Из "новичков" каталога /tools можно отметить:
Отдельно стоит упомянуть menu.vim – этот файл "вырос" относительно предыдущей версии почти вдвое. Функциональность увеличилась соответственно. Все возможности vim он, конечно, не охватывает, но для первого знакомства – вполне достаточно. Полезен также при использования команд, потребность в которых возникает "раз в год".
Осталось упомянуть файлы описания цветовых схем. Их 12, но мне больше всего понравилась схема с незатейливым названием "default". Дело вкуса.
Полное описание отличий версии 6.0 можно найти в /doc/version6.txt. Но пусть Вас не удивляет размер этого файла – без малого 160 кб.
Таким вот образом, идеи и исполнение многих людей "вылились" в новую версию популярного редактора. А жизнь, между тем, не останавливается. Каталог скриптов (теперь – plugin's) на vim-online все пополняется и среди них есть довольно интересные. Например – EasyHtml.vim. Представьте: редактируем html-код, позиционируем маркер на tag-e, нажимаем
Или – colorize.vim. Вы никак не привыкните к переходам из режима в режим? Загрузите colorize.vim, поместите его в каталог /plugin, и цвет фона всегда укажет – находитесь Вы в режиме вставки (insert mode) или нет.
Еще один вариант spellchecker-а с использованием интерпретатора Ruby? Пожалуйста – spellcheck.vim.
А vimtips.vim будет показывать Вам при каждой загрузке по одному совету из базы данных все того же vim-online. Если Вы ему позволите, конечно.
Vim
![]() | |
![]() | |
![]() | |
| Vim. Быть может он действительно - лучший? [04.09.2001, Владимир Попов, popov_inm@yahoo.com] |

| За годы общения с вычислительной техникой мне пришлось увидеть множество средств набора и редактирования текста. Консоли "МИРа" и "Саратова", терминалы ЕС, уже вполне "зрелые" редакторы DEC-овских VMS/RSX, "радуга" редакторов под MS DOS и так далее. Менялись платформы и операционные системы, средства вывода и ввода, неизменной оставалась потребность в создании программного обеспечения, а значит - в программах, с помощью которых это ПО создается. Есть, правда, еще IDE (интегрированные среды разработки), есть visual (визуальные) средства, но нет программирования без программ-редакторов. Текстовые процессоры, а тем более издательские системы - принципиально другие продукты, для написания программ явно избыточные с одной стороны и недостаточные с другой. Именно хорошего редактора не хватает в стандартном наборе современного пользователя MS Windows, коих большинство среди сидящих за IBM PC. Можно добавить: к сожалению, но факт от этого фактом быть не перестанет. Будет неправильно сказать, что написание текстов программ - дело только профессиональных программистов. Даже если не принимать во внимание энтузиастов, то отмахнуться от того обстоятельства, что всякий, задумавший обзавестись своей страничкой в Интернет, попадает в положение программиста - просто невозможно. Число последних неминуемо "стремится" к числу пользователей Сети, имя которым - "легион". Поэкспериментировав какое-то время с MS Word, Adobe Photoshop и FrontPage, большинство таких программистов-"неофитов" приходит к выводу, что лучший инструмент написания html-кода - notepad. Вам не приходилось слышать такое утверждение? Оно не беспочвенно: notepad едва ли не единственный именно редактор среди наиболее распространенных программ для MS Windows. "Именно редактор" означает в данном случае инструмент для эффективного ввода и модификации текста, не отягощенный средствами создания лучшего дизайна, расширенными возможностями печати и тому подобное. Но если такую популярность получил notepad - редактор, уступающий по своим возможностям даже вспомогательным встроенным редакторам интегрированных сред разработки вроде Borland-овских Turbo и оболочек вроде Far, то, может, имеет смысл обратить внимание на редакторы, используемые профессиональными программистами? В мире UNIX самым заметным в этом классе, безусловно, является vi (VIsual editor) и его современный "потомок" - vim (Vi IMprooved - улучшенный). Он чаще других вызывается по умолчанию, его интерфейс чаще упоминается рядом с определениями "совместимый" и "подобный" и так далее. Но, быть может, это - дань традиции? В большой степени - да. Утверждение о том, что этот редактор - лучший, нуждается в доказательстве. Некоторые доводы в пользу этого и приводятся ниже. Прежде всего, условием необходимым, хотя и не достаточным, является функциональная полнота редактора: он должен уметь все, что только может потребоваться при работе с текстом. Термин "все" конкретизировать невозможно, но достаточно будет сказать, что vim имеет ограниченное только здравым смыслом количество буферов (фактически - открытых файлов) и окон (в данном случае название "окно" очень точно отражает суть происходящего: есть файл, а есть окно, через которое мы содержимое этого файла рассматриваем). Окно может занимать всю площадь экрана, а может - часть, причем любую, то есть экран может делиться как по горизонтали, так и по вертикали. Переключения - произвольны. Сказанное справедливо как для графического, так и для консольного режимов. Кроме стандартной для "взрослых" редакторов возможности создания макрокоманд (фиксированных последовательностей элементарных команд редактора), есть развитый язык программирования. Редактор имеет 5 режимов (modes): обычное экранное редактирование, когда нажатиеПо умолчанию Здесь мы подходим ко второй сильной стороне vim - исключительной модифицируемости. Нужно ли это? Берусь утверждать: да. Меняются клавиатуры, хотя их типов, впрочем, и в каждый конкретный период - предостаточно, если говорить не только об IBM PC. Меняются устройства ввода, задачи, наконец. У vim как у достойного члена семейства наиболее типичных UNIX-приложений настройки хранятся в конфигурационном файле, каких, в свою очередь, может быть множество. По одному на тип решаемых задач, например. И название и местоположение конфигурационного файла традиционно для UNIX: .vimrc в "домашнем" каталоге пользователя. Пример (vimrc_example.vim) - в каталоге самого vim (для Linux обычно -/usr/share/vim/vimNN/, где NN - номер версии. Одним словом, если вы "создаете" свой редактор практически сами, то такое решение претендует на звание "решение навсегда": не в смысле неизменности, разумеется, а в смысле постоянной готовности соответствовать вашим новым требованиям. Впервые познакомившемуся с возможностями конфигурации vim, трудно устоять перед соблазном "подогнать" его под "милый сердцу" прототип: для кого-то - MultiEdit, для кого-то - nedit, а для кого-то - и notepad. Это не сложно. Однако не стоит торопиться: vim имеет возможности, которых, вполне возможно, не было у "прототипа", а познакомившись с ними однажды, вы, быть может, уже не захотите от них отказываться. Перечислить все эти возможности вряд ли удастся уже хотя бы потому, что как всякая открытая система, vim развивается усилиями многих людей и быть в курсе всех разработок просто не реально. Попытаюсь перечислить наиболее известные возможности. Подразумеваются настройки "по умолчанию", ввод в "нормальном" режиме, кроме тех случаев, когда оговаривается иное. Двоеточие говорит о переходе в командный режим. Разумеется, можно как угодно позиционироваться в файле: Весьма удобным является механизм меток, к которым всегда можно вернуться: Еще одна возможность, довольно редко встречающаяся у редакторов, - множество именованных буферов. В последних версиях MS Windows это называется многостраничным clipboard-ом. Буферы, как и метки, метятся одной буквой: y - копировать (yank) d - вырезать (cut) p - вставить (paste). Причем вставлять можно как перед ( <[p> ), так и после ( <]p> ) позиции под курсором. Если эта позиция - начало или конец строки, то разница довольно существенна. Разумеется, есть множество средств поиска/замены: Опции: { global-confirm-insensitive case }, что означает: { все-с запросом подтверждения-игнорируя регистр } Для тех, кто знает, что такое регулярные выражения, отметим, что они в операторах поиска/замены - работают. Не нужно пугаться "многословного" синтаксиса: вспомните о программируемых клавишах и вы поймете, что достаточно ввести нужную фразу в .vimrc лишь однажды. Разумеется, есть полный список файловых операций. Перечислять все вряд ли имеет смысл: в них нет ничего "экзотического". Интереснее упомянуть "автозаполнение": набрав пару-тройку первых символов и не выходя из режима "вставки", нажмите Разумеется, можно отказаться от сделанных изменений (undo), введя просто , а можно восстановить сразу всю редактируемую строку: . Иногда бывает нужно отказаться от отмены изменений (undo the undo's). Можно и это: Можно изменить регистр символа под курсором нажатием <~>. И, напоследок, часто весьма облегчающая жизнь точка <.> - повторить последнюю операцию. Теперь понятно, почему не достаточно одного режима: все разнообразие функций трудно покрыть только функциональными клавишами, а использование клавиш обычных требует отказа на какое-то время от режима экранного редактирования. Среди множества установок, задаваемых командами ":set ..." есть и задающая режим вставки как действующий по умолчанию, что делает vim похожим на большинство экранных редакторов. Попробуйте. И, скорее всего, вы убедитесь, что заданный по умолчанию разработчиками "нормальный" режим с точки зрения затрат времени экономичнее. Похожая ситуация с предложенными разработчиками для использования по умолчанию клавишами. Для не знакомых с UNIX назначение клавиш для поиска, копирования, вставки кажется непривычным. Однако, если вместе с vim вы будете осваивать, например, Linux, то очень скоро обнаружите, что те же клавиши "работают" и при просмотре man-страниц, и в популярной screen, и даже для стандартного интерпретатора командной строки bash, оказывается, существует vi-подобный режим. Одним словом, в UNIX-среде освоение vim либо проходит легче, если вы не совсем "чайник", либо "пригодится" при дальнейшем знакомстве с системой. Разумеется, vim имеет подсветку синтаксиса, причем для десятков языков программирования и конфигурационных файлов. Для версии 5.6 подкаталог syntax содержит 189 файлов общим объемом более мегабайта, что, в свою очередь, составляет почти пятую часть объема дистрибутива. Разумеется, vim прекрасно документирован: без малого 2 мегабайта файлов в текстовом формате, снабженных системой перекрестных ссылок и поиска. Плюс небольшой скрипт, превращающий эти текстовые файлы в универсальные html. Разумеется, vim портирован практически на все платформы. Включая все известные ОС от MicroSoft, не в упрек будь сказано софтверному гиганту. И это еще не все. Полтора десятка утилит, разработанных специально для vim, дополняют и без того немалый список возможностей. Среди них средства для создания перекрестных ссылок с файлами других форматов, "рисование" псевдографикой, таблицы, дополняющие форматеры, конвертеры и тому подобное. Ну, и, разумеется, vim бесплатен. Если быть точным, то за него не обязательно платить. Плата же, если таковая случится, переводится в фонд помощи детям Уганды. Не единичный в мире Open Source, но, тем не менее, весьма благородный жест разработчиков. Нужно признать, что vim сложен или, по крайней мере, непривычен для пользователей не-UNIX систем. Именно им пригодились бы все возможности конфигурирования, но их изучение кажется в начале пути таким "изнурительным"... Не стоит отчаиваться. Кроме документации в составе дистрибутива vim, стоит познакомиться с сайтом www.vim.org. Там можно обнаружить ссылки на сайты энтузиастов vim, предлагающих свои конфигурационные файлы для разных операционных сред. Очень интересен сайт , где все желающие делятся своим опытом работы с vim. На август 2001-го на сайте - более 100 советов, среди которых нет бесполезных, а тем более неверных. В заключение нужно сказать о недостатках. Не без этого. Внутренняя сложность vim может сделать его довольно медлительным на "слабых" машинах. Заметное время уходит на поиск, медленно может перемещаться маркер в "визуальном" режиме. Заметить это можно, повторюсь, только на машинах типа Pentium-166, например, но - можно. Использование клавиш помимо функциональных предполагает, что включена не "ru"-раскладка. При работе с текстами программ это, как правило, не важно, а вот если обрабатываемый текст - исключительно кириллица, то переключение раскладки каждый раз, когда потребуется команда, вызываемая алфавитными клавишами из "нормального" режима, - раздражает. Быть может, стоит для работы с подобными текстами иметь свой конфигурационный файл с "акцентом" на использование функциональных клавиш, не зависящих от раскладки клавиатуры. А попробовать, все-таки - стоит. Особенно работающим в разных операционных средах. Если вам действительно нужен редактор, попробуйте и вы, почти наверняка, не пожалеете. Парадоксально, но, признав некоторую сложность vim, сейчас я попытаюсь обосновать утверждение о его исключительной простоте. Парадокса, собственно, никакого и нет: все зависит от того, с чьей позиции смотреть. Для пользователя, только что загрузившего дистрибутив vim, он действительно сложен. Достаточно сказать, что в файле index.txt свыше 1200 строк, а ведь этот файл - всего лишь перечень доступных команд с краткими описаниями в одно, максимум два предложения. 1000, пусть 500 команд не способствуют желанию познакомиться с редактором. Не будем торопиться. Во-первых, команды довольно часто дублируются. Во-вторых, часть из них унаследована от vi и предполагает возможность ввода на любом алфавитно-цифровом терминале. Современному пользователю более естественным покажется использование функциональных клавиш и клавиш позиционирования курсора, мыши, наконец. Все эти возможности vim, разумеется, поддерживает, но и старые варианты набора команд не отменяются. Список сокращается: предположим, до 150 команд. Не так уж и много для редактора, который может "все" (уточнять и в этот раз не будем), но есть ли основания говорить об "исключительной простоте"? Как это ни странно, есть. И основания эти следующие: Таким образом сконфигурированный, документированный и дополненный системой меню vim становится "образцом дружественности" к пользователю. Вас что-то не устраивает? Cделайте так, как считаете более удобным! Для этого не нужно обладать какими-то специальными знаниями, но что-то ДЕЛАТЬ - действительно нужно. Здесь придется еще раз признать (и напомнить), что vim написан программистами и для программистов. Но поскольку ряды последних все ширятся, то и круг пользователей также должен расширяться. Если это не так, то, возможно, и потому, что вышеупомянутые более чем 1000 строк одного перечисления команд кого-то "оттолкнули" при знакомстве. Именно на этого кого-то и ориентирован данный материал. Для начала стоит объяснить, зачем все-таки нужно такое количество команд, если большинство редакторов вполне обходится системой меню. Для примера предлагаю взять части текста, выделяемые для выполнения над ними какой-то операции и называемые, как правило, текстовыми объектами. Можно выделять их мышью, как это и делается во многих редакторах: решение универсальное, но крайне не эргономичное - попробуйте выделить абзацев 5-6. В общем случае текстовым объектом может быть символ, слово, предложение, абзац, текст в целом плюс блоки, которые, в свою очередь, могут быть ограничены угловыми, квадратными, фигурными или круглыми скобками (мы ведь говорим о тексте программы). Курсор (или указатель мыши) в момент выбора также может находиться в начале, конце или внутри текстового объекта. Можно, конечно, "метить" начало и конец текстового объекта - но это бывает так утомительно... Согласитесь, также, что меню, отражающие все эти возможности, выглядело бы весьма громоздким. А вот как это сделано в vim: если курсор в начале объекта, то первая буква команды выделения - (add), а если внутри, то (inner). Теперь осталось указать, что является объектом. Вторая буква - Логика интерфейса такова, что если вы обнаружили какую-то возможность в одном из режимов, то почти наверняка найдете аналогичную в другом. Упомянутые в первой статье "Универсальными" могут быть не только последние символы команд, как в предыдущих примерах, но и первые. Прежде всего, это уже упоминавшиеся Некоторые символы сохраняют свое назначение и в командном режиме: - фильтр, <@x> - выполнить содержимое регистра 'x', '<' и '>' - уменьшить и, соответственно, увеличить "отступ" строк. Вообще, командный режим стоит несколько "особняком", поскольку является практически самодостаточным: в нем доступны практически все действия, инициируемые командами остальных режимов, разве что объем ввода будет больше. Зато текст команд достаточно "прозрачен". Например: :buffer N - перейти к буферу N; :Print - распечатать; :set - показать или установить опции. А количество вводимых символов уменьшается благодаря допустимым сокращениям и уже неоднократно упоминавшемуся автозаполнению. Перечислять эти самые "EX" команды нет смысла - их без малого три сотни, а вот просмотреть этот список - стоит. Хотя бы для того, чтобы знать, какие еще возможности имеет vim. Кроме команд, дублирующих команды других режимов, мы найдем здесь команды управления буферами (==открытыми файлами), меню, "привязкой" команд к клавиатурным последовательностям (map), средства программирования, индексации (tags), управления редактором и многое, многое другое.< BR> Так мы подошли к следующему достоинству vim, обеспечивающему его "простоту" - исключительным возможностям настройки. Прежде всего обратимся к конфигурационному файлу vimrc (для графического режима - gvimrc). На стоит взять vimrc.forall - файл написанный Свеном Гуксом (Sven Guckes) "на все случаи жизни". Файл прекрасно прокомментирован и действительно при некоторых модификациях может устроить многих. Но лучше использовать его как "руководство к действию". Познакомившись для начала с командой map: map \\ которая заменяет set langmap=йцу...ЙЦУ...;qwe...QWE... Три точки в данном случае означают "все остальные символы на клавиатуре" в нижнем и верхнем регистрах для раскладок ru и us. <;> перед 'qwe' отделяет "подменяемый" набор от "подменяющего". Точку с запятой (в наборе, а не разделяющую) и двойные кавычки нужно исключать (quote) с помощью backslash (\), как обычно. Данная опция делает не нужным переключение раскладки клавиатуры, когда требуется латинский символ в нормальном режиме - несуществующий, как видите, недостаток vim, о котором я писал в первой статье. Спасибо всем указавшим на эту опцию. Что касается Свена Гукса, то, позаботившись о вводе таких необходимых ему умляутов, он действительно не учел нашу привязанность к кириллице - вполне простительно для жителя Берлина. Следующая секция vimrc.forall научит использовать сокращения - abbreviations. Дело вкуса. Занятно использовать сокращения в качестве "автокорректора" опечаток: aslo->also. Или - записной книжки: Ysnail->Sven Guckes map imap cmap Последние две команды можно заменить одной: map! map map n будет по Последующие секции, описывающие применение автокоманд для использования vim в качестве почтового клиента, PGP-шифрование и операции с синтаксисом, очень интересны, но уже не имеют отношения к разговору о "простоте" vim. Вышеизложенное должно было убедить читателя, что "не так страшен vim..." и изучать устрашающих размеров help может быть, и не придется... У меня, во всяком случае, на каком-то этапе знакомства в этим редактором сложилось впечатление, что имей я под рукой 1-2 странички подсказок... А почему - нет? Поскольку по $MyHelp myhelp.txt /*myhelp.txt* Все элементы строки, надеюсь, понятны: первый - ссылка, второй - имя файла, третий - позиция в этом файле. Файл tags - сортирован по алфавиту и, если не хотите сортировать его заново, строку нужно поместить в соответствующее место. В данном случае между строками, $LANG.... и $VIM... Готово. Запускаем vim, нажимаем Ну, а поскольку "эталоном" дружественности интерфейса долгое время считалась система выпадающих меню, то осталось посмотреть, как таковая реализуется в vim. Дистрибутив содержит файл menu.vim, активный по умолчанию только для графической среды. Для появления меню в консольном режиме во все тот же vimrc нужно вставить следующие команды: source $VIMRUNTIME/menu.vim set wildmenu set cpo-=< set wcm= map На месте amenu 10.330 &File.&Close Элементы строки разделяются пробелами. В данном случае первый из них, amenu - команда, обеспечивающая появление данной позиции меню во всех (all) режимах. Второй - число, часть до точки которого определяет позицию в главном (горизонтальном), а после точки - в выпадающем (вертикальном) меню. Подобным образом лексемы до и после точки третьего элемента строки представляют собой текстовое содержание позиции меню. Пробелы и точки в составе этих лексем исключаются (quote) с помощью обратной косой черты (backslash). Допустим только один служебный символ - Таким образом vim может обретести интерфейс, проще которого (при заданном уровне функциональности) уже не будет. Все желаемые усовершенствования Вы можете сделать сами. Средств для этого - достаточно. Не стану утверждать, что путь к этой "простоте" так уж, извините за тавтологию, прост, но "нет ничего ценнее хорошего инструмента". В том числе и для программиста. Многих возможностей vim, кстати, ни, первая ни вторая статья даже не касались. Вне рассмотрения остались интеграция с Perl и Python, программирование пользовательских функций, форматирование текста и многие другие темы, достойные отдельного обсуждения. |
![]() |
Vito
![]() |
![]() |
Редактору vi -- программе и человеку | ![]() |
![]() |
|
| Компьютерное Обозрение #14, 12 - 18 апреля 2000 URL: | |||||
| Первоапрельское настроение, весенний авитаминоз и, наконец, бурный поток информации о программах-однодневках, ориентированных на потребительский рынок, -- вот неполный перечень причин, побудивших взяться за написание этой статьи. Ну а если серьезно, -- предмет нашей беседы представляет собой одно из самых ярких явлений технологической культуры, на протяжении двадцати лет существования которого неоднократно предпринимались попытки "примерить лавровый венок" текстового редактора всех времен и народов. Но... ни одна из существующих на сегодняшний день замечательных, удобных, красивых и каких угодно еще программ для редактирования текста не стала культовой. Тяжеловесные мастодонты, включающие в себя "почти все" возможности и использующие операционную систему "в качестве драйвера", могут быть массовыми, эффективными для решения ряда задач, им посвящаются пудовые книги в "конфетных" суперобложках. Многочисленные легковесные редакторы, соревнующиеся между собой в удобствах и минимализме, также завоевывают симпатии большого числа пользователей. Однако сообщество пользователей "остальных" (не-vi) текстовых редакторов обладает одним примечательным свойством -- здесь принято менять симпатии с невиданной легкостью, "...как перчатки". И только попавшие в "цепкие лапы vi" превращаются в настоящих ортодоксов: "нет редактора, кроме vi, и Билл Джой -- пророк его". Слабонервным следует удалиться... Когда эта статья задумывалась, автор буквально попал в тупик -- ну что можно написать о программке размером всего неполных 260 KB. Даже и стыдно как-то говорить о такой чепухе, когда все, что меньше 10 MB, уже и за программу не считается. Но, как говорится, охота пуще неволи -- и вот, слушайте неправильную сказку о самых неправильных текстовом редакторе и его авторе-хакере. Неправильной сказка будет потому, что она страшно начинается... ![]() Правда, некоторые ошибочно полагают, что vi на самом деле означает римскую цифру "шесть", а настоящим автором этой программы являлся знаменитый Демьен Торн, которому посвящен не менее знаменитый роман "Знамение". Однако в некоторых преданиях компьютеров дальнего Севера, например, утверждается, что роман был написан забытой полярниками на дрейфующей льдине PDP-11 с помощью самого редактора vi, так что вопрос первичности дьявола и vi до сих пор остается открытым. Большой научный интерес представляет эпос Компьютеров-акынов, ведущих кочевой образ жизни. В нем присутствует несколько преломленный образ Винсента Идиоса, витиевато переплетающийся с мотивами индуизма, буддизма и Ислама. В частности, многие ученые, ежедневно работающие с vi, считают достоверными легенды о "Шестируком Винсе" -- по их мнению, именно такое количество рук и обязательная четырехпалость являются однозначно оптимальной комбинацией для нормального пользователя vi. Самые веселые в Silicon Valley Сказки сказками, а компанию, одним из основателей которой по сей день является настоящий автор vi, заслуженно считают в Силиконовой Долине самой забавной. Особенно в Апрельский День Дурака (April Full's Day). Существует даже небольшой исторический материал, позволяющий уверенно утверждать, что богатые не только плачут. В 1985 г. в этой компании 1 апреля взяли, да и потихонечку вывезли... офис своего чуть ли не самого главного начальника. Пришел он на работу -- а работы-то и нет... В следующем, 1986 г., опять же в злополучном офисе "самого", 1 апреля возник из ниоткуда Фольксваген Жук. Ровно через год отметили автора vi, установив его Феррари на пьедестал перед основным административным зданием компании. В 1988 г. разгул достиг апогея (по советским меркам, конечно же) -- кабинет флагмана Компании был превращен в площадку для гольфа. 1 апреля 1989 г. смеялось до упаду все прогрессивное программистское человечество -- Компания объявила борьбу с ошибками в ПО (ошибка по-английски -- bug), для чего... упаковала свой административный корпус в целлофан, провела дезинсекцию и украсила получившееся в результате огромным транспарантом "NO BUGS". В последующие годы Компания запускала в аквариумы свои компьютеры и работала на них в водолазных костюмах, и веселилась, веселилась, веселилась... И, надо сказать, что поводы для веселья у Компании находились всегда. Хотя бы потому, что "в миру" она известна под названием Sun, а в числе основателей ее значится один из самых ярких хакеров, очень много сделавший для "освобождения" и развития ОС Unix, -- Вильям Джой (William Joy). Да и забавной Sun считают не случайно -- несмотря на все заверения аналитиков и всю статистику рынка дела у Sun идут неплохо, а в своем (корпоративном) секторе ее позицию и авторитет можно считать незыблемыми. Другой Билл В программной индустрии "другой Билл" -- это титул. За ним кроются годы работы, заслуженное уважение в кругах профессионалов и, наконец, недюжинные способности в областях, весьма далеких от компьютинга. Хотя Биллу Джою не занимать способностей в своей профессиональной области -- ему мы обязаны существованием и всех версий Берклиевской ветки ОС Unix, и редактора vi, и сетевой файловой системы NFS, и архитектуры микропроцессоров семейства SPARC. К сожалению (с точки зрения журналиста, конечно же), Билл Джой -- очень скромный человек, и найти обширную информацию о нем трудно. Хотя принадлежащие его перу известные труды, в частности самое "свежее" эссе "Почему будущее не нуждается в нас" ("Why the future doesn-t need us"), позволяют достаточно точно представить себе облик настоящего хакера и просто веселого человека, "совсем другого Билла". В 1975 г. один из авторов ОС Unix, Кен Томпсон, привез в свою альма матер -- Университет Калифорнии в Беркли, новейшую по тем временам версию Unix. Два талантливых студента, Чак Хэйли и Билл Джой, буквально влюбились в новую ОС и приступили к разработке компилятора с языка Pascal. Как и положено в Unix, для начала понадобилось сделать ОС "под себя", и Джой начинает искать подходящие технологические средства. В 1976 г. состоялась, возможно, определяющая всю дальнейшую историю встреча Джоя и британского программиста из Лондонского колледжа Королевы Марии (Queen Mary) Джорджа Колоуриса (George Coulouris), который привез в Беркли свой редактор em. По воспоминаниям Колоуриса, "...однажды за соседним терминалом оказался этот блестящий хакер -- студент Билл Джой, который сообщил мне, что пишет компилятор с Pascal. Я показал ему em, и он сказал: "симпатично, отделу технической поддержки наверняка понравится...". Впоследствии оказалось, что em, созданный с учетом условий маленького ВЦ колледжа, совершенно непригоден в огромной системе Беркли... Примерно через неделю я увидел Джоя за модификацией исходных текстов em... Затем на основе em Джой создал редакторы ex и vi...". |
![]() |
|
Билл Джой. 1985 г. |
К середине 1978 г. Джой усовершенствовал систему, предопределив еще большую ее популярность, -- работа над vi требовала поддержки самых разных алфавитно-цифровых терминалов (АЦТ), и "другой Билл" создает неотъемлемый элемент любой современной ОС Unix -- интерпретатор специального языка, позволяющий прикладным программистам "навсегда забыть" о различиях всевозможных АЦТ. Знаменитая подсистема termcap жива и здравствует по сей день в любой версии ОС Unix.
Начиная с этого момента, Джой создает "вторую редакцию BSD", которая чуть ли не мгновенно расходится тиражом более 70 экземпляров (не следует думать, что это мало -- в те времена на одной Unix-машине вполне могли работать несколько сотен пользователей). Джой самостоятельно берет на себя практически всю ответственность за "детище": он дает консультации по телефону, вносит изменения в дистрибутив в соответствии с отзывами пользователей и продолжает совершенствование ОС. Все это отнимает кучу времени, и когда в 1982 г. он получает предложение от группы энтузиастов, собирающейся создать компанию, специализирующуюся в проектировании рабочих станций для ОС Unix, Джой с радостью соглашается... Восход "солнца" начинается.
А что же vi?
Первый из них -- Путь, но им
редко пользовались для столь
ничтожной цели.
Р. Желязны. Хроники Амбера
Что же такого магического в этом редакторе двадцатилетней давности? Почему в любой конференции, посвященной любой версии ОС Unix, от вас обязательно потребуют знание этого редактора? Почему свирепый модератор конференции беспощадно прервет флейм по поводу недостатков vi? И наконец, почему никто из профессионалов не сможет кратко и быстро ответить на первый из этого короткого перечня вопрос "почему"?
Давайте попробуем разобраться по порядку. Для начала уясним, как выглядит (с точки зрения пользователя) vi. Даже такая простая попытка знакомства уже вызывает трудности -- vi выглядит... никак. Хотя, для преодоления испуга, можно попробовать привести пример более "дружелюбных" и удобных модификаций vi, оснащенных GUI (одна из удачных разработок vi-последователей, Elvis, доступна чуть ли не для всех ОС).
Второй вопрос, с ответом на который следует определиться раз и навсегда, трудно даже сформулировать. Скажем так: чем отличается работа по редактированию текста в vi (и отличается ли вообще) от аналогичных действий в более привычных, пользовательско-ориентированных редакторах? И здесь уместна (даже целесообразна) вполне допустимая аналогия со... стилем поведения хорошо знакомых экранных персонажей. Действия пользователя обычного ("дружелюбного") GUI-ориентированного текстового редактора напоминают... поведение персонажей Сталлоне -- вот он целится курсором мыши, нажимает на курок (извините, на кнопку), производит "выстрел". В vi все не так -- здесь пользователь, скорее, Коломбо, и даже если у него есть "пистолет" (курсор мыши), применить его, вероятно, не придется (короче говоря, забудьте его дома -- руки болеть не будут, это без шуток: туннельный синдром и vi -- понятия несовместимые).
Как бы продолжая отвечать на второй вопрос, хочется отметить самую важную особенность vi, подтверждающую точность аналогии "пользователь-Коломбо": vi -- командный редактор, требующий развитого алгоритмического мышления. Собственно говоря, основная прелесть vi как раз и заключается в этом "алгоритмизме", становящимся явным по мере освоения редактора. Пользователь vi не просто вынужден думать, он вынужден думать как программист (естественно, допустим и примитивный подход, но... то, что годится для Коломбо, Рэмбо подходит с трудом). Далее это утверждение будет понятно.
И наконец, последнее. vi -- важнейший интеграционный механизм ОС Unix, позволяющий достаточно "прозрачно" и эффективно создавать новые сущности при необходимости (и упорно мешающий желающим делать это просто так, нарушая основной закон Оккама). В этом утверждении кроются два важных следствия. Во-первых, несмотря на наличие нескольких очень мощных реализаций vi-совместимых современных редакторов, например для ОС Windows, одного только vi слишком мало, для полноценной работы желающим "юниксфицировать" Windows понадобится какая-либо программная "прослойка" -- имитатор Unix. Во-вторых, здесь кроется ответ на некоторые возмущенные письма читателей, содержащие следующие ключевые фразы: "...я программист...поставил Unix такой-то...в нем даже нет интегрированной среды разработки...удалил и вернулся к Borland C++ Builder...". Простонародным языком это переводится как "а слона-то я и не приметил...". Unix и есть интегрированная среда разработки, в которой vi играет далеко не последнюю роль.
Ну а теперь подробнее... Алгоритмичность vi становится понятна после знакомства с форматом командных языков (да, у этого малыша есть мощные командные языки). Для визуального режима редактирования его можно представить в следующем виде:
повторитель команда ограничитель-указатель
Повторитель -- это число, указывающее, сколько раз должна быть выполнена команда. Например, передвижение курсора на начало третьего после текущего слова можно осуществить "по-Рэмбовски" -- удержанием стрелки клавиатуры и "выцеливанием" момента совпадения курсора и начала слова, а можно "по-Коломбовски": "3 W". Если в этом случае достоинства Коломбо неочевидны, то при необходимости отредактировать текст программы с шестого слова, начинающегося со строки ClassDef, Рэмбо проигрывает очевидно -- ему предстоит продолжительное "путешествие стрелками", Коломбо же ограничится "6/ClassDef".
Перечень команд vi достаточно обширен и включает в себя всевозможные перемещения курсора (побуквенно, пословно, построчно, по предложениям, по абзацам, с поиском подстроки, в начало/конец строки, в первый отображаемый символ строки и т. д.), команды изменения текста, копирования/вставки и пр. Запоминаются они достаточно просто, единственный способ их выучить -- пользоваться vi, а к числу полезных правил относится "регистровая инверсия" (если команда "z" выполняет определенное действие, то команда "Z" -- как правило, обратное действие). Например, если команда "x" удаляет символ "после" курсора (на экране -- под курсором), то "X" -- перед курсором.
Ограничитель-указатель (ОУ) используют многие команды vi ( в тех из них, что допускают одновременно наличие и повторителя, и ограничителя-указателя, последний является частью или параметром команды). Смысловое значение -- специфицирование объекта, над которым будет выполнена команда. В его роли обычно выступает... одна из команд перемещения курсора.
Среди всех команд vi особо выделяется одна -- "!", позволяющая передать указанный следующим за ней ОУ фрагмент текста на вход любой программы X Unix и заменяющая этот фрагмент результатом выполнения "X". С помощью "!" можно по-настоящему "тесно" интегрировать vi с остальными утилитами ОС -- в заботливых руках vi умеет, например, проводить проверку правописания "на лету" (с использованием внешней независимой программы-spellchecker), очень красиво форматировать обычный текст (достаточно использовать внешний форматизатор), искать и подставлять синонимы из лингвистической сети WordNet, заменять сложные математические выражения на каком-либо интерпретируемом языке на результат их вычисления и так до бесконечности...
Отдельный и очень выразительный командный язык подсистемы vi -- строкового редактора ex, позволяет с легкостью делать вещи, вообще немыслимые для всяких там "дружелюбных штучек". Аббревиатуры (":abbr имя расширение") дают возможность динамически (или статически) вводить сокращения для часто используемых фрагментов текста, например, определив ":abbr zz Университет Калифорнии в Беркли", в дальнейшем достаточно набрать в тексте слово zz, чтобы получить фразу "Университет Калифорнии в Беркли". Аббревиатуры можно "забывать", если они начинают мешать. Ну а для настоящих профессионалов vi/ex предоставляет просто фантастические средства -- команды ":map" и ":map!", 36 буферов для копирования/удаления фрагментов текста, 26 "закладок"...
Почему мы любим vi?
|
Два варианта исполнения vi v классический терминальный и более современный (Elvis), с возможностями рендеринга html-страниц |
Скорее всего, потому, что vi заставляет думать -- а это, как известно, процесс хоть и утомительный, но весьма полезный: в ходе такой "примитивной" работы, как редактирование текста, vi иногда "подсказывает" удивительные по красоте, лаконичности и полезности решения, составляющие, по большому счету, основы мастерства под названием "программирование". И еще потому, что "ухоженный" vi позволяет смело "вывешивать" на экране кнопочку с надписью "Мой компьютер" -- этот компьютер действительно мой, потому что я "сделал его" для себя, под свои задачи, интересы, способности. Ну и, наконец, потому что мы любим ярких, талантливых и удачливых людей, таких, как Билл Джой -- автор культового редактора.
| © Издательский Дом ITC. 1993-2002. Все содержание, включая идеи оформления и стиль, являются объектом авторского права. Копирование и размещение материалов на других сайтах без письменного разрешения ООО "Издательский Дом ¦ТС" не допускается. |
Влияние LaTeX
Взаимосвязь между TeXmacs и TeX/LaTeX гораздо более очевидна и бросается в глаза уже при беглом знакомстве с интерфейсом программы. Скажем, в меню мы обнаруживаем подменю , которое позволяет сделать выбор между такими вариантами, как , , , . Что это такое? Да не что иное, как стандартные классы документов LaTeX. Точно так же не вызывает сомнения происхождение большинства пунктов меню , через которое в документ можно включить заголовки разного уровня, а также такие окружения, как , , , , . Здесь же находим команды, управляющие расстановкой отступов между абзацами и разрывов страниц, которые также выдержаны вполне в духе идеологии LaTeX. В общем, сама собой напрашивается аналогия с таким текстовым процессором, как LyX, где доступ к командам LaTeX осуществляется именно с помощью подобных элементов пользовательского интерфейса. Подобно LyX, TeXmacs изначально ориентирован на создание структурированного документа, оформление которого в соответствии с выбранным стилем программа берет на себя. Единственное внешнее отличие (правда, говорящее, на мой взгляд, не в пользу TeXmacs) заключается в том, что здесь можно лишь вставлять различные элементы структуры, но нельзя, например, оформить уже набранный абзац в качестве заголовка того или иного уровня.На самом же деле разница гораздо глубже, ибо TeXmacs - вовсе не графическая оболочка для LaTeX, а совершенно самостоятельный текстовый процессор. Поэтому наличие аналогов для распространенных команд LaTeX здесь не дань необходимости, а плод сознательного стремления автора создать программу, пригодную для подготовки документов полиграфического качества. Однако решается эта задача совершенно иными средствами. Об этом говорит уже самый формат документов TeXmacs (они имеют расширение .tm), который не имеет с LaTeX ничего общего, ибо основан на SGML. Что, в общем-то, и неудивительно: TeX/LaTeX - язык слишком своеобразный, и к тому же обладающий внутренним совершенством, так что его сложно использовать как основу для новых разработок. Соответственно, TeXmacs не нуждается в каких-либо внешних компиляторах: получив команду распечатать документ, он самостоятельно создает PostScript-файл, который потом и посылается на печать через Ghostscript. А коль скоро одна и та же программа управляет отображением текста на экране и его переводом в формат PostScript, не так уж сложно сделать результаты обоих процессов максимально близкими друг к другу. По этой причине TeXmacs, в отличие от LyX, обеспечивает не некую условную визуализацию, а настоящий режим WYSIWYG. В процессе редактирования не отображаются разве что разрывы страниц. Зато переносы расставляются тут же, причем с учетом выбранного языка.
Надо заметить, что используемый в TeXmacs алгоритм переносов также заимствован из TeX. Сам по себе данный факт не следует считать признаком тесной связи с этой издательской системой: просто файлы переносов TeX хороши тем, что распространяются свободно и дают вполне удовлетворительный результат. А использовать их ныне можно в любом визуальном редакторе - было бы желание. Так что в этом плане TeXmacs мог бы послужить образцом для всех разработчиков некоммерческих текстовых процессоров. Однако есть одна область, где TeXmacs по-настоящему зависим от TeX: для оформления текста в нем по умолчанию используются шрифты в формате METAFONT. Некоторые из них имеются в комплекте программы, но недостающие приходится брать из дерева каталогов TeX. Кроме того, использование технологии METAFONT, как известно, требует генерации растровых pk-шрифтов, для чего необходимы компиляторы, которые опять-таки не являются частью TeXmacs, а поставляются в составе дистрибутива teTeX. А вот к чему такой выбор приводит - об этом сказ особый.
Внешний вид и основные возможности
Как и большинство приложений, основанных на библиотеке Motif, Nedit управляется исключительно через меню: инструментальная панель отсутствует, что кому-то может показаться и недостатком. Мне - так нет, это компенсируется достаточным количеством комбинаций горячих клавиш и, главное, возможностью создавать собственные макрокоманды.И так, основными элементами интерфейса редактора NEdit являются строка заголовка, главное меню, строка состояния (Statistic Line, по умолчанию отключена) и собственно рабочее поле.
В строке заголовка, помимо управляющих элементов окна (определяющихся используемым оконным менеджером), указывается имя текущего файла, а также фиксируется, подвергался ли он изменениям со времени последней записи; в этом случае после имени появляется метка (modofied).
Основные возможности редактора Nedit становятся ясными, если рассмотреть его главное меню. Оно насчитывает, за исключением непременного Help, семь пунктов, для быстрого вызова которых предусмотрена комбинация клавиш Ctrl+подчеркнутая_литера:
Большинство действий, соответствующих подпунктам главного меню, также могут быть выполнены с помощью клавишных комбинаций (обычно Ctrl, реже Alt в сочетании с литерой и, иногда, клавишей Shift); что приятно, комбинации эти работают не только при латинской, но и при кириллической раскладке клавиатуры.
Рассмотрим содержание главного меню подробнее. Начиная с пункта первого -
Восстановление данных
Редактор vi работает с копией файла и после завершения редактирования или по команде сохранения содержание копии перемещается в основной файл. Если возникает аварийная ситуация при редактировании, vi сохраняет результаты работы для последующего восстановления. Обратите внимание : при возникновении подобной ситуации, vi посылает e-mail сообщение с инструкциями о восстановлении данных. Параметр -r означает восстановление. Например : команда vi -r vitalinfo используется для восстановления данных после возникновения аварийной ситуации при редактировании файла vitalinfo. После использования параметра -r для восстановления файла необходимо сохранить результат в существующий файл. Параметр -r действителен только один раз после возникновения аварийной ситуации.Возможности встроенной подсказки.
Emacs предлагает пользователю богатые возможности встроенной подсказки (On-line Help). Чтобы вызвать подсказку нужно нажать C-h. В окне минибуфера появится сообщение:| C-h (Type ? for further options)- |
Emacs предлагает так много разделов справки, что пользователь должен сообщить, какого рода справочная информация его интересует. Если ввести вопросительный знак, то Emacs разобьет экран и в отдельном окне покажет описание различных видов доступной справочной информации (см. рис. Виды доступной справочной информации Emacs.).

Виды доступной справочной информации Emacs.
| C-h a (command-apropos) |
Выводит список всех команд, содержащих заданный образец. Например, после нажатия C-h a в ответ на запрос Command apropos (regexp): введите слово "macro" в окне минибуфера. На рис. Результат выполнения команды . показан вид окна редактора после выполнения данной команды. Выведен список всех команд, в которых встречается слово "macro". К тем же результатам приводит использование пункта Command Apropos... меню Help.

Результат выполнения команды command-apropos.
| C-h k (describe-key) |
После нажатия C-h k нажмите ключевую комбинацию, соответствующую какой-либо команде. Данная команда полезна при определении свободных комбинаций клавиш. К тем же результатам приводит использование пункта Describe Key... меню Help.
| C-h t (help-with-tutorial) |
Запуск интерактивной обучающей программы. Это дает возможность получить обзор свойств редактора Emacs.
| C-h v (describe-variable) |
Введите имя переменной Emacs, и система справки отобразит текущее значение переменной и любую доступную документацию.
| C-h i (info) |
Запустите программу информации, управляемую с помощью меню для просмотра документации по Emacs (см. рис. ). Строки со звездочками - пункты меню. Переместите курсор в один из пунктов, и нажмите клавишу Enter. Команда info - хорошая возможность познакомиться со структурой информационного браузера. Самая удобная команда информационного браузера - команда ?, которая выводит важнейшие односимвольные команды. Наиболее важная из них - символ l "last node", которая позволяет вернуться назад даже после выбора ряда узлов Информации (информационных разделов).

Вид экрана info.
Если версия Emacs не может найти файлы справки, добавьте следующую строку в файл .emacs, содержащую соответствующий путь (например, /pathname/emacs/info:
| (setq Info-directory-list (cons "/pathname/emacs/info" Info-default-directory-list)) |
Вставка элементов через Меню
Если версия редактора позволяет использовать меню, выберите пункт Insert Element из меню Markup. Появится еще одно меню со списком элементов, доступных для вставки в текущую позицию курсора. Если для вставки доступен только один элемент, то открывшееся меню будет состоять из одного пункта. Если допустимых типов элементов слишком много, то Emacs разобьет их на несколько дополнительных меню.Чтобы вставить только отрывающий, или только закрывающий, тэг воспользуйтесь пунктом Insert Start-Tag (открывающий тэг) или Insert End-Tag.
Вставка текста
A Добавляет текст в конце строки. I Добавляет текст в начале строки. O (letter oh) Переключает в режим вставки текста и вставляет пустую строку перед текущей строкой. a Переключает в режим вставки текста и добавляет текст после курсора. Аргумент count определяет количество повторений введенного текста. i Переключает в режим вставки текста и добавляет текст перед курсором. Аргумент count определяет количество повторений введенного текста. o Переключает в режим вставки текста и вставляет пустую строку после текущей строки.Вставка тэгов в существующий текст
При вводе нового текста удобно вставлять пару элементов, начальный и конечный тэги, а курсор помещать между ними. Ниже будет рассмотрено, каким образом можно внести разметку в уже существующий текст. Для этой цели предусмотрены команды sgml-tag-region, sgml-insert-tag и sgml-insert-end-tag, а также соответствующие комбинации клавиш.Нажмите C-c C-r (команда Sgml-tag-region) или выберите пункт Tag Region меню Markup, после чего PSGML вставит открывающий тэг в начало блока(region) и закрывающий тэг в конец. (Помните, что понятие "блок" (region) аналогично понятию выделенного блока в других текстовых процессорах и текстовых редакторах, и означает фрагмент текста между последним началом выделения и текущим местоположением курсора.)
Некоторые версии редактора Emacs не выделяют цветом блок, поэтому легко забыть, где были поставлены маркеры начала и конца блока. При этом команда sgml-tag-region может вставить открывающий и закрывающий тэги совсем не там, где ожидалось. Чтобы избежать подобной ситуации, нужно помнить о комбинации клавиш C-x C-x (команда exchange-point-and-mark), которая позволяет быстрым перемещением курсора проверить границы блока.
Команды sgml-insert-tag и sgml-insert-end-tag позволяют вставлять открывающий и закрывающий тэги независимо друг от друга. Нажмите C-c < (или выберите Insert Start-Tag в меню SGML), чтобы вставить открывающий тэг. Закрывающий тэг вставляется через нажатие C-c / (или Insert End-Tag в меню SGML).
ВСТАВКА / УДАЛЕНИЕ / РЕДАКТИРОВАНИЕ СТРОКИ
^D Удалить символ Del Забой M-Del Удалить предыдущее слово M-x overwrite-mode Режим замены ^K Удалить конец строки / Удалить начало строки M-d Удалить слово и пробелы за ним M-^ Склеить строки delete-indentationВставка
Команды для вставки "p" и "P". Различие между ними в положении вставляемого текста. Команда "p" вставляет текст из буфера после текущей позиции курсора, "P" - вставляет текст перед текущей позицией курсора. Аргумент count определяет количество повторов вставляемого текста.Встраивание команд оболочки
Для такого встраивания требуется редактирование меню Shell (через выбор Preferences - Default Settings - Customize Menu - Shell Menu). Выбрав соответствующие пункты приведенной последовательности, вызываем панель Shell Commands (рис. 3) и выбираем из списка доступных команд пункт New. Подобно тому, как это проделывалось для макросов, заполняем поля Menu Entry, т. е. имени команды (оно также может быть иерархически построено и привязано к языковому режиму меню), Accelerator (для закрепления комбинаций клавиш) и Mnemonic (для выделения литеры быстрого вызова).![]() | |
| Рис. 3. Панель Shell Commands. |
Затем определяемся с входными элементами команды в строке переключателей Command Input. Здесь можно предписать команде исполняться либо для выделенного фрагмента (selection), либо для текущего окна (window), либо для каждого элемента документа (either), либо ни для чего (none). Объяснить смысл каждого переключателя в общем виде я несколько затрудняюсь, но на практике смысл их для каждой конкретной команды обычно достаточно прозрачен.
Аналогично поступают и с выходными элементами команды, каковые могут быть показаны в текущем или новом окне, а также в виде диалоговой панели.
Следующая ниже группа переключателей при установке в положение On предписывает:
Определившись и с этим, можно непосредственно задавать команду вместе со всеми требуемыми параметрами и их значениями. Это делается в поле ввода команды (Shell Command to Execute), точно так же, как в командной строке консоли или терминального окна.
Однако можно и набрать команду непосредственно в поле редактирования NEdit, после чего просто скопировать ее (с помощью мыши или клавишных комбинаций) в поле ввода команды. Преимущество последнего способа в том, что предварительно (с помощью меню Shell - Execute Command Line) можно проверить работоспособность команды, поскольку она запускает на выполнение ту строку текущего файла, на которой зафиксирован курсор (разумеется, если эта строка имеет смысл и синтаксически правильна). В противном случае в теле документа автоматически появится сообщение об ошибке. Например:
netscape An error occurred running /usr/lib/netscape/netscape-communicator.
Или даже полная справка по использованию команды, как в случае
ispell Usage: ispell [-dfile | -pfile | -wchars | -Wn | -t | -n | -x | -b | -S | -B | -C | -P | -m | -Lcontext | -M | -N | -Ttype | -V] file
Руководствуясь этими сообщениями, создаваемую команду можно отредактировать до работоспособного состояния. Можно, разумеется, и просто скопировать успешно запускаемую команду из окна терминала.
Завершив создание новой команды, принимаем введенные изменения (при помощи экранной кнопки Apply) или выходим из режима редактирования Shell, нажав OK. Затем, проверив правильность созданной команды, сохраняем ситуацию (через Save Defaults) для использования в дальнейшем.
Не могу поручиться, что я внятно изложил возможности NEdit по созданию и редактированию макрокоманд и команд оболочки. И потому попробую проиллюстрировать эти возможности на конкретном примере - создании серии связных директив, превращающих NEdit в самодельный HTML-редактор.
Встречаем XSLT
Прежде всего следует указать, что наш документ использует стилистику XML и импортировать пространство имен XML:...
Далее, основным элементом, который мы будем использовать, является xsl:template match. Этот элемент вызывается всякий раз, когда имя xml-узла совпадает со значением атрибута xsl:template match:
Внутри элемента xsl:template match следует указать вложенные узлы элементом: xsl:value-of select. Давайте для начала создадим xml-документ, содержащий некоторую информацию:
Так должно выглядеть xslt-преобразование, которое вынимает узел text из корневого элемента (hello):
Содержимое узла text корневого элемента:
В результате получится следующий HTML-документ:
Встроенные функции
length(arg) - Функция длины arg. Если arg не указан, то выдает длину текущей строки.exp(),log(),sqrt() - Математические функции экспонента, логарифм и квадратный корень.
int() - Функция целой части числа.
substr(s,m,n) - Возвращает подстроку строки s, начиная с позиции m, всего n символов.
index(s,t) - Возвращает начальную позицию подстроки t в строке s. (Или 0, если t в s не содержится.)
sprintf(fmt,exp1,exp2,...) - Осуществляет форматированную печать (вывод) в строку, идентично PRINTF.
split(s,array,sep) - Помещает поля строки s в массив array и возвращает число заполненных элементов массива. Если указан sep, то при анализе строки он понимается как разделитель.
Ввод и удаление текста
Чтобы ввести текст, просто установите курсор в нужное место и начинайте печатать. Если создается новый документ, то курсор будет находится в начале.Если при наборе текста вы дошли до конца строки и продолжаете печатать, то в конце строки появится знак перехода на следующую строку. В качестве такого знака перехода некоторые версии Emacs используют обратный слеш ("\"), но это может быть и какой-либо другой знак (например, стрелка).
| Returning to the Spouter-Inn from the Chapel, I found Queequeg ther q\ uit alone; he having left the Chapel before the benediction some time. |
Знак перехода не означает реального перехода на следующую строку. Данный знак сигнализирует о том, что редактируемая строка имеет слишком большую длину, и поэтому не помещается в окне (или на экране).
Конечно, можно каждый раз нажимать Enter, чтобы начать печатать с новой строки. Однако, многие текстовые процессоры автоматически вставляют символ перевода каретки при приближении редактируемой строки к правой границе. Для того, чтобы задействовать в Emacs аналогичную опцию нужно нажать M-x и набрать в командной строке auto-fill-mode. Данная команда включает режим "Fill", что отображается в строке состояния словом "Fill"(см. рис. Строка состояния Emacs.).

Строка состояния Emacs.
Если по каким-либо причинам, например при редактировании текстов программ, нужно отключить режим "Fill", повторите вышеописанную процедуру. Т.е. в командной строке (M-x) нужно набрать auto-fill-mode, которая работает в режиме переключателя: если "Fill" был включен, то команда auto-fill-mode его выключит, и наоборот.
Чтобы изменить положение правой границы (или, оперируя терминами Emacs, "fill column"), нажмите C-u, затем введите номер позиции, соответствующей новой ширине текста и нажмите C-x f.
Чтобы удалить символ в позиции курсора нажмите клавишу Delete. Это должно сработать, если нет, то используйте комбинацию C-d. Клавиша Backspace должна функционировать нормально.
ПРИМЕЧАНИЕ:При работе с UNIX-системой с PC через программу-эмулятор терминала клавиша Delete может работать не так, как ожидается. Например, при ее нажатии может удаляться символ слева от курсора. В этом случае использование комбинации C-d является вполне оправданным.
Чтобы удалить фрагмент от курсора до конца строки нажмите C-k (kill-line - неудачное название для команды, которая удаляет не всю строку, а только ее часть).
Другое замечательное свойство Emacs - это возможность переформатирования параграфа. Например, в приведенном ниже фрагменте была удалена часть текста в третьей строке, поэтому данная строка заполнена наполовину:
| He made me a present of his embalmed head; took out his enormous tobacco wallet, and groping under the tobacco, drew out some thirty dollars in silver; then spreading them on the table, and mechanically dividing them into two equal portions, pushed one of them towards me, and said it was mine. |
| He made me a present of his embalmed head; took out his enormous tobacco wallet, and groping under the tobacco, drew out some thirty dollars in silver; then spreading them on the table, and mechanically dividing them into two equal portions, pushed one of them towards me, and said it was mine. |
Иногда удобно добавить в текст информацию из уже существующего файла. Чтобы это реализовать, поместите курсор в нужное место и нажмите C-x C-i. В окне минибуфера появится строка:
| Insert file: c:\pathname\ |
Если файл находится не в текущей директории, то используя Backspace сотрите предложенный путь и наберите наименование той директории, где лежит файл.
Ввод команд PSGML
Как и любые другие команды Emacs, команды PSGML могут быть запущены из командной строки (через нажатие M-x), через нажатие комбинации клавиш или из меню, если, конечно, используемая версия редактора поддерживает меню.Комбинации клавиш, как правило, предоставляют самый быстрый способ запуска. Большинство комбинаций клавиш в SGML имеют вид, аналогичный соответствующим комбинациям, выполняющим в режиме простого редактирования похожие функции. Например, в обычном Emacs, M-f перемещает курсор на слово вперед, а M-b перемещает курсор на слово назад. В главе "Перемещение курсора в режиме SGML" будет показано, что комбинации клавиш C-M-f и C-M-b перемещают курсор на элемент вперед и назад соответственно (если, конечно, подобные комбинации клавиш реализованы в используемой версии Emacs). Напомним, что некоторые версии Emacs допускают нажатие клавиши Alt вместо Escape для имитации метаклавиши.
PSGML добавляет в Emacs шесть новых меню: SGML, Modify, Move, Markup, View, DTD. Ниже будет показано, что большинство пунктов меню имеют альтернативный вызов через комбинации клавиш.
Ввод текста.
Команда sgml-insert-element - одна из наиболее часто используемых команд при работе с PSGML. При вводе этой команды из командной строки (или при выборе пункта меню Insert Element из меню Markup, или при нажатии комбинации C-c C-e), PSGML попросит ввести имя элемента в строке минибуфера:| Element: |
Как обычно, при вводе команд в окне минибуфера можно использовать функцию дополнения имен команд. Для этого нужно набрать несколько первых символов команды и нажать клавишу Tab или пробел. Если несколько команд начинаются с введенной последовательности символов, то Emacs выведет в новом окне список возможных команд. Из которых нужно выбрать одну.
После ввода имени вставляемого элемента, PSGML вставит открывающий и закрывающий тэги, а также, если это необходимо, вложенные элементы. Для реализации данной функции необходимо, чтобы переменным sgml-balanced-tag-edit и sgml-insert-required-elements присвоены ненулевые значения (подробнее см. "Установка значений переменных PSGML"). Если нужно выбрать вставляемый элемент из нескольких аналогичных, PSGML вставит соответствующий SGML-комментарий. И последнее, PSGML установит курсор в конце отрывающего тэга, чтобы можно было сразу начать ввод информации.
Пример. Допустим, нужно вставить рисунок в документ DocBook. Нажмите C-c C-e, В окне минибуфера появится подсказка
| Element: |
Нужно ввести название элемента. Введите fi и нажмите Tab. Редактор должен допечатать оставшиеся символы, и в результате получится слово "figure". Нажмите ввод. PSGML вставит в текущую позицию курсора текст следующего содержания
Обратите внимание, как именно выглядит строка комментариев, вставленная после тэгов заголовка и сообщающая о необходимости вставки одного из перечисленных элементов. Комментарий получился слишком длинным и не уместился целиком на одной строке, поэтому он разбит на несколько кусков, в конце которых стоят символы переноса - обратный слеш "\". Это чисто технический перенос, необходимый для облегчения визуального восприятия. Чтобы убедиться, что это одна строка, поместите курсор в начале комментария и нажмите C-k (команда kill-line).
В этом режиме все, что набирается на клавиатуре отображается на экране терминала и запоминается в буфере редактора.
Нет возможности осуществлять операции редактирования текста, за исключением стирания последнего набранного символа (с помощью комбинации клавиш < Control-H> ).
< Return> - создает пустую строку и переводит курсор в ее начало.
< Control-H> - уничтожает последний введенный символ (это действие не отображается на экране до выхода в командный режим).
< Control-[> или клавиша < Esc> - переводят редактор в командный режим.
В режиме ввода текста стрелочная клавиатура НЕ РАБОТАЕТ!
Ввод/вывод в системе UNIX и локализация.
Когда-нибудь здесь будет небольшая статься о вводе/выводе в системе UNIX. :-) Пока же читатель может посмотреть кучу специальной литературы. Например :| Робачевский А.М. "Операционная система Unix" СПб. Издательство BHV Санкт-Петербург, 1997 ISBN 5-7791-0057-8 |
Andrei Robachevsky Federal Centre RUNNet e-mail: phone: +7-812-2388598 fax: +7-812-2327622 |
Здесь же кратко коснемся только проблем локализации ввода/вывода UNIX.
Итак, цитируем :
| В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами : |
Продолжаем цитировать :
| Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные файлы, исполняемые программы т.п. |
Из этого следует, что в общем случае не существует никакого способа узнать не только кодировку, но даже тип
данных, содержащихся в файле.
В принципе, существуют два основных способа определения содержимого файла (набора/потока данных) :
файла
Самый известный In-band способ - . Здесь кодировки и вид содержимого описываются явно, в полях Content-Type: text/plain; charset=koi8-r и Content-Transfer-Encoding: base64. Концепции MIME (описание типа) используются также в HTTP ().
Также In-band сведения о содержимом и кодировках содержатся, например, в файлах Microsoft Word .DOC(с включенными OLE объектами), Windows .EXE и .DLL (ресурсы), e.t.c. К In-band методам можно отнести и разнообразные языки разметки (MARK-UP
Languages), например тэг
Теперь об Out-band (внешних) способах. К сожалению, в UNIX
поддерживается простая однопотоковая концепция организации файла. Нет никаких ресурсных вилок, как в MacOS HFS, нет Meta Info как в OS/2 HPFS. Файл - это просто набор данных, имеющий имя (ну, еще даты создания/изменения/доступа, ну еще права доступа : rwxr-xr-x ). Без всяких "расширенных атрибутов".
Проблема зашла так далеко, что в UNIX
появилась специальная утилита file, которая "эвристическими методами" пытается определить тип содержимого.
Единственный более-менее распространенным способом определения типа файла является расширение, то есть несколько конечных символов в имени
файла после точки : ".txt". На самом деле, никакого стандарта на "расширения" в UNIX нет, так как точка : "." является допустимым символом имени. Так что вполне могут встретится имена типа "file.doc.tar.gz", "file............txt" или ".profile".
Тем не менее, многие программы ориентируются именно на "расширения", особенно при переводе в MIME, например для простановки типа в HTTP ():
(/usr/local/etc/http/mime.types)
(sqiud-1.1.2x/include/mime.table)
Насколько ненадежен этот метод, можно судить например по тому, что текстовый (!) файл "ls-lR.ftp.anu.edu.au" упорно интерпретируется как "audio/basic" и некоторые программы пытаются его "сыграть" ;-))
Тем не менее, иногда этим можно пользоваться, например задавая определения типов (и многие другие атрибуты) для файлов текущего
каталога, в файле ./.htaccess от apache
( модуль mod_mime ):
| AddType text/plain text AddEncoding x-compress Z AddIconByType (TXT, icons/text.gif) text/plain AddIconByEncoding (COMP, icons/comp.gif) application/x-compress e.t.c. |
Ну чем не Out-band метод ? Правда доступ к файлу в таком каталоге осуществлять придется только через HTTP от apache. ;-)
Но продолжаем цитировать :
| Каталог: С помощью каталогов формируется логическое дерево файловой системы. Каталог - это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию - метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. |
Существующие способы определения кодировки символов в имени файла :
! ) :
$ mount -t vfat -o umask=002,noexec,gid=100,codepage=866,iocharset=koi8-r /dev/hdb1 /mnt
/dev/sd0s1 /dos/c msdos rw,-W=koi2dos,-L=ru_RU.KOI8-R 0 0
детальное описание опций -W и -L смотрите в mount_msdos (8)
client code page = 866
character set = koi8-r
Все операции, оперирующие с именами файлов должны быть как минимум прозрачны в отношении 8 бит.
| Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства. |
Более неприятна ситуация с симольными
(character) устройствами, где также совершенно не существует определения character set. Другими словами, стандартными
средствами UNIX (POSIX) невозможно ни определить
текущую, ни установить необходимую кодироку символьного устройства (например, терминала).
Стандартных средств изменения и определения кодировки нет ни для "настоящих" (подключенных через ASYNC-port) терминалов , ни для эмуляторов консоли (SCO, BSD или LINUX console), ни для окна xterm в X-Windows (работающих через псевдотерминалы /dev/pty). Понятий "кодировка"
или "набор символов" нет ни в процедурах управления терминалом : termios (POSIX), ни в базах описания терминалов termcap и terminfo, ни даже в "высокоуровневых" библиотеках управления терминалом curses и ncurses. (TODO: посмотреть slang ).
Точно также, нет указателя Charset
у потоков STDIN, STDOUT, STDERR.
* ПРИМЕЧАНИЕ: В настоящее время наметилось несколько путей решения этой проблемы:
! )
part 2.13
(или то же самое, через Linux PAM)
определяющие charset.
| FIFO или именованый канал - это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм. |
| Связь. Особым типом файла является символическая связь, позволяющая косвенно адресовать файл. В отличии от жесткой связи, символическая связь адресует файл, который в свою очередь, ссылается на другой файл. В результате, последний файл адресуется символической связью косвенно. Данные файла, являющегося символической связью, содержат только имя целевого файла. |
Собственно, на имя связи
и на ее содержимое распространяются те же правила, что и на имя в .
| Сокет. Сокет представляет собой двусторонний канал обмена данными между процессами и является одним из механизмов IPC (Inter-Process Communication). |
Для описания характеристик взаимодействия было введено понятие коммуникационный домен (communication domain). Сокеты создаются в рамках определенного коммуникационного домена, и, кроме прочих характеристик, имеют соответствующее имя
(связываемое с сокетом при помощи вызова bind()
).
в файловой системе. Соответственно, на имя этого файла распространяются все правила именования в .
Не вдаваясь в подробности функционирования Socket API, рассмотрим лишь отношение сокетов и методов кодирования передаваемой информации.
Сокеты (stream socket), после установления соединения предоставляют процессам чистый 8-ми битный канал обмена информацией (Out-Of-Band данные не рассматриваются). В принципе, пользователь может передавать данные в совершенно произвольном формате. Однако, существуют некоторые "устоявшиеся правила" организации протоколов обмена данными (IPC).
1. Разделять управляющую информацию и пользовательские данные. Как сказано в "Srtings for humans, Protocols for computers".
2. Текстовый
управляющий протокол - это "правильная вещь". (c) Eric S. Raymond, разработчик . Для облегчения разработки и сопровождения протокола, управляющие команды и ответы сервера лучше сделать в виде текстовых строк.
3. Хорошо разработанный протокол содержит в себе созможности Handshake
(или Negotiation)
Accept-Language:
Content-Language:
Accept:
Accept-Charset:
Content-Type: text/plain; charset=
Content-Type: text/html; charset=
Accept-Encoding:
Content-Transfer-Encoding:
См. например проекта .
Если у вас имеются каие-либо дополнения или исправления, пишите
--
-=AV=-
Содержание
Last change : 11-01-2000
Выбор DTD
При переходе к использованию технологии SGML встает вопрос выбора DTD. Обычно без проб и ошибок обойтись не удается. Можно пробовать "стандартные" DTD, широко используемые в индустрии, например, или . Можно создавать свои DTD, ориентированные на типичные документы, встречающиеся в повседневной работе. Переход между DTD ввиду использования SGML-процессоров обычно безболезнен, поэтому тут возможно длительное экспериментирование.Выделение Разметки шрифтом и цветом
При использовании терминала (или программы эмуляции терминала) и версии Emacs, поддерживающей отображение текста различным шрифтом или цветом, PSGML может использовать эти возможности для облегчения восприятия разных видов разметки. Настройки PSGML по умолчанию отображают комментарии SGML курсивом; ссылки на объект - полужирным курсивом; тэги, встроенные инструкции, SGML и DOCTYPE объявления, а также короткие ссылки - полужирным шрифтом.Если используемая версия Emacs может работать с различными шрифтами, то скорее всего это версия редактора под UNIX с XWINDOWS терминалом. Другие версии обычно вместо различных шрифтов используют выделение цветом. Так поступает, например, EMX версия GNU Emacs 19.29.2, отображая комментарии красным, ссылки на объект желтым, и тэги и прочую разметку белым цветом на общем сером фоне.
Если была использована команда sgml-next-trouble-spot, а выделение шрифтом или цветом отсутствует, то можно задать Emacs и PSGML отображать разметку выбранным способом, добавив несколько строк к .emacs-файл. Создание этих строк можно разбить на следующие четыре этапа:
Ниже приводится код .emacs, демонстрирующий назначение разметки цветом для комментариев, тэгов, и ссылки на объект.
| ;;;;; Assign colors to markup. ;;;;; ; Create faces to assign to markup categories. (make-face sgml-comment-face) (make-face sgml-start-tag-face) (make-face sgml-end-tag-face) (make-face sgml-entity-face) ; Assign attributes to faces. Background of white assumed. (set-face-foreground sgml-comment-face "White") ; Comments: white on (set-face-background sgml-comment-face "Gray") ; gray. (set-face-background sgml-start-tag-face "Gray") ; Tags: black (default) (set-face-background sgml-end-tag-face "Gray") ; on gray. (set-face-foreground sgml-entity-face "White") ; Entity references: (set-face-background sgml-entity-face "Black") ; white on black. ; Assign faces to markup categories. (setq sgml-markup-faces '((comment . sgml-comment-face) (start-tag . sgml-start-tag-face) (end-tag . sgml-end-tag-face) (entity . sgml-entity-face))) ; Tell PSGML to pay attention to face settings. (setq sgml-set-face t) |
Выход из VI
Теперь, когда вы знаете как запустить vi, необходимо узнать как завершить сеанс работы с редактором. Редактор vi имеет два рабочих режима и для завершения сеанса работы необходимо перейти в командный режим. Нажмите клавишу "Escape" или "Esc" (если у вас нет такой клавиши попробуйте "^[" или "control-[") для переключения в командный режим. Если вы находясь в командном режиме нажмете клавишу "Escape" - ничего страшного. Возможно прозвучит сигнал, но редактор по-прежнему будет в командном режиме.Команда для выхода из vi - ":q". В командном режиме наберите двоеточие и "q" и нажмите клавишу "Enter". Если вы вносили изменения в файл - редактор предупредит об этом и не позволит завершить сеанс подобным образом. Выход из редактора без сохранения изменений - ":q!".
Конечно, работая в редакторе, вы хотите сохранять результаты работы. Команда для сохранения изменений - ":w". Можно сохранить изменения и завершить сеанс работы одновременно - ":wq". Для изменения имени файла выполните - ":w filename". Например для сохранения файла с новым именем filename2 выполните : ":w filename2".
Другая возможность завершения сеанса работы с редактором - выполнение команды ":ZZ". В командном режиме выполните ":ZZ" (эквивалент команды ":wq"). Если были сделаны изменения - они будут сохранены. Это самый простой вариант.
Выравнивание текста элемента
Для выравнивания текста, как было показано выше, используется комбинация клавиш M-q (команда fill-paragraph). Эта команда выравнивает длину строк в соответствии с установленной правой границей. В тексте SGML целесообразно использовать другую команду: sgml-fill-element, вызываемую нажатием C-c C-q или выбором пункта Fill Element меню Modify.Команда sgml-fill-element, в отличие от команды fill-paragraph, выравнивает текст только внутри одного элемента, сохраняя при этом общую структуру. Рассмотрим это на следующем примере:
После применения команды sgml-fill-element текст будет выглядеть следующим образом:
Изменилась только та часть текста, которая следовала после тэга
Выражение отношения
Выражение отношение может быть двух типов:Принадлежность:
~ - Содержится;
!~ - Не содержится.
Лог. Операция: < , < =, ==, !=, > =, > .
Например:
$1 ~ /[Oo]lga/ - Указывает на строки, первое поле которых содержит Olga или olga.
$1 > = "s" - Указывает на строки, начинающиеся с символа s или следующих за ним по порядку: t, u, v...
Вырезание и копирование
Наиболее часто используемая команда для вырезания текста "d". Эта команда удаляет текст из файла. Использует аргумент count. Команда "dd" удаляет текущую строку. Рассмотрим несколько примеров :d^
удаляет символы от текущей позиции курсора до начала строки. d$
удаляет символы от текущей позиции курсора до конца строки. dw
удаляет символы от текущей позиции курсора до конца слова. 3dd
удаляет три строки от текущей позиции курсора вниз.
Действие команды "y" (копирование) подобно действию команды "d", но она не удаляет текст, а только копирует его в буфер.
Вырезание и вставка/удаление текста
" Назначение буфера. Используется с буквой или цифрой. D Удалить от текущей позиции курсора до конца строки. P Вставить текст из буфера в позицию перед курсором. Если не определен буфер командой ", используется буфер общего назначения. X Удалить символ перед текущей позицией курсора. Y Копировать текущую строку в буфер. Если не определен буфер, используется буфер общего назначения. d Удалить. "dd" - удалить текущую строку. Аргумент count определяет количество удаляемых строк. Если не определен буфер командой ", используется буфер общего назначения. p Вставляет текст после текущей позиции курсора. Если не определен буфер командой ", используется буфер общего назначения. x Удаляет символ в позиции курсора. Аргумент count определяет количество удаляемых символов. Символы будут удалены после текущей позиции курсора. y Копировать. "yy" - копировать текущую строку. Аргумент count определяет количество копируемых строк. Если не определен буфер командой ", используется буфер общего назначения.Вывод /Печать/
Формат оператора печати:PRINT [< список выражений> ] [ > < выражение1> ]
Если в списке выражения находятся через запятую, то значения этих выражений выводятся на output (печатаются) через символ-разделитель OFS (по умолчанию пробел). Если же выражения стоят через пробел, то на печати происходит их конкатенация.
Значение < выражения1> рассматривается как имя файла. Само его присутствие означает печать в файл. Если вместо ``> '' стоит ``> > '', то это означает добавление к уже существующему файлу. Можно использовать в одной программе максимально до 10 output файлов.
Оператор форматированной печати:
PRINTF формат [,список выражений] [ > выражение1]
формат: символьная строка в двойных кавычках. Идентичен формату, используемому в функции printf в языке ``С''. Формат может содержать:
Вывод результатов проверки
После того, как команда nsgml отредактирована, и нажата клавиша Enter, PSGML разбивает экран пополам, чтобы создать новое окно для буфера под названием *sgml validation*. Вид команды, выполняющей проверку, отобразится в этом окне.Если в окне минибуфера появится слово "done", то это означает, что программа проверки не нашла ошибок в тексте документа.
Если же ошибки все-таки обнаружены, то программа проверки перечислит их в окне буфера *sgml validation*. PSGML отсортирует сообщения и позволит быстро найти ошибки, обнаруженные в тексте. Рассмотрим пример. Добавим две ошибки к совершенно правильному тексту и посмотрим как будут выглядеть сообщения об ошибках.
Ниже приводится текст документа, который полность соответствует DocBook DTD, за исключением двух пунктов. Во-первых, в элемент emphasis помещен беспризорный открывающий тэг
| |
Нажмите C-c C-v, чтобы отправить данный образец на проверку. Сообщения об ошибках будут выглядеть следующим образом:
| nsgmls:whalin.sgm:6:43:E: document type does not allow element "SECT1" here nsgmls:whalin.sgm:6:54:E: "SECT1" not finished but containing element ended nsgmls:whalin.sgm:6:54:E: end tag for "SECT1" omitted, but OMITTAG NO was specified nsgmls:whalin.sgm:6:37: start tag was here nsgmls:whalin.sgm:9:15:E: there is no attribute "HAIR" nsgmls:whalin.sgm:11:57:E: end tag for "SECT1" omitted, but OMITTAG NO was specified nsgmls:whalin.sgm:4:1: start tag was here nsgmls:whalin.sgm:11:57:E: end tag for "CHAPTER" omitted, but OMITTAG NO was specified nsgmls:whalin.sgm:2:0: start tag was here |
Данные сообщения об ошибках дают два полезных урока, связанных с программированием вообще:
next-error (комбинация C-x ') - команда Emacs, осуществляющая переход в строку, где была обнаружена ошибка. Эта команда не является специфической командой PSGML. Она используется программистами для обнаружения строк в их исходном тексте программ, в которых компилятор нашел ошибки. По команде next-error курсор переходит в окно документа и перемещается в строку, содержащую ошибку. При этом в окне буфера сообщений об ошибках, *sgml validation*, соответствующее сообщение становится первым в списке (см. рис. Поиск ошибок в тексте с помощью команды .).

Поиск ошибок в тексте с помощью команды next-error.
Посторонний тэг sect1 стал причиной пяти сообщений об ошибках, а атрибут hair - только одной. Сообщение без буквенного кода кода после второго номера не является самостоятельным сообщением об ошибке, а несет в себе дополнительную информацию для предыдущей ошибки. Последовательно нажимая C-x ' можно отследить все "множественные" ошибки.
Если ошибок больше нет, и при этом нажать C-x ', то в окне минибуфера появится сообщение:
| No_more_errors |
Несмотря на небольшой размер, Ted
Несмотря на небольшой размер, Ted достаточно производительное приложение, удобное в использовании и стабильное ( я тестировал версии 2.5 и 2.8 ). В версии 2.5 была обнаружена ошибка - удаление пустых строк клавишей del влекло за собой завершение работы приложения, но в версии 2.8 ошибка была устранена.Хотелось бы чтобы в приложение были добавлены следующие возможности : автосохранение, выпавнивание одновременно по левой и правой границе, обтекание изображения текстом.
Также было бы неплохо конвертировать Ted в GTK и QT (GTed и KTed).
Но даже в настоящее время Ted является прекрасным приложением, с помощью которого можно решать реальные задачи. Эта заметка, как и предыдущие написанные мной, созданы с помощью Ted и ни один издатель не испытывал проблем с преобразованием этих файлов. Это говорит о многом.
Warning
Что представляет собой конфигурирование сообщений при закрытии файла или выходе из редактора. Здесь имеется всего два переключателя. Первый отвечает за выдачу предупреждения о несохраненности изменений в закрываемом файле, второй же - разрешает или запрещает сообщение о изменении установок по умолчанию при закрытии программы. На мой взгляд, оба - далеко не лишние, и не худо бы включить их по умолчанию.Предпоследний пункт нашей программы -
Whatrus-e
whatrus v.3.11 manual
Description.
Whatrus is intended for recognizing encoding in file: alternative (for DOS, codepage 866), KOI-8 (for UNIX), Macintosh and Windows (codepage 1251).
Synopsys.
Flag '-s' is used to avoid messages.
Windows operating system runs whatrus in a separate window which should be closed after program finished. To keep window and to let user to see result whatrus after recognition waits for key pressed. To avoid this use flag '-s'.
Example.
Example for windows. E:\EX>whatrus \\server\d\files\readme.txt WIN detected.
Return codes.
255: error occured 0: encoding not recognized recognized encoding: 11: alternative (for DOS, codepage 866) 12: KOI-8 (for UNIX) 13: Windows (codepage 1251) 14: Macintosh
whatrus-e.html
Document created by Oleg A. Paraschenko
Last changes - 15 November 1998
Whatrus
whatrus v.3.11.
Руководство пользователя.
Назначение.
Программа whatrus служит для определения используемой в файле кодировки: альтернативной (кодовая страница 866, для DOS), koi8 (для UNIX), Macintosh и Windows (кодовая страница 1251).
Описание.
Использование:
Флаг '-s' используется для подавления вывода на экран любых сообщений.
Операционная система windows запускает whatrus в отдельном окне, которое должно закрываться после окончания программы. Чтобы окно не закрывалось, и пользователь мог увидеть результат работы, whatrus после определения кодировки ждет нажатия любой клавиши. Если этого не требуется, используйте флаг '-s'.
Пример использования.
Пример для windows. E:\EX>whatrus \\server\d\files\readme.txt WIN detected.
Коды возврата.
255: произошла ошибка 0: кодировка не распознана определена кодировка: 11: альтернативная (кодовая страница 866, для DOS) 12: КОИ-8 (для UNIX) 13: Windows (кодовая страница 1251) 14: Macintosh
whatrus.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
Windows
Понимается под этим, как нетрудно догадаться, управление окнами, правда, довольно ограниченное. Во-первых, можно раделить окно с текущим документом на две независимо скроллируемые части (Split Window, Ctrl+2). Только по горизонтали, но зато сколько угодно раз: исходное окно делится ровно пополам, затем каждая половина - еще пополам, и так далее, насколько хватит разрешения экрана.Для снятия разделения предназначен пункт Close Pane (Ctrl+1). При этом закрывается та часть окна, в которой находится курсор.
Наконец, в пункте Windows солдержится список открытых в текущем сеансе документов. Каждый из них открывается или создается (через пункты меню File - Open или File - New, соответственно) в своем окне с полным набором его атрибутов (управляющими элементами, меню, строкой состояния и так далее). Однако все они принадлежат текущему сеансу, и, скажем, изменение настроек сказывается на них всех. А переключение между окнами, кроме принятого в данном оконном менеджере, можно осуществить и через их список в пункте меню Windows.
В заключение раздела - несколько слов о
WodrPerfect 2000 для MS Windows
Не рекомендуется -WodrPerfect 2000 для MS Windows имеет ограниченную поддержку SGML и DocBook 3.00. WordPerfect для Линукс не имеет поддержки SGML.
x
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []
XML-инициативы набирают силу
Популярность расширяемого языка разметки Extensible Markup Language (XML) неуклонно растет, свидетельством чему разработка ведущими производителями ПО, ориентированного на Web (в их числе компании Microsoft, Netscape и Oracle), связанных с этим языком стратегических инициатив.Хотя точные спецификации XML пока не утверждены, он вызывает большой интерес, поскольку позволяет разработчикам готовить настраиваемые наборы дескрипторов для создания в Web межплатформенных приложений, которые не зависят от данных. Кроме того, их можно сделать более структурированными, чем позволяет популярный в настоящее время "чистый" HTML.
Просветительская кампания корпорации Microsoft, связанная с XML, откроется выступлением Билла Гейтса на конференции Seybold San Francisco '97, которая будет проходить с 29 сентября по 3 октября.
Кроме того, Microsoft намерена анонсировать поддержку XML в инструментальных средствах, ориентированных на Web, таких как FrontPage и Visual Interdev.
Импульсом к началу активных действий послужила передача компаниями Microsoft, ArborText и Inso табличного XML-языка стилей, Extensible Style Language (ESL), на рассмотрение в консорциум W3C. Язык ESL расширяет так называемый механизм вложенных таблиц стилей (Cascading Style Sheets); в частности, он имеет такие возможности, как переупорядочивание XML-данных по мере их отображения.
"В наших планах, касающихся Internet, языку XML отводится стратегическая роль", - подчеркнул Том Джонстон, менеджер по маркетингу компании Microsoft.
Компания Netscape Communications, еще один сторонник XML, в середине сентября выпустила реализующий дерево гиперссылок апплет Java, который, как утверждает ведущий специалист компании Раманатан Джуха, позволяет просматривать информационное наполнение, описываемое при помощи Resource Definition Framework (RDF).
По его словам, RDF - это модель данных, предложенная консорциумом W3C, которая представлена в синтаксисе XML. Она является производной Meta Content Framework компании Netscape и предоставляет для апплетов браузера такие данные, как подробные карты узлов и описание каналов распространения, а также информацию, необходимую для реализации ряда возможностей, например осуществления родительского контроля и поддержки цифровых подписей. В пользу RDF уже высказались такие провайдеры информационного наполнения, как AltaVista, ABCNews.com, Knight Ridder, Time и Yahoo.
По некоторым данным, Netscape также планирует вскоре выпустить синтаксический анализатор для XML.
Джон Тайгу, старший системный программист DataChannel, отметил, что Oracle, Sybase, Microsoft и DataChannel уже давно работают над созданием языка разметки баз данных, опирающегося на XML. Этот язык мог бы радикально упростить использование баз данных в Web.
Кроме того, DataChannel создает Xapi-J, спецификацию для представления данных, извлеченных лексическими анализаторами XML, в программах на Java и JavaScript. По словам Тайгу, Xapi-J поддерживает несколько синтаксических анализаторов, в том числе XML Parser компании Microsoft, а также аналогичный продукт Netscape.
"Язык XML - это пока нечто эфемерное. За исключением DataChannel никто не может предложить реального инструментария. Но пользователи ждут его с нетерпением, - подчеркнул Дж. Морджентал, аналитик по вопросам Java в исследовательской компании NC.Focus. - Благодаря протоколу HTTP у нас в руках оказался фантастический механизм распространения. Теперь XML обеспечивает вам возможность предоставить структуру на основе данных".
XML — это семейство технологий

XML — это способ записи структурированных данных

XML — это текст, но он не предназначен для чтения

XML - модульная технология

XML немного похож на HTML

Также как и в HTML, в XML используются тэги (слова, заключенные в '<' и '>') и атрибуты (вида имя="значение"). Но если в HTML фиксируется смысловое значение каждого тэга и атрибута и часто то, как текст между ними будет выглядеть в браузере, в XML тэги используются только для логической разметки данных, и их интерпретация оставляется на усмотрение обрабатывающей программы. Другими словами, если вы встречаете "" в XML-файле, то не стоит думать, что это параграф. В зависимости от контекста, это может быть цена (price), параметр (parameter), человек (person)... (вообще, кто сказал, что это должно быть слово, начинающееся с "p"?)
XML нов, но не совсем

XML — основа для RDF и Семантической Сети

XML: свобода, ограниченная только фантазией
Неважно, какую платформу для своих веб-приложений вы выбираете— Sun, Linux или Microsoft, в любом случае ваши веб-сервисы будут общаться на XMLТехнология XML продолжает свое наступление на системы хранения, выборки и передачи данных. На сегодня существует несколько хороших парсеров — в том числе для Java (от IMB, Apache и Sun).
| Термины |
| XML (eXtensible Markup Language) — расширяемый язык разметки. Язык, в котором текст чередуется с элементами разметки, маркерами. |
DTD (Document Type Definition) — язык описания схемы данных, применяемый в первой версии XML.
XSDL (XML Schema Definition Language). Новый и рекомендуемый способ формального описания структуры XML-документа. Для описания структуры, естественно, применяется нормальный XML. Структура может быть применена дважды — как шаблон для порождения документа и как правило валидации, то есть проверки документа на предмет соответствия схеме.
DOM (Document Object Model). Спецификация высокого уровня, представляющая документы в виде структуры агрегированных объектов. Реализация DOM представляет собой парсер высокого уровня.
SAX (Simple API for XML). Базовый парсер XML. Набор функций низкого уровня, основанных на вызове пользовательского кода в момент возникновения событий — таких как "получено начало/конец элемента", "получен текст" и так далее.
Microsoft, как ни странно, тоже не стала изобретать "полностью свой XML", а в соответствии с рекомендациями предлагает Parser & SDK. Ввиду возможности использования готового и бесплатного кода, применение XML, с точки зрения разработчика, является привлекательным способом хранения и доступа к данным.
XML умышленно многословен

XML в 10 тезисах
XML, XLink, Namespace, DTD, Schema, CSS, XHTML ... Если вы впервые столкнулись с XML, трудно даже понять, с чего начать. Этот короткий обзор представляет собой попытку охватить основные идеи XML, чтобы новичок мог увидеть концепцию в целом, не путаясь в деталях. Если же вы кому-то представляете XML, почему бы не начать с этих 10 тезисов?XML ведет HTML к XHTML

Xsltproc
Процессор xsltproc включен в состав большинства дистрибутивов, синтаксис вызова похож на вызов процессора saxon:[danguer@perseo xslt]$ xsltproc hello.xsl hello.xml > hello.html
Я знаю о существовании и других процессоров, таких как sablotron, но я ими не пользовался, а потому не могу рекомендовать их вам ;-).
YUI 1.0 (бета-версия)
Разработанный Инженерно-Технической Компанией в Ижевске текстовый редактор YUI распространяется в исполняемом виде как freeware и находится в стадии бета-тестирования. Заявлено, что бета-версии редактора имеются для платформ MS-DOS, BSD, Solaris, INTERACTIVE и Linux. Интерфейс реализован в стиле Turbo Vision, поэтому YUI внешне очень напоминает Borland С++ З.х. Однако назвать этот продукт редактором для разработчиков нельзя: в нем отсутствует какая-либо поддержка процесса программирования, да и базовые средства форматирования представлены не в полной мере. Продукт достаточно сырой и, по моему мнению, пока может представлять чисто академический интерес. Поэтому маловероятно, что YUI в ближайшее время привлечет внимание разработчиков и квалифицированных пользователей.z
[] [] [ъЮутКтЦИьы] [рруЮЕ] [АшутЦНИьы] []За и против формата POD
ЗаПротив
За и против
ЗаПротив
Зачем нужен этот документ?
Этот документ предназначен для тех пользователей Linux, которые хотят узнать о Emacs и научиться работать с ним.Этот документ не является специфичным только для . Его можно использовать для работы с Emacs из других дистрибутивов Linux, в других вариантах операционной системы Unix, а также с Emacs для Microsoft Windows.
Этот документ предназначен для тех пользователей Linux, которые хотят узнать о Emacs и научиться работать с ним.
Этот документ не является специфичным только для . Его можно использовать для работы с Emacs из других дистрибутивов Linux, в других вариантах операционной системы Unix, а также с Emacs для Microsoft Windows.
Задание структуры документа
В зависимости от documentclass LaTeX знает о трех или четырех уровнях заголовков. В класс article три уровня разделов, в то время, как в классе book сожержит главу в качестве четвертого заголовка самого верхнего уровня.\chapter{Название главы} % только в классах book и report
\section{Название раздела}
\subsection{Название подраздела}
\subsubsection{Заголовок подраздела подраздела }
Обратите внимание, что как и в POD, который обсуждается в Части I, команды секционирования работают подобно разделителям. Они не группируют текст с помощью маркировки начала и окончания раздела, но простое их появление задает деление текста на группы. Как вы увидите в следующем месяце, в DocBook все иначе.
Задание структуры и разбиение на разделы
Как и в TeX'е, мы просто набираем текст, разделяя абзацы пустыми строками. В зависимости от используемых средств трансляции абзацы получаться с выключкой или даже выравненными по ширине.Главные команды секционирования введены в разделе Тело документа. Команды @node групируют вводимый текст и разбивает его на куски, пригодные для чтения с экрана. Сопровождающие их TeX-подобные команды секционирования делают то же самое, но при печати. В частности, Texinfo предлагает следующие команды разделов: chapter, section, subsection и subsubsection.
Пожалуйста не забывайте, что -- для упрощения дальнейшего сопровождения -- за каждой командой @node должна следовать одна из команд секционирования при печати.
Заголовок
Заголовок -- необязательная часть файла Texinfo, но она появляется во всех докумнетах. В ней по меньшей мере содержится имя выходного файла для просмотра на экране и заголовок, который используется при выводе на печать.Имя выходного файла задается командой @setfilename output-filename. Я советую добавлять к имени-выходного-файла расширение .info, поскольку файлы с расширением удобнее для работы -- просто представьте результат ls *.info! Вся строка справа от @setfilename является аргументом команды, так что никаких коментариев после имени выходного файла. Кошмар!
Заголовок устанавливается командой @settitle заголовок-документа. Как и раньше, весь текст до конца строки является аргументом команды. Заголовок (как он задан командой @settitle ) используется для печати колонтитулов. Он не имеет ничего общего с названием документа, которое ставиться на первой странице (если таковая имеется).
Простейший заголовок выглядит так:
@setfilename example.info
@settitle Пример Texinfo
Другие полезные в заголовках команды:
По умолчанию в Texinfo размер бумаги полагается равным 8,5 дюймов на 11 дюймов. За пределами Северной Америки размеры бумаги принято указывать в соответствии с DIN -- Deutsche Industrie Norm -- Германским промышленным стандартом. Командыљ@afourpaper и @afourwide изменяют область вывода текста в соответсвии с размером бумаги DIN A4, при этом @afourwide делает область печати несколько шире, что, впрочем, не означает перехода к альбомной ориентации листа.
Совет: никогда не вредно проверить размер бумаги перед печатью "импортного" документа.
on Каждая глава будет начинаться с новой страницы. Страница и колонтитулы форматируются для односторонней печати. Это настройки по умолчанию. off Новая глава не будет начинаться с новой страницы, вместо этого добавляется дополнительное пустое пространство. Используются колонтитулы для односторонней печати. odd Начинает главы на нечетных страницах. Колонтитулы форматируются для двухсторонней печати ("recto verso").
Имейте в виду, что команда @setchapternewpage even не определена.
asis
Не менять имеющийся отступ. number
Использовать абзацный отступ в number пробелов. number может быть и нулем.
Совет: Все разработки GNU поставляются с документацией в формате Texinfo. Если вы хотите распечатать ее сами, то сначала лучше изменить заголовок файлов Texinfo в соответствии с применяемым размером бумаги (Letter, A4) и используемым оборудованием (принтер для двусторонней печати и т.д.).
Загрузка пакета fontenc
Пакет fontenc предназначен для указания внутренней кодировки шрифта TeX, которую надлежит использовать при компиляции документа, и загружается строкой вида\usepackage[(список кодировок)]{fontenc}
"Переходником" к загрузке данного пакета в LyX служит параметр \font_encoding, который можно задать либо вручную в конфигурационном файле, либо через поле "TeX encoding", расположенное в диалоге "Preferences…" (вкладка "Outputs", на ней вкладка "Другие"). Любопытно, что создатели LyX не только вынесли сей параметр в глобальные настройки программы (полагая, очевидно, что у пользователя не возникнет потребности в его частом изменении), но и "спрятали" его на вкладке, не имеющей отношения к установкам языкового окружения. По умолчанию предлагается использовать кодировку T1, которая ныне является стандартом для языков Западной Европы. Можно (но не рекомендуется) установить \font_encoding в "default" – в этом случае пакет fontenc не загрузится вообще, и LaTeX будет использовать устаревшую 7-битную кодировку OT1. Существования кириллических кодировок авторы не предусмотрели, однако использовать их не составит труда, поскольку сам LyX не интересуется значением \font_encoding, а только передает его пакету fontenc.
Возможно, у читателя возникнет недоумение: зачем понадобилось создавать специальные кодировки для TeX, когда изобилие существующих кодовых страниц и так служит источником неразберихи. Дело заключается в том, что система TeX по традиции предъявляет определенные требования к своим шрифтам. Например, в них должны быть латинские лигатуры и полный набор акцентов-модификаторов, причем всё это хозяйство обычно размещается в таблице символов в диапазоне 0–32 (на использование данной области в TeX не существует запрета, поскольку нет и потребности в управляющих кодах). Есть свои предпочтения по отношению к типографским символам: некоторые из них непременно должны присутствовать в таблице, другие же выносятся в специальные символьные шрифты. Освободившееся место используется для дополнительных букв, в результате чего, например, кодировка T1, хотя она и основана на западноевропейской кодовой странице iso-8859-1, фактически включает также и символы центральноевропейского набора.
С этими требованиями и должны сообразовываться кодировки TeX для кириллицы. Таковых существует несколько. Особенно хотелось бы предостеречь от использования кодировки LCY, основанной на cp866. Еще недавно эта кодировка была фактическим стандартом для постсоветского пространства. Однако ныне на смену ей пришла серия кодировок T2, существующая в трех ипостасях (T2A, T2B, T2C). Все три кодировки совместимы между собой и с cp1251, на которой основаны; различие же их заключается в средней области таблицы (128–191). В T2A здесь размещены символы славянских алфавитов из cp1251, сдобренные "азиатской кириллицей", в то время как в других двух кодировках "азиатская кириллица" царствует безраздельно. Существует также "идеологически чистая", но весьма громоздкая кодировка X2, которая включает все кириллические буквы из кодировок серии T2 (а также символы старой орфографии), но зато не содержит латинского алфавита.
Из сказанного вытекает, что наиболее целесообразным в большинстве случаев является использование кодировки T2A. Она и в самом деле по умолчанию загружается пакетом поддержки русского языка (о котором речь ниже) в том случае, если ни одна из кириллических кодировок не упомянута в опциях пакета fontenc. Так что исходное значение параметра \font_encoding, собственно говоря, можно оставить без изменений. Однако же явное указание кодировок является одним из признаков хорошего тона при работе с LaTeX, поэтому не будет ошибкой заменить T1 на T2A. Впрочем, правильнее всего будет передать пакету fontenc сразу два значения, разделив их запятой, например: \font_encoding "T1,T2A"
Такое решение следует настоятельно рекомендовать тем пользователям, которым приходится включать в свои документы фрагменты текста на западноевропейских языках. Абсолютно необходимым оно будет также в том случае, если для кириллицы используется кодировка, не содержащая латинского алфавита (как X2).
Загрузка пакета inputenc
Пакет inputenc служит для указания кодовой страницы исходного файла и загружается командой\usepackage[(список кодировок)]{inputenc}
Нечего и говорить, сколь важен данный пакет для русскоязычных пользователей: именно он (в паре с fontenc) дает возможность одинаково успешно пропускать через компилятор LaTeX файлы, подготовленные в различных операционных системах и при различных установках кодовой страницы.
В отличие от внутренней кодировки TeX, кодировка исходного файла задается в LyX для каждого документа отдельно. Для этой цели нужно открыть вкладку "Язык" диалогового окна "Формат документа". На ней обнаруживаем раскрывающийся список "Language" (естественно, надо убедиться, что его значение выставлено правильно, иначе дальнейшее не имеет смысла). Ну а чуть ниже как раз и расположен другой список, под названием "Кодировка". В общем-то, на его содержание грех жаловаться (налицо все кодировки кириллицы), однако же нельзя не удивиться тому, что данный список жестко задан в ресурсах соответствующего диалога, и, соответственно, способа пополнить его не существует. Ведь со стороны авторов по меньшей мере наивно было бы предполагать, что они в состоянии предусмотреть все кодовые страницы, с которыми могут пожелать работать пользователи.
С другой стороны, понятно, почему названия кодировок нельзя было взять из системы. Дело в том, что опции пакета inputenc суть не что иное, как названия совершенно определенных файлов (они имеют расширение .def), которые должны подчиняться соглашению 8.3 ради сохранения совместимости с версиями TeX для других платформ. Поэтому длинные имена вроде "microsoft-cp1251.def" (и даже "iso-8859-5.def") были бы здесь неприемлемы. Однако же следовало хотя бы предоставить пользователю возможность ввести требуемое имя кодировки вручную.
Впрочем, вместо явного задания входной кодировки можно выбрать в списке опцию "auto" (а именно она выставлена там по умолчанию). Тогда LyX сам подберет кодировку, исходя из выбранного языка документа и руководствуясь при этом своей базой данных, которая хранится в файле languages в его программном каталоге. Только следует иметь в виду, что при использовании "автоматического" режима LyX загрузит соответствующие входные кодировки не только для основного языка документа, но и вообще для всех языков, встретившихся в нем. И, соответственно, входная кодировка будет динамически переключаться в разных местах на протяжении документа. Пользы от этого, впрочем, мало по уже упомянутой причине: нет возможности заодно менять и кодовую страницу экранного шрифта. Если же вы всё-таки хотите воспользоваться этой возможностью, то файл languages придется предварительно отредактировать, поскольку кодировки в нем по необъяснимой причине приведены под общепринятыми именами, а не под "псевдонимами", понятными LaTeX. В противном случае компилятор сможет нормально воспринимать чисто русские документы в koi8-r, но непременно споткнется на названиях латинских кодовых страниц серии iso-8859.
Наконец, в списке кодировок можно выбрать опцию "default". В этом случае пакет inputenc не загрузится вообще, и, соответственно, никакой перекодировки исходного файла при его компиляции осуществляться не будет. Данный номер пройдет безнаказанно только для русского (но не украинского!) текста в cp1251, поскольку именно на ней основана серия кодировок T2. Однако в любом случае пренебрежение необходимостью явно указывать входную кодировку следует считать признаком дурного тона.
Чтобы закончить разговор о о диалоге "Формат документа" и его вкладке "Язык", упомянем о том, что на ней имеется также группа опций "Quote style" (то есть "Стиль кавычек"). LyX, как и всякий уважающий себя текстовый процессор, умеет автоматически расставлять парные кавычки при наборе текста. Так вот, правила русской пунктуации требуют использовать двойные кавычки-"елочки", то есть кавычки французского стиля, именуемые в международной терминологии guillemots. Именно их и надлежит выбрать в раскрывающемся списке. Не смущайтесь даже в том случае, если вместо нужных символов увидите в нем вопросительные знаки (а если ваша основная кодировка – koi8, то ничего другого вы и не увидите, потому что типографские знаки препинания отсутствуют в ней как класс). Всё равно в тексте документа кавычки будут отображаться в виде двойных угловых скобок, как это и принято в исходниках LaTeX. Ну а в откомпилированном для печати файле они примут нормальный вид.
Загрузка пакета многоязыковой поддержки
Мне уже приходилось несколько раз упоминать о таком показателе, как язык документа. Настала пора рассказать о том, для чего он требуется LyX. Ведь не для проверки же орфографии: реализация этой последней в LyX не имеет никакого отношения к его взаимодействию с LaTeX. Однако правильная установка языка совершенно необходима хотя бы для правильного выбора внутренней кодировки: ведь, загрузив список кодировок в опциях пакета fontenc, мы еще не указали, к какой части документа надлежит применить каждую из них. Это как раз и должны сделать пакеты поддержки соответствующих языков. Но самое главное их назначение заключается в том, чтобы дать LaTeX указание использовать надлежащий алгоритм переноса. Кстати говоря, чтобы LaTeX мог осуществлять перенос слов на русском языке (равно как и на любом другом), его надлежит определенным образом сконфигурировать. Как это сделать – читайте в руководствах по LaTeX: LyX к данной процедуре не имеет никакого отношения, и, соответственно, ее нет возможности обсуждать в рамках посвященной ему статьи.Но предположим, что этот этап благополучно минул. Тогда наша задача состоит в том, чтобы дать знать LyX, какой синтаксис использовать для загрузки поддержки требуемых языков. Делается это в диалоге "Preferences…" на вкладке "Lang Opts" (на ней вкладка второго уровня "Язык"). Наиболее важным здесь является поле под названием "Package". Еще сравнительно недавно поддержка русского языка в LaTeX обеспечивалась за счет загрузки различных версий пакета russian, не имевших ничего общего, кроме названия. Соответственно, в поле "Package" нам пришлось бы прописать что-то вроде \usepackage{russian}. Далее на вкладке имеются поля "Command start" и "Command end" для указания команд, которые должны отмечать начало и конец блока на том или ином языке. В данном случае они, скорее всего, приняли бы вид \begin{$$lang} и \end{$$lang}, где вместо $$lang программа подставляла бы значения "russian" и "english". Кроме того, возможно, пришлось бы пометить флажки "Auto begin" и "Auto finish", чтобы команды \begin{russian} и \end{russian} автоматически вставлялись в начало и конец документа LaTeX.
Ныне же в стандартную поставку LaTeX входит пакет babel, обеспечивающий поддержку всех европейских языков, включая и русский. Именно этот пакет по умолчанию используется LyX, и потому нам нет причин отвергать предлагаемые им установки: команда загрузки пакета – \usepackage{babel}, команда переключения языков – \selectlanguage{$$lang}. Следует отметить лишь одну тонкость: стандартный синтаксис загрузки пакета babel предусматривает включение списка требуемых языков в качестве опций. Например, так:
\usepackage[english,german,russian]{babel}
Однако babel в состоянии воспринимать и названия языков, указанных еще до его загрузки в числе глобальных параметров документа. LyX поступает с ними именно так, чем и объясняется предлагаемая по умолчанию загрузка пакета babel без всяких опций. В качестве основного babel использует тот язык, который был загружен последним, и LyX прекрасно об этом знает, так что в активизации опций "Auto begin" и "Auto end" нет необходимости.
В ходе работы над текстом показатель языка можно устанавливать и изменять через диалоговое окно "Стиль символов". Список доступных языков достаточно обширен и, кроме того, его можно дополнить, так как берется он всё из того же файла languages. Естественно, надо убедиться, что нужный вам язык действительно поддерживается пакетом babel. LyX выделяет на экране фрагменты текста на иностранном (то есть не совпадающем с основным для данного документа) языке, подчеркивая их синей линией. Данный режим можно и отключить, но лучше этого не делать: представьте-ка себе, что может получиться на печати, если вы по ошибке пометили русский текст как английский, да еще и забыли об этом. Обратное же обычно допустимо, так как большинство кириллических кодировок содержит и латинские буквы. Тем не менее, явное указание показателя языка (хотя бы для фрагментов длиной в несколько строчек) считается признаком хорошего тона. И последнее: для часто используемых языков имеет смысл назначить горячие клавиши, например:
\bind "F11" "language russian" \bind "F12" "language english"
Как и многие другие, эти команды могут быть помещены в конфигурационных файлах LyX, но наиболее подходящее для них место – пользовательский bind-файл. Ну а LyX в процессе генерации документа LaTeX обязательно проверит файл на предмет использованных языков и приведет их список в преамбуле.
LyX будет приятным сюрпризом для
LyX будет приятным сюрпризом для пользователей LaTeX и SGML, потому что он имеет те же основы. Пользователи, которым нужно очень высокое качество печати, оценят мощность LyX-LaTeX. Только пользователи, которым нужен полный контроль над точным окончательным результатом могут быть разочарованы.Возможности языка DocBook XML велики.
Возможности языка DocBook XML велики. Например преобразование в другие форматы. Эта заметка представляет краткое вступление. Вопросы можно задать на странице отзывов для данной статьи. Дополнительная информация в ссылках [8] и [9]. Обратите внимание, что последний пункт в разделе "Ссылки" в формате DocBook!Остались без обсуждения следующие возможности DocBook :
Заключение (субъективное).
Несколько слов о том, что и в каком случае удобно использовать. Как универсальное средство могу рекомендовать phpMyLingvo. Почему? Работая в веб-браузере, вам не нужно задумываться о том какая именно операционная система стоит на том конце, откуда приходит html-код. Вы просто набираете адрес и начинаете веб-сёрфинг. Поэтому, если у вас гетерогенная сеть, то попробуйте именно phpMyLingvo. Кроме этого, веб-интерфейс имеет ещё одно неоспоримое преимущество -- вы можете работать в текстовом режиме (если у вас, конечно, есть соответствующий веб-браузер -- links, lynx и т.п.).Если вы не привыкли работать с веб-браузерами, тогда в вашем распоряжении GtkDic/PtkDic или JaLingo. По функциональным возможностям первый обгоняет второго. Это неоспоримо. Но если вам хочется поработать с симпатишым Lingvo-подобным клиентом, то JaLingo подходит тут идеально. Правда, в его случае есть один недостаток -- нужно выкачать из Интернета пакет j2re. А это иногда кусается.
В любом случае решайте сами. Хотите почувствовать себя гедонистом -- возьмите JaLingo. Нет времени настраивать на каждой рабочей станции доступ к словарям -- вам по пути с phpMyLingvo. Хотите использовать печать, обратный поиск и возможность добавлять новые статьи -- работайте с GtkDic/PtkDic.
Умф. Вот, в принципе, и всё. Надеюсь, что-то вам приглянется. Если так, то не забудьте написать о своих впечатлениях автору (или авторам) программы. Удачи и красивых переводов!
Заключительные замечания.
txt2html - это более чем простой скрипт- менее 170 строк. Его можно легко расширить добавлением других html команд, например для создания фрэймов: показывающих оглавление рядом с текстом, а не вверху. Пожалуйста, присылайте мне Ваши коментарии или предложения на эту тему и я постараюсь сделать такие добавления в скрипт.Замена текста
C Заменить от текущей позиции курсора до конца строки. R Заменить текст до нажатия клавиши "Escape". S Заменить всю строку. c Заменить. "cc" заменяет текущую строку. Аргумент count определяет количество строк. r Заменить символ в позиции курсора. Аргумент count определяет количество символов. s Заменить символ в позиции курсора и перейти в режим вставки текста. Аргумент count определяет количество символов. Символ ($) будет установлен на последнем символе для замены.Запись и выполнение макросов.
Emacs может запоминать, а затем воспроизводить, последовательности комбинаций клавиш. Начало и конец записи осуществляется нажатием комбинации C-x, а далее должна следовать одна из круглых скобок. Комбинация C-x ( запускает команду start-kbd-macro - начало записи макроса, а заканчивает запись комбинация C-x ) (end-kbd-macro) - конец записи.Комбинация C-x e запускает команду call-last-kbd-macro. Данная команда запускает последний записанный макрос.
Если нужно создать несколько макросов, то создаваемым макросам нужно присвоить имена. Для этого из командной строки в окне минибуфера (комбинация M-x) запускается команда name-last-kbd-macro. После нажатия ввода, редактор предложит ввести имя макроса. Допустим это имя - testmacro, тогда из командной строки (комбинация M-x) для запуска данного макроса нужно будет набрать testmacro и нажать ввод.
При выходе из Emacs большинство макросов (именованных и нет), определенных в данной сессии, будут утрачены. Как этого избежать будет показано в конце главы.
ЗАПОМИНАНИЕ / ВСПОМИНАНИЕ
^Y Вспомнить символы / yank M-y Вспомнить предыдущие символы ^@ Запомнить угол региона. (set-mark-command) ^W Удалить с запоминанием ^X x Запомнить в регистре M-d Удалить слово с запоминанием kill-word M-w Запомнить регион ^X x R Запомнить регион в регистре (copy-to-register) ^X g R Вспомнить регистре (insert-register)Запуск и завершение работы в Emacs
Чтобы запустить редактор Emacs просто введите в командной строке| emacs |
или, если это позволяет окружение, дважды щелкните на соответствующей иконке.
После запуска редактора (без имени файла в качестве параметра) на экране отображается информация о версии Emacs (см. рис. Окно редактора Emacs.).

Окно редактора Emacs.
Нижняя строка, в которой написано "For informafion about..." (см. рис. Окно редактора Emacs.), называется окном "минибуфера" (minibuffer). Пользователь вводит в этом окне соответствующие команды, а редактор выводит в это окно различные сообщения. Например, сообщение о необходимости сохранения файла при выходе.
Прямо над окном минибуфера располагается "строка состояния" (mode line), в которой присутствует справочная информация: имя редактируемого файла (или буфера), информация об установках редактора и т.п.
В строке состояния, помимо прочего, указывается какой "расширенный" (major) режим задействован для данного буфера. Расширенный режим позволяет установить набор специфических команд для какого-либо типа файлов. Напротив, "обычный" (minor) режим использует вполне определенный набор установок.
Возможность настройки расширенного режима позволяет настроить Emacs для работы с текстами программ различных языков программирования. На самом деле, данное руководство посвящено описанию расширенного режима - режима работы с PSGML.
При запуске Emacs в качестве параметра можно указать имя файла. Для этого в командной строке нужно набрать:
| emacs myfile.txt |
Если файл с таким именем не существует, редактор создаст его.
Что же такое буфер? Буфер - это область памяти, отводимая редактором под документ. При открытии редактор считывает содержимое файла и помещает его в память компьютера. Вот почему все несохраненные изменения будут утрачены при "зависании" компьютера или его выключении. Обычно буферы имеют те же имена, что и загруженные в них файлы.
Чтобы закончить сеанс работы с Emacs нажмите C-x C-c (Ctrl+c при нажатой Ctrl+x). Если версия Emacs имеет меню, то выберите пункт Exit Emacs в меню File. Если в файл не был изменен, то Emacs закроется и на экране появится командная строка (или просто закроется окно редактора). Если в файле имеются несохраненные изменения, Emacs выведет в окно минибуфера сообщение:
| Save file c:/pathname/filename.ext? (y, n, !, ., q, C-r or C-h) |
Т.е. Emacs задаст вопрос, что ему делать с этим файлом. Варианты ответов: n - выйти без сохранения, y - сохранить. Нажмите C-h, чтобы вызвать встроенную подсказку.
Если на запрос был дан ответ n, то редактор даст еще один шанс сохранить изменения и выдаст сообщение:
| Modified buffers exist; exit anyway? (yes or no) |
Запуск PSGML
Каким образом Emacs узнает о необходимости загрузки режима PSGML? Это может быть осуществлено тремя способами:При запуске Emacs с PSGML и загрузке документа, PSGML не станет анализировать документ (если переменным sgml-auto-activate-dtd и sgml-set-face заранее не присвоены значения "t") пока не будет выполнена одна из команд определенной категории. Из-за этого, в частности, нельзя выполнять автоматическое форматирование текста, которое облегчает визуальное восприятие текста при редактировании документа. Например, не происходит выравнивание уровней вложенности элементов или отсутствует отображение разметки различными шрифтами или цветом. Одна из команд, которая способна заставить работать PSGML, это команда sgml-next-trouble-spot, которая может быть вызвана нажатием C-c C-o или через пункт Next Trouble Spot меню Move. В настоящее время PSGML еще не является полноценным синтаксическим анализатором (недостатки, как будет показано в главе "Обнаружение ошибок разметки", достаточно легко устранимы). PSGML может выявить достаточно большое количество потенциальных ошибок через синтаксический анализ, в то время, как часть из них может быть обнаружена еще на стадии визуального форматирования.
Наиболее часто встречающаяся проблема, с которой сталкивается команда sgml-next-trouble-spot связана с тэгами. Это может быть неизвестный вид тэга, или неверное расположение тэга в тексте, или непарные скобки тэга. Если ошибок не обнаружено, то курсор перемещается в конец документа, заканчивает визуальное форматирование, и отображает в окне минибуфера сообщение Ok.
С большим числом элементов DTD, подобный синтаксический анализ может потребовать времени. При этом в окне минибуфера будут отображаться сообщения типа "Parsing doctype" и "Garbage collecting" (сочный термин для процедуры реорганизации оперативной памяти). Ускорить данный процесс можно, если предварительно сохранить DTD в виде специальной откомпилированной версии, которую PSGML загружает гораздо быстрее. Данная процедура осуществляется запуском команды sgml-save-dtd из командной строки минибуфера M-x. PSGML предложит сохранить откомпилированную версию текста в том же самом каталоге с тем же самым именем, что и у редактируемого документа, но с расширением .ced. Если название каталога или имя файла будет изменено, то затем, при запуске команды sgml-load-dtd, нужно будет вводить полное имя пути откомпилированного файла. Если PSGML сохранят откомпилированный файл с заданным по умолчанию именем и каталогом, то при последующем редактировании этого документа, он будет сам находить эту откомпилированную версию.
Запуск:
$ cc -o example example.c $ export =%N <-- (не забыть поменять назад)$ ./example
Содержание
Last change : 08-10-1999
Значения переменных
Переменные могут интерпретироваться как числовые или строковые. Они принимают значения в зависимости от контекста, например:x = 1, x воспринимается как число;
x = " ", x - строка;
x + "abc" - результат операции интерпретируется как число независимо от того, было ли х числом или строкой. Если строка не может быть интерпретирована как число ("abc"), то ее значение становится 0.
Строка может содержать максимально до 256 символов.
Программирование: Языки - Технологии - Разработка
- Программирование
- Технологии программирования
- Разработка программ
- Работа с данными
- Методы программирования
- IDE интерфейс
- Графический интерфейс
- Программирование интерфейсов
- Отладка программ
- Тестирование программ
- Программирование на Delphi
- Программирование в ActionScript
- Assembler
- Basic
- Pascal
- Perl
- VBA
- VRML
- XML
- Ada
- Lisp
- Python
- UML
- Форт
- Языки программирования









