Next Previous Contents

4. Redaktirovanie teksta

V etom razdele ya opishu nastrojku razlichnyh tekstovyh redaktorov dlya raboty s kirillicheskimi tekstami. |tot razdel na ohvatyvaet tekstovye processory, nastrojka kotoryh opisyvaetsya pozzhe (smotri razdel Tekstovye processory)

4.1 Emacs i XEmacs

Est' dve versii redaktora Emacs - GNU Emacs i XEmacs. Oni obespechivayut bolee ili menee shodnyj nabor funkcij i vozmozhnostej. Realizaciya nekotoryh detalej rashoditsya dovol'no sil'no. Nastrojka kirillicy trebuet nekogo nizko-urovnevogo (v duhe Emacs Lispa) "haka" i nemnogo otlichaetsya dlya etih dvuh realizacij.

VNIMANIE:Pomimo nastrojki, opisannoj zdes', sushchestvuet al'ternativnyj put' obucheniya oboih versij emacs kirillice. Dlya etogo ispol'zuetsya MULE (MULtilanguage Emacs support). |tot put' neskol'ko slozhen i (na skol'ko ya znayu) redko ispol'zuetsya, poetomu ya ego zdes' ne opisyvayu.

Minimal'naya podderzhka kirillicy v GNU emacs (vam ne nuzhno etogo delat' pri nastrojke XEmacs) obespechivaetsya pri vypolnenii sleduyushchih vyzovov, dobavlennyh v .emacs (pri uslovii, chto podderzhka simvolov kirillicy ustanovlena dlya konsoli ili dlya X Windows sootvetstvenno):

(standard-display-european t)

(let ((m (current-input-mode)))
  (set-input-mode (car m) (nth 1 m) 1))

|to pozvolit vam videt' i vvodit' simvoly, nahodyashchiesya v verhnej chasti ASCII tablicy.

Odnako, etogo ne dostatochno. Emacs obrabatyvaet kirillicheskie simvoly kak special'nye, i kak sledstvie ne raspoznaet granicy russkih slov i ne delaet razlichiya mezhdu strochnymi i zaglavnymi bukvami. CHtoby obojti eto, vam sleduet neskol'ko modificirovat' tablicy sintaksisa i registra emacs:

(require 'case-table)

(let* ((ruc "\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361")
       (rlc "\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321")
       (i 0)
       (len (length ruc)))
  (while (< i len)
    (modify-syntax-entry (elt ruc i) "w  ")
    (modify-syntax-entry (elt rlc i) "w  ")
    (set-case-syntax-pair (elt ruc i) (elt rlc i) (standard-case-table))
    (setq i (+ i 1))))

Dlya etogo ya sozdal fajl rusup.el, kotoryj soderzhit eti komandy, takzhe kak i paru drugih udobnye funkcii. Vy dolzhny vyzvat' ego v vashem ~/.emacs.

Nu i v zaklyuchenii: paket russian.el, sozdannyj Valeriem Alekseevym (valery@math.uga.edu), pozvolyayushchij pol'zovatelyu pereklyuchat'sya mezhdu kirillicheskim i standartnym modami vvoda i preobrazovyvat' tekstovyj bufer iz odnoj russkoj kodirovki v druguyu (eto ochen' polezno, dlya chteniya tekstov importirovannyh iz MS-DOS ili Windows).

4.2 Rabota s vi

Redaktor vi (po krajnej mere ego klon vim, prisutstvuyushchij v bol'shinstve distributivov Linux) znaet o sushchestvovanii 8mi bitnyh simvolov. |to daet vam vozmozhnost' vvodit' kirillicheskie bukvy. Redaktor pravil'no raspoznaet granicy slov. YA nichego ne znayu po povodu pravil preobrazovaniya iz strochnyh v zaglavnye i obratno, tak kak ya ne chasto rabotayu v vi. Esli vy znaete chto-libo ob etom, to pozhalujsta soobshchite mne

4.3 Redaktirovanie teksta v joe

Dlya togo chtoby raspoznavat' 8mi bitnye simvoly joe trebuet special'nuyu opciyu -asis. Vy mozhete ukazat' ee v komandnoj stroke ili vstavit' v fajl ~/.joerc dlya lichnogo pol'zovaniya ili v /usr/lib/joerc dlya nastrojki vsej sistemy.

Esli vasha programma ne vosprinimaet -asis, to vam sleduet obnovit' ee versiyu.

Odnako, joe ne raspoznaet granicy russkih slov. YA predpolagayu, chto tozhe samoe proishodit i s perekodirovkoj iz verhnego registra v nizhnij i obratno.

4.4 Proverka pravopisaniya na russkom yazyke

Dlya proverki pravopisaniya ya ispol'zuyu programmu GNU ispell. Ona imeet ochen' gibkie nastrojki i vozmozhnosti dlya rasshireniya. Ee mozhno ispol'zovat' pri proverki pravopisaniya tekstov napisannyh na yazykah otlichnyh ot anglijskogo putem dobavleniya novyh slovarej.

Konstantin Knizhnik sozdal ochen' horoshij russkij slovar' dlya ispell. Vy mozhete najti ego na Domashnej stranichke K.Knizhnika. V postavku slovarya vklyuchen poleznyj skript, obespechivayushchij inkremental'nyj rezhim proverki pravopisaniya slov dlya emacs;

V ideal'nom sluchae vash ispell ustanovlen pravil'no, i vam nado tol'ko sozdat' slovar', ispol'zuya komandy, obespechivaemye fajlom Makefile iz distributiva. Odnako s dovol'no bol'shoj veroyatnost'yu u vas vozniknut problemy s ispell, kotoryj otkazhetsya ponimat' 8mi bitnye dannye. |to mozhet proizojti po toj prichine, chto v bol'shinstve distributivov Linux ispell skompilirovan bez podderzhki 8mi bitnyh simvolov. V etom sluchae vam ne udastsya izbezhat' perekompilyacii paketa ispell.

K schast'yu pol'zovatelej RedHat ya skompiliroval paket ispell vmeste s russkim i nemeckim slovaryami. Kak obychno, vy mozhete utyanut' ego s RedHat FTP site.

Esli vy vse sdelali pravil'no, to mozhete iniciirovat' proverku pravopisaniya dlya russkih tekstov, putem vyzova programmy ispell s opciej '-d russian'

Teper', esli vy ispol'zuete Emacs, to veroyatno vy ne protiv dobavit' punkt v menyu dlya proverki s russkim slovarem. YA poslal sootvetstvuyushchie izmeneniya k cheloveku, podderzhivayushchemu ispell.el, i on soglasilsya vklyuchit' ego v fajl pri sleduyushchem oficial'nom relize. Krome togo, vy mozhete sdelat' eto zhe putem dobavleniya sleduyushchego koda v vash ~/.emacs (ili v /usr/share/emacs/site-lisp/site-start.el dlya nastrojke vsej sistemy)

(setq ispell-dictionary-alist
  (append ispell-dictionary-alist
          '(("russian"
             "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
             "[^\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
             "[']" t ("-C" "-d" "russian") "~latin1"))))
  
(define-key-after ispell-menu-map [ispell-select-russian]
  '("Select Russian (KOI-8)" . (lambda ()
                                 (interactive)
                                 (ispell-change-dictionary "russian")))
  'british)

K sozhaleniyu, eto ne rabotaet v XEmacs. YA popytayus' razreshit' etu problemu pozzhe.


Next Previous Contents