Страхиња Радић

КАКОДА подесим и користим ГНУ-ов Емакс уз употребу српске ћирилице?

Упутство. (верзија 1.01, 30. јул 2014.)

  1. Предуслови за рад са ГНУ-овим Емаксом и приказ ћирилице.
    1. Шта је ГНУ-ов Емакс и који програми су потребни за рад са ћирилицом у њему.
    2. Шта треба знати о кодним распоредима.
    3. Потребни фонтови и њихова инсталација.
  2. Подешавање ГНУ-овог Емакса.
    1. Подешавање подразумеваног кодног стандарда за чување датотека и унос текста.
    2. Подешавање подразумеваног фонта.
    3. Наредбе за српске интерпункцијске знакове.
  3. Употреба ГНУ-овог Емакса за унос ћириличног текста.
    1. Метод за унос текста преко тастатуре и његово пребацивање.
    2. Експлицитно постављање кодирања.
    3. Коментари за аутоматско препознавање стандарда кодирања.
  4. Завршне речи
  5. Фусноте
  6. Литература

1. Предуслови за рад са ГНУ-овим Емаксом и приказ ћирилице.

1.1. Шта је ГНУ-ов Емакс и који програми су потребни за рад са ћирилицом у њему. ГНУ-ов Емакс је уређивач текста који је први програм изграђен у оквиру Пројекта ГНУ. То је верзија програма Емакс која је независно развијана „од нуле“ као слободни софтвер. Његов назив (на енглеском Emacs, а не Emax!) потиче од енглеског назива Editor Macros (макро[-програм]и уређивача). Временом је овом програму додавано све више одлика, па се он данас шаљиво назива засебним оперативним системом (што он свакако није, већ само један део оперативног система ГНУ).

Да бисте уносили ћирилични текст уз помоћ ГНУ-овог Емакса, потребно је пре свега да имате сам ГНУ-ов Емакс. Њега можете преузети са адресе: http://www.gnu.org/software/emacs. Поред самог Емакса, уколико намеравате да радите у прозорском окружењу биће вам потребан прозорски систем, као што је Икс11. Пошто ГНУ-ов Емакс може да ради и у конзолном режиму, ово је само препорука. Уз прозорски систем Икс се обично испоручују и програми који су потребни за преглед и подешавање фонтова, као што су xfontsel (X Font Selection), xfd (X Font Display) и xrdb (X Resource Database).

1.2. Шта треба знати о кодним распоредима. Шире коришћени кодни распореди који подржавају српску ћирилицу су:

Најбоље је користити УТФ-8, пре свега зато што је у тексту који је кодиран тим форматом могуће комбиновати текст на разним писмима и користити најразличитије помоћне знакове. Међутим, његова слаба страна може бити та што још увек постоје програми који не могу да га протумаче или је њихова подршка за тај стандард лоша. У таквим случајевима се на униксоликим системима какав је ГНУ са Линуксом користи стандард међународне организације за стандарде(1), изо 8859-5. Ипак, тиме се губе неки детаљи, као што су српски интерпункцијски знаци „дугачка црта“ (—), „наводници“ („“) и „полунаводници“ (‘’).

ГНУ-ов Емакс подржава све те распореде, уз ограду да је за CP 1251 потребно инсталирати додатни пакет.

1.3. Потребни фонтови и њихова инсталација. Да бисте видели ћирилични текст, потребни су вам ћирилични фонтови. Уколико користите формат УТФ-8, фонтови који подржавају тај распоред углавном садрже и ћирилична слова, али постоје и контрапримери, па проверите да ли такав фонт садржи ћирилична слова и да ли садржи посебна српска ћирилична слова ЂЉЊЋЏ.

Неки од фонтова који нису ограничени власничким лиценцама и могу се преузети са Интернета, а садрже српска ћирилична слова су:

Инсталација фонтова под Иксом би требало да је већ позната корисницима ГНУ-а са Линуксом, али ево шта је, укратко, потребно урадити:

  1. Прекопирати фонтове у формату PCF (који се може добити из формата BDF уз помоћ програма bdftopcf) или TTF у директоријум који се налази у путањи која је задана Иксовом серверу за фонтове (обично поддиректоријуми директоријума /usr/share/X11/fonts).
  2. Покренути програм mkfontdir или, у случају фонтова у формату TTF, програм ttmkfdir. По мом искуству, на неким дистрибуцијама је њихов излаз потребно ручно преусмерити у датотеку fonts.dir, на пример mkfontdir > fonts.dir. Ипак, ово у данашње време није стандардан начин њиховог позивања.
  3. Поново покренути Иксов сервер за фонтове (на већини дистрибуција ГНУ-а са Линуксом, које користе списе за покретање система у стилу Система V, ово се постиже наредбом /etc/rc.d/init.d/xfs restart) или, у недостатку бољег решења, поново покренути читав систем.

2. Подешавање ГНУ-овог Емакса.

2.1. Подешавање подразумеваног кодног стандарда за чување датотека и унос текста. Подешавање ГНУ-овог Емакса за рад са ћирилицом се може извести и директно из прозорског окружења, позивањем менија Options→Mule (Multilingual Environment)→Set Language Environment и, у зависности од тога да ли сте се определили за УТФ или изо 8859-5, подменија UTF-8 или Cyrillic→Cyrillic-ISO. После овога је потребно изабрати ставку главног менија Options→Save Options. Ипак, ако овако поставите подешавања, мораћете да приликом сваког покретања ГНУ-овог Емакса постављате метод уноса текста на српски преко менија Options→Mule (Multilingual Environment)→Select Input Method... и уносом cyrillic-serbian, што се може избећи непосредним мењањем датотеке ~/.emacs. У том случају је потребно у тој датотеци поставити одговарајуће променљиве додавањем параметара наредби custom-set-variables:

(custom-set-variables
  ;; ...
  ;; Разне друге поставке...
  ;; ...
  '(current-language-environment "Cyrillic-ISO")
      '(default-input-method "cyrillic-serbian"))

за изо 8859-5, или

(custom-set-variables
  ;; ...
  ;; Разне друге поставке...
  ;; ...
  '(current-language-environment "UTF-8")
      '(default-input-method "cyrillic-serbian"))

за УТФ-8. Овим смо поставили променљиву default-input-method, како би при пребацивању метода за унос текста био позван исправан метод, и променљиву current-language-environment, како би при чувању и учитавању датотека аутоматски био употребљен одговарајући кодни распоред.

Пазите да правилно затворите заграде! Уколико додајете ред на крај позивања ове наредбе, пре самог додавања обришите последњу затворену заграду и унесите ред из једног од претходних примера, са две затворене заграде. Ово можете проверити у самом Емаксу уколико је укључен show-paren-mode, што можете постићи на следећи начин: META+x, show-paren-mode, ENTER (META је углавном тастер ALT). Уколико је тај режим био искључен, у дну екрана ће се појавити текст Show-Paren mode enabled, а иначе Show-Paren mode disabled, што значи да морате поновити позивање наредбе show-paren-mode на претходни начин. Када је укључен режим show-paren-mode, довољно је да померите курсор на заграду да би била означена заграда која јој одговара (ако се она не налази сувише „далеко“, преко једног екрана текста), па ћете тако моћи да видите да ли сте унели превише заграда.

Такође, на почетку реда кога треба додати се налази апостроф (који се добија притиском на тастер који на себи има и наводник, "), а не обрнути апостроф (који се добија притиском на тастер који на себи има и тилду, ~).

2.2. Подешавање подразумеваног фонта. Да би фонт могао да се исправно користи у ГНУ-овом Емаксу, најбоље је, мада није и неопходно, да буде у стандарду изо 10646-1 (Уникод). У супротном, могуће је да неки знакови буду исписани другим фонтом или да буду замењени квадратићима. У тачки 1.3 је већ описано како набавити и подесити неке фонтове у Иксу. После тога је потребно сазнати његово име, што можете урадити програмом xfontsel, који приказује списак свих фонтова на систему и, када једном изаберете жељени фонт, пружа могућност копирања његовог назива у формату Иксовог сервера за фонтове. На пример, пун назив ГНУ-овог Унифонта у овом формату може бити:

-gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1

Када смо сазнали овај податак, потребно је да изменимо датотеку у којој се постављају ресурси Икса (обично је то датотека ~/.Xdefaults). Потребно је у тој датотеци наћи (или у њу додати) ред:

emacs*font: [назив фонта]

где је уместо [назив фонта] потребно ставити назив фонта у формату Иксовог сервера за фонтове, на пример:

emacs*font: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1

Уместо навођења пуног назива, могуће је користити и тзв. „џокерске знаке“, као при навођењу параметара наредби у конзоли. На пример:

emacs*font: *-unifont-*-iso10646-1

Пошто сте додали ове редове, потребно је да затворите ГНУ-ов Емакс и покренете програм xrdb:

$ xrdb -merge < ~/.Xdefaults

и при следећем покретању ГНУ-овог Емакса он би требало да се покрене са активираним новим подешавањима. Уколико је дошло до било какве грешке, ГНУ-ов Емакс ће одмах завршити рад после исписивања поруке о грешци, па је зато најбоље да га после било какве измене Иксових ресурса које он користи покренете из терминалског прозора наредбом emacs, како бисте видели шта евентуално није у реду. Алтернативно, уместо позивања програма xrdb, можете поново покренути Икс сервер или цео рачунар, али је то заиста непотребно.

2.3. Наредбе за српске интерпункцијске знакове. Посебни интерпункцијски знакови српског језика се у ГНУ-ов Емакс могу додавати на неколико начина, али је по мом мишљењу најбољи онај који је предложен у упутству за подешавање ГНУ-овог Емакса удружења „Наше писмо“ [1]. Тамо је предложено да се у датотеку ~/.emacs додају наредбе сличне овима:

(defun mcrta () "Vracya m-crtu" (interactive)
       (insert-char #x53974 1 t))
(defun ncrta () "Vracya n-crtu" (interactive)
       (insert-char #x53973 1 t))
(defun nava () "Vracya pocxetni navodnik" (interactive)
       (insert-char #x5397E 1 t))
(defun navb () "Vracya zavrsxni navodnik" (interactive)
       (insert-char #x5397C 1 t))
(defun jnava () "Vracya jednostruki pocxetni navodnik" (interactive)
       (insert-char #x53978 1 t))
(defun jnavb () "Vracya jednostruki zavrsxni navodnik" (interactive)
       (insert-char #x53979 1 t))

(global-set-key [?\M--] 'ncrta)
(global-set-key [?\C--] 'mcrta)
(global-set-key [?\C-"] 'nava)
(global-set-key [?\M-"] 'navb)
(global-set-key [?\C-'] 'jnava)
(global-set-key [?\M-'] 'jnavb)

После додавања ових редова и поновног покретања ГНУ-овог Емакса, моћи ћете да уносите следеће интерпункцијске знакове:

Када притиснете тастере: Емакс ће унети:
META+-
CTRL+-
(у оба претходна случаја се не користи минус на нумеричкој тастатури, већ онај испод функцијских тастера!)
CTRL+'
META+'
CTRL+SHIFT+'
META+SHIFT+'

Можда ћете морати да уместо тастера ALT, који најчешће замењује тастер META, притиснете тастер ESC, дакле уместо ALT+[нешто] притиснете ESC, отпустите га, па притиснете тастер који бисте иначе притисли уз притиснут ALT. На пример, у случају комбинације META+SHIFT+' то значи да бисте притисли ESC, отпустили га, онда притисли и држали SHIFT и, држећи притиснут тастер SHIFT, притисли тастер '.

3. Употреба ГНУ-овог Емакса за унос ћириличног текста.

3.1. Метод за унос текста преко тастатуре и његово пребацивање. Пребацивање на српски ћирилични метод се у ГНУ-овом Емаксу врши притиском на тастер CTRL+\ (обрнута коса црта, која се добија притиском на тастер на коме се обично налази и вертикална црта, |). Тада ће вам се у статусном реду ГНУ-овог Емакса (при дну Емаксовог прозора) појавити слова „ЖS“ („S“ је од Serbian, а „Ж“ је слово које графички представља ћирилицу), што значи да можете уносити ћирилични текст. Распоред тастера је у том режиму следећи:

Када притиснете тастер: Емакс ће унети:
~ ! @ # $ % ^ & * ( ) _ + > ! " # $ % & ' ( ) = ? *
` 1 2 3 4 5 6 7 8 9 0 - = < 1 2 3 4 5 6 7 8 9 0 / +
Q W E R T Y U I O P { } | Љ Њ Е Р Т З У И О П Ш Ђ Ж
q w e r t y u i o p [ ] \ љ њ е р т з у и о п ш ђ ж
A S D F G H J K L : " А С Д Ф Г Х Ј К Л Ч Ћ
a s d f g h j k l ; ' а с д ф г х ј к л ч ћ
Z X C V B N M < > ? Ѕ Џ Ц В Б Н М ; : _
z x c v b n m , . / ѕ џ ц в б н м , . -

Приметите да се функција тастера са посебним знаковима (први ред тастера испод функцијских на тастатури) разликује од оне коју ти тастери имају у стандардним српским ћириличним распоредима.

Назад на подразумевани, енглески метод за унос текста се враћате поновним притиском на CTRL+\. Назив „подразумевани“ може изгледати двосмислено, јер смо у датотеци са подешавањима подесили „default-input-method“ („подразумевани метод уноса“), али та променљива не утиче на метод који је активан при покретању ГНУ-овог Емакса или при учитавању датотека — он се без додатне интервенције корисника увек поставља на енглески латинични метод, чак и у случају да је поменута променљива постављена на неку другу вредност.

3.2. Експлицитно постављање кодирања. Уколико се отвара датотека која је кодирана другачијим стандардом од оног који је постављен као подразумевани, неки знакови ће можда бити погрешно представљени по њеном отварању. На пример, уколико смо ћирилични текст сачували у стандарду изо 8859-5, а подразумевани стандард нам је УТФ-8, датотека неће бити исправно учитана и уместо ћириличних знакова ће бити приказани неки други, па текст неће бити читљив. Зато се пре задавања наредбе за учитавање датотеке, обично комбинацијом CTRL+x, CTRL+f, [назив датотеке], ENTER, може експлицитно задати кодни стандард који ће се применити на операцију учитавања. То се постиже комбинацијом:

CTRL+x, ENTER, c, [стандард], ENTER, [жељена комбинација]

што је у нашем примеру:

CTRL+x, ENTER, c, iso-8859-5, ENTER, CTRL+x, CTRL+f, [назив датотеке], ENTER

Овакво „експлицитно задавање“ стандарда кодирања се може применити на било коју Емаксову наредбу, на пример на наредбу записивања у датотеку, CTRL+x, CTRL+w, [назив датотеке], ENTER. Уместо експлицитног задавања стандарда при сваком отварању датотеке, можете користити коментаре за његово аутоматско препознавање, који су описани у следећем одељку.

3.3. Коментари за аутоматско препознавање стандарда кодирања се могу додати у датотеке да би их ГНУ-ов Емакс аутоматски отворио користећи жељени стандард. Постоје две врсте коментара са променљивама: кратки, који се додају на почетак датотеке, и дуги, који се обично додају на крај датотеке. На пример, на крај датотеке у језику Хатеемел се може додати следећи коментар:

<!--
Local variables:
mode: html
coding: utf-8
End:
-->

и она ће, у случају да кодирање није експлицитно задано преко тастерске комбинације описане у тачки 3.2, увек бити отворена уз помоћ стандарда УТФ-8. Исто се постиже додавањем на њен почетак следећег кратког коментара:

<!-- -*- mode: html; coding: utf-8; -*- -->

У случају других програмских језика, коментари се додају на другачије начине, на пример:

% -*- mode: LaTeX; coding: iso-8859-5; -*-

(кратак коментар у ЛаТеХ-у), или:

/*
Local variables:
mode: C
coding: iso-8859-1
End:
*/

(дугачак коментар у Цеу). Овакви коментари у неким случајевима нису потребни, јер се кодирање аутоматски препознаје из других елемената саме датотеке. На пример, при уређивању Геттекстових .po (Portable Object) датотека, непотребно је задавати овакве коментаре, јер ГНУ-ов Емакс податке о кодирању учитава из првог msgstr-а у датотеци.

4. Завршне речи

Ово упутство је у потпуности написано у ГНУ-овом Емаксу оспособљеном за рад у ћирилици на начин чији су основни елементи управо изложени. Ова датотека садржи коментар за аутоматско препознавање кодирања који стандард кодирања поставља на УТФ-8. Тај коментар такође при учитавању поставља режим на html-mode, што између осталог омогућава прелом пасуса притиском на тастере META+q.

Срећан рад у ГНУ-овом Емаксу,
Аутор


5. Фусноте

  1. МОС; енгл. ISO — International Standards Organization, што према тексту са званичне странице те организације, http://www.iso.org, треба схватити као грчку реч ισος, са значењем „исто“, „једнако“, па је зато у српском ја представљам као „изо“.

6. Литература

  1. http://www.jezik.org/srpski2004/uputstva/nase_pismo/emacs.html — Упутство „Нашег писма“ за подешавање ГНУ-овог Емакса за рад са српском ћирилицом.