pkg://howto-sgml-pl-2006-1mdv2008.1.noarch.rpm:984037/
usr/
share/
doc/
HOWTO/
SGML/
pl/Cyrillic-HOWTO.pl.sgml
info downloads
<!doctype linuxdoc system>
<article>
<title>The Cyrillic HOWTO<newline>
<author>Autor: Aleksander L. Belikoff<newline>
v3.0, 13 sierpień 1995<newline>
<bf>Wersja polska: Gwidon S. Naskrent
<htmlurl url="mailto:naskrent@hoth.amu.edu.pl" name="naskrent@hoth.amu.edu.pl"><newline>
</bf>
v2.0, luty 1998
<abstract>
Dokument ten opisuje jak skonfigurować swój system linuxowy aby móc pisać,
oglądać i drukować dokumenty w języku rosyjskim.
Dokument ten został napisany w standardzie ISO-8859-2.
Oryginał tego dokumentu znajduje się pod adresem
<htmlurl url="ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/">
</abstract>
<toc>
<sect>1. Uwagi ogólne<p>
<sect1>1.1 Wstęp<p>
Dokument ten obejmuje to czego potrzebujesz aby skutecznie pisać, oglądać
i drukować dokumenty po rosyjsku pod Linuxem. Chociaż dokument ten zakłada
że jako systemu operacyjnego używasz Linuxa, większość z przedstawionych
informacji stosuje się także do innych odmian Unixa. Postaram się zachować
rozróżnienie tak widocznym jak to możliwe.
Istnieje pewna liczba popularnych dystrybucji linuxowych. Jako system
przykładowy opiszę Linuxa Red Hat 3.0.3 (Picasso) oraz Red Hat 4.1
(Vanderbildt) - tego którego osobiście używam. Niemniej jednak postaram
się zaznaczyć różnice, jeśli takowe istnieją, w instalacji Linux Slackware.
Ponieważ taka instalacja bezpośrednio modyfikuje i rozszerza system
operacyjny, powinieneś zdawać sobie sprawę z tego co robisz. Chociaż
starałem się sprawy maksymalnie uprościć, posiadanie pewnego doświadczenia
z danym programem jest korzystne. Nie zamierzam opisywać czym jest system
X Windows i jak składać dokumenty używając TeXa lub LaTeXa, albo jak
zainstalować drukarkę w Linuxie. Problemy te omawiane są w innych
dokumentach.
Z tych samych powodów opisuję instalację na skalę systemową, domyślnie
wymagającą uprawnień administratora. Jeśli jednak istnieje możliwość
instalacji na poziomie użytkownika, nie omieszkam jej wspomnieć.
Uwaga: system X Windows, TeX i inne składniki Linuxa są złożonymi
systemami z wyrafinowaną konfiguracją. Jeśli coś sknocisz, możesz nie
tylko nie dokonać instalacji cyrilicy, ale popsuć składnik, jeśli nie
cały system. Nie ma to na celu cię odstraszać, lecz tylko sprawić abyś
zrozumiał powagę operacji i był ostrożnym. Wstępna kopia zapasowa
plików konfiguracyjnych jest wielce pożądana. Posiadanie pod ręką
jakiegoś guru zawsze się przydaje.
<sect1>1.2 Dostępność i uwagi<p>
Dokument ten dostępny jest na sunsite.unc.edu lub tsx-11.mit.edu jako
część Linux Documentation Project. Może także być dostępny w różnych
archiwach zawierających Linuxa. Co więcej, może także wchodzić w skład
dystrybucji Linuxa.
Można go wreszcie otrzymać bezpośrednio od autora, na ftp.netvision.net.il.
Jeśli masz jakieś pytania dotyczące tego dokumentu, nie wahaj się, proszę,
skontaktować się ze mną pod adresem belikoff@netvision.net.il. Każda nowa
i użyteczna informacja na temat obsługi Cyrilicy w różnych Unixach jest
mile widziana. Pamiętaj, pomoże to innym.
Wielu ludzi pomogło mi (i nie tylko mi) wartościowymi informacjami oraz
sugestiami. Jeszcze więcej ludzi dołożyło oprogramowania na użytek
publiczny. Przepraszam jeżeli zapomniałem kogoś wymienić.
Oto więc oni: Bas v. de Bakker, David Daves, Siergiej Wakulenko,
Siergiej O. Naoumow, Winfried Trümper, Michael van Canneyt.
Ten dokument jest (c) 1995 Aleksander L. Belikoff. Można go używać
i rozpowszechniać zgodnie ze zwykłymi warunkami Linux HOWTO opisanymi
poniżej.
Poniższe jest notką o prawach autorskich Linux HOWTO:
Dokumenty Linux HOWTO stanowią prawną własność ich autorów, chyba
że zaznaczono inaczej. Dokumenty Linux HOWTO mogą być reprodukowane
i rozposzechniane w całości lub części, w każdym fizycznym lub
elektronicznym środku przekazu, tak długo jak w każdej kopii pozostaje
niniejsza notka o prawach autorskich. Redystrybucja komercyjna jest
dozwolona i popierana; autorzy jednak woleliby zostać o takich
dystrybucjach powiadomieni.
Wszystkie tłumaczenia, prace pochodne i zbiorowe zawierające
dokumenty Linux HOWTO muszą podlegać po tą notkę o prawach autorskich.
To jest, nie możesz stworzyć z HOWTO pracy pochodnej i nałożyć
dodatkowe ograniczenia na jej dystrybucję. Wyjątki do tych reguł
mogą być udzielone pod pewnymi warunkami; proszę skontaktować
się z koordynatorem Linux HOWTO pod adresem podanym poniżej.
W skrócie, chcielibyśmy promować rozprzestrzenianie się tych
informacji tak wieloma kanałami jak to możliwe. Pragnęlibyśmy
jednakże zachować prawa autorskie do dokumentów HOWTO, i
być powiadamianymi o każdych planach ich redystrybucji.
Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem,
koordynatorem Linux HOWTO, pod adresem <tt/gregh@sunsite.unc.edu/.
Możesz użyć tego adresu z programem finger by zdobyć numer telefonu
i inne dodatkowe informacje dotyczące kontaktu.
Unix jest zastrzeżonym znakiem przemysłowym X/Open Ltd.; MS-DOS, Windows,
Windows NT i Windows 95 są zastrzeżonymi znakami Microsoft Corp.; System
X Windows jest znakiem zastrzeżonym Consortium X, Inc. Wszystkie inne
znaki zastrzeżone należą do ich odpowiednich posiadaczy.
<sect>2. Znaki i zestawy znaków<p>
Ażeby zrozumieć i wyświetlać znaki różnych języków, system i programy
muszą być zdolne odróżniać je od innych znaków. To jest, każdy pojedynczy
znak musi mieć odrębną reprezentację wewnątrz systemu operacyjnego, bądź
konkretnego pakietu programów. Taka kolekcja wszystkich odrębnych znaków
które jakiś system jest w stanie reprezentować w danym momencie nazywa
się zestawem znaków.
W czasie tworzenia największych systemów operacyjnych nikt nie dbał o to
aby programy były wielojęzyczne. Dlatego też najpopularniejszym zestawem
znaków był (i ciągle jest) ASCII (American Standard Code for Information
Interchange).
Standardowy ASCII (aka siedmiobitowy ASCII) zawiera 128 odrębnych kodów.
Niektóre z nich ASCII definiuje jako faktyczne drukowalne znaki, a niektóre
są tak zwanymi znakami kontrolnymi, które posiadały specjalne znaczenia
w starszych protokołach komunikacyjnych. Każdy element zestawu identyfikuje
kod będący liczbą całkowitą (0-127). Podzbiór znaków drukowalnych
przedstawia te które znaleźć można na klawiaturze maszyny do pisania, z
niewielkimi dodatkami. Każdy znak zajmuje siedem najmniej znaczących bitów
bajtu, podczas gdy najbardziej znaczący używany był dla celów kontrolnych
(np. kontroli transmisji w starszych pakietach komunikacyjnych).
Koncepcję ASCII siedmiobitowego rozszerzył ASCII ośmiobitowy (aka
rozszerzony ASCII). W tym zestawie zakres kodów znaków to 0-255. Dolna
połowa (0-127) to czysty ASCII, podczas gdy górna zawiera 127 dodatkowych
znaków. Ponieważ zestaw ten jest wstecznie kompatybilny z ASCII (znak
ciągle zajmuje osiem bitów, kody odpowiadają staremu ASCII), zyskał
on sobie szeroką popularność.
ASCII ośmiobitowe nie definiuje zawartości górnej połówki zestawu. Dlatego
ISO powzięło zadanie ustalenia rodziny standardów znanych jako rodzina
ISO-8859-X. Jest to zbiór kodowań ośmiobitowych, w których niższa połowa
każdego kodowania (0-127) odpowiada ASCII, a wyższa definiuje znaki dla
różnych języków. Zdefiniowano na przykład następujące kodowania:
<itemize>
<item>8859-1 - Europa Zachodnia, Ameryka Łacińska (znany też jako Latin 1)
<item>8859-2 - Europa Środkowa i Wschodnia
<item>8859-5 - cyrylica
<item>8859-8 - hebrajski
</itemize>
W Latin 1 górna połowa tabeli definiuje różne znaki które nie są częścią
alfabetu angielskiego, ale znajdują się w różnych językach
zachodnioeuropejskich (umlauty niemieckie, akcenty francuskie).
Programy które nie zakładają nic co do ósmego bitu danych ASCII zwane
są ośmiobitowo czystymi. Niektóre starsze programy, napisane z myślą o
ASCII 7-bitowym, nie są czyste ośmiobitowe i mogą działać niepoprawnie
z danymi ośmiobitowymi. Większość jednak pakietów domyślnie radzi sobie
z ośmiobitowym ASCII, albo wymaga bardzo prostego ustawienia.
UWAGA: zanim wyślesz pytanie "Wszystko ustawiłem poprawnie, a nie mogę
wprowadzać/oglądać znaków cyrylicowych!", zajrzyj do sekcji 8 co do
uwag o programie którego używasz.
Ponieważ na większości systemów ASCII zajmuje osiem bitów, nie ma już
możliwość aby ciągle je rozszerzać. Sposobem na zaimplementowanie nowych
symboli w kodowaniach opartych na ASCII jest stworzenie innej implementacji
rozszerzonego ASCII. W taki właśnie sposób zaimplementowane zostało
kodowanie cyrylicy w ASCII.
Wspomnieliśmy już o standardzie ISO-8859-5 jako określającym kodowanie
cyrylicy. Lecz jak to często bywa ze standardami, stworzono go nie biorąc
pod uwagę istniejącej praktyki w byłym ZSRR. Jedyną więc rzeczą jaką
ten standard osiągnął było spotęgowanie zamieszania. Nie powiedziałbym
że gdzieś się znacząco używa ISO-8859-5.
Innymi standardami kodowania cyrylicy są tak zwane kodowanie Alt i
strona kodowa 1251 Microsoftu. Ta pierwsza stworzona została (przez kogo?)
dość dawno temu na potrzeby MS-DOS. W tamtych czasach nie było jeszcze
tego całego szumu o internetowaniu, intencją więc było uczynienie jej
jak najbardziej kompatybilnej ze standardem IBM. Dlatego kodowanie Alt
jest w rzeczywistości stroną kodową IBM, gdzie wszystkie specjalne znaki
europejskie w górnej połówce zastąpiono cyrylicznymi, z wyłączeniem
pseudografiki. Nie rujnowało to łatwego tworzenia okienek i dawało także
znaki cyrylicowe. Standard Alt ciągle żyje i jest niesłychanie popularny
w świecie MS-DOSa.
Strona kodowa 1251 to po prostu próba Microsoftu pokazania nowego standardu
dla kodowania cyrylicy w Windows. Na ile wiem, nie jest ona kompatybilna
z czymkolwiek (niezbyt dziwne, co?)
I w końcu istnieje KOI-8. Jest ono również stare, ale zaprojektowano je
mądrze i dzisiaj założenia tego projektu wyglądają naprawdę użytecznie.
I znów, jest ono kompatybilne z ASCII, a znaki cyrylicy umieszczone są
w górnej połówce. Lecz głównym założeniem projektowania KOI-8 jest to że
pozycje znaków cyrylicy muszą odpowiadać znakom angielskim o zbliżonej
wymowie. Konkretnie, jeśli ustawimy ósmy bit w angielskim 'a', dostaniemy
'a' cyrylicowe. Oznacza to że jeśli mamy tekst pisany cyrylicą w KOI-8,
możemy uciąć ósmy bit z każdego znaku i dalej mieć czytelny tekst. Bardzo
to dzisiaj ważne, ponieważ w Internecie jest wiele węzłów pocztowych które
po prostu po cichu obcinają ósmy bit, pewne że wszyscy na całej Ziemi mówią
po angielsku.
Nic dziwnego że KOI-8 szybko stał się de facto standardem dla cyrylicy
w Internecie. Andriej A. Czernow poczynił ogromne nakłady pracy aby
ustalić w tym obszarze standard. Jest on autorem RFC 1489 ("Registration
of a Cyrillic character set").
Te dwa standardy [Alt i KOI-8] różnią się tylko pozycjami znaków
cyrylicowych w tabeli (to jest kodami znaków cyrylicowych)/
Główną różnicą jest to że kodowanie Alt używane jest tylko przez
użytkowników MS-DOS, podczas gdy KOI-8 używane jest w Unixie, a także
w MS-DOSie (chociaż w tym drugim jest znacznie mniej popularne).
Ponieważ robimy to co trzeba (to znaczy pracujemy w systemie Unixowym)
skupimy się głównie na KOI-8.
Co do standardu ISO, jest on bardziej popularny jako standard cyrylicy.
w Europie i USA. W Rosji zdecydowanie przoduje KOI-8.
Istnieją i inne standardy, różne od ASCII i o wiele bardziej elastyczne.
Najbardziej znanym jest Unicode. Nie są jednak one zaimplementowane
tak dobrze jak te podstawowe w Unixie w ogólności i Linuxie w
szczególności. Dlatego też nie będę ich tu opisywał.
<sect>3. Ustawianie trybu tekstowego<p>
Zasadniczo tryb tekstowy jest najprostszą metodą pokazywania i wprowadzania
znaków cyrylicy. Istnieje jednak jedna zasadnicza komplikacja: fonty
w trybie tekstowym i operacje na układzie klawiatury zależą od implementacji
sterownika terminala. Nie ma więc przenośnej metody dla osiągnięcia tego
celu między różnymi systemami.
Za chwilę opiszę sposób radzenia sobie ze sterownikiem konsoli Linuxa.
Tak więc jeśli masz inny system, nie spodziewaj się że będzie to działać
u ciebie. Zajrzyj raczej do dokumentacji swojego sterownika terminala.
Poślij mi jednakże jakiekolwiek informacje jakie znajdziesz, tak aby mógł
włączyć je do przyszłych wersji tego dokumentu.
<sect1>4.1. Konsola<p>
Sterownik konsoli Linuxa jest dość elastycznym kawałkiem software'u.
Potrafi on zmieniać fonty oraz układy klawiatury. Aby to osiągnąć, będziesz
potrzebował pakietu kbd. RedHat i Slackware instalują kbd jako część
systemu.
Pakiet kbd zawiera narzędzia do kontrolowania klawiatury oraz znaczny
zbiór fontów i układów klawiatury.
By ustawić cyrylicę, trzeba wykonać dwie rzeczy:
<enum>
<item>Ustawienie czcionki ekranowej. Wykonywane jest to za pomocą
programu <tt/setfont/. Pliki z czcionkami umieszczone są w
<tt>/usr/lib/kbd/consolefonts</tt>.
UWAGA: Nigdy nie uruchamiaj programu setfont pod X, ponieważ zawiesi
on twój system. Dzieje się tak ponieważ działa on z odwołaniami
niskiego poziomu do karty graficznej, których nie lubi X.
<item>Załadować odpowiedni układ klawiatury programem <tt/loadkeys/.
</enum>
UWAGA: W RedHat 3.0.3 <tt>/usr/bin/loadkeys</tt> ma zbyt zawężone
prawa dostępu, konkretnie 700 (<tt/rwx------/). Nie ma powodu aby tak
było, ponieważ każdy może skompilować swoją własną kopię i uruchomić
ją (odpowiednie odwołania do systemu nie są zarezerwowane tylko dla
administratora). Poproś więc swojego sysadmina aby ustawił dlań
bardziej sensowne prawa dostępu (na przykład 755).
Oto wyciąg z mojego skryptu <tt/cyrload/, który ustawia tryb cyrylicy
dla konsoli linuxowej.
<tscreen><verb>
if [ notset.$DISPLAY != notset. ]; then
echo "`basename $0`: nie działa pod X"
exit
fi
loadkeys /usr/lib/kbd/keytables/ru.map
setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
mapscrn /usr/lib/kbd/consoletrans/koi2alt
echo -ne "\033(K" # magiczna sekwencja
echo "Użyj prawego Ctrl aby zmienić tryb"
</verb></tscreen>
Pozwól mi to nieco wyjaśnić. Ładujesz odpowiednie mapowanie klawiatury.
Następnie ładujesz font odpowiadający zestawowi znaków Alt. Później,
aby móc poprawnie wyświetlać tekst w KOI-8, ładujesz tablicę przekodowywania
ekranowego. Dokonuje ona translacji niektórych znaków z górnej połówki
kodowania na kodowanie Alt. Kluczowe znaczenie ma słowo 'niektóre' - nie
wszystkie znaki podlegają translacji, dlatego też niektóre z nich, jak
pseudograficzne znaki IBM, trafiają na ekran niezmodyfikowane i wyświetlają
się poprawnie, ponieważ są one kompatybilne z kodowaniem Alt, w
przeciwieństwie do KOI-8. Aby się upewnić, uruchom <tt/mc/ i udawaj że
jesteś znów w MS-DOS 3.3...
W końcu, owa magiczna sekwencja jest ważna, ale nie mam żadnego pojęcia
co takiego robi [resetuje konsolę i mapy odwzorowań; patrz Keyboard-HOWTO -
przyp. GSN]. Pożyczyłem/podkradłem ją z German-HOWTO jeszcze w 1994, kiedy
było no chyba jedynym HOWTO zorientowanym na języki narodowe. Jeśli masz
jakiś pomysł co do tej magicznej sekwencji, powiadomij mnie, proszę.
Dla tych purystów którzy nie chcą próbować kodowania Alt dołączam jeszcze
jedną wersję powyższego skryptu, używającą rdzennych fontów KOI-8.
<tscreen><verb>
if [ notset.$DISPLAY != notset. ]; then
echo "`basename $0`: cannot run under X"
exit
fi
loadkeys /usr/lib/kbd/keytables/ru.map
setfont /usr/lib/kbd/consolefonts/koi-8x16
echo "Użyj prawego Ctrl aby zmienić tryb"
</verb></tscreen>
Nie spodziewaj się jednak ładnych ramek w swoich okienkowych aplikacjach
tekstowych.
Chcesz to pewnie teraz wypróbować. Ustaw bash lub tcsh jak trzeba,
uruchom je ponownie, potem naciśnij prawy klawisz Ctrl i upewnij się
że otrzymujesz prawidłowe znaki cyrylicy. Klawisz 'q' musi dawać
rosyjskie 'krótkie i', w generować 'c' itd.
Jeśli coś pokręciłeś, najlepszą rzeczą jest przywrócenie ustawień
oryginalnych (tj. amerykańskich). Wykonaj następujące komendy:
<tscreen><verb>
loadkeys /usr/lib/kbd/keytables/defkeymap.map
setfont /usr/lib/kbd/consolefonts/default8x16
</verb></tscreen>
UWAGA: niestety sterownik konsoli nie jest w stanie zachować swojego
statusu (a przynajmniej nie w prosty sposób) podczas uruchamiania
X Windows. Dlatego, kiedy wyjdziesz z X (albo przełączysz zeń na
konsolę), będziesz musiał ponownie załadować rosyjski font konsolowy.
<sect1>Konsola FreeBSD<p>
Nie używam FreeBSD, tak więc nie mogłem przetestować poniższej informacji.
Trzeba zacząć od tego że wszystkie dane w tej sekcji należy traktować jako
wskaźniki. Strona domowa projektu FreeBSD może mieć jakieś informacje
na ten temat. Innym dobrym źródłem jest grupa newsowa <tt/relcom.fido.ru.unix/.
Sprawdź także zasoby wyliczone w sekcji 11.
W każdym razie, oto co Ilja K. Orechow sugeruje zrobić aby konsola
FreeBSD mówiła po rosyjsku:
<enum>
<item>dodaj w <tt>/etc/sysconfig</tt>:
<tscreen><verb>
keymap=ru.koi8-r
keyrate=fast
# UWAGA: ^[ poniżej to pojedynczy znak kontrolny [ESC]
keychange="61 ^[[K"
cursor=destructive
scrnmap=koi8-r2cp866
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
</verb></tscreen>
<item>w <tt>/etc/csh.login</tt>:
<tscreen><verb>
setenv ENABLE_STARTUP_LOCALE
setenv LANG ru_SU.KOI8-R
setenv LESSCHARSET latin1
</verb></tscreen>
</enum>
<sect1>System X Window<p>
Podobnie jak tryb konsoli, środowisko X również wymaga nieco konfiguracji.
Zawiera się w niej ustawienie trybu wprowadzania i Xowych czcionek.
Oba aspekty omówione są poniżej.
<sect2>Xowe czcionki<p>
Po pierwsze zdobyć musisz kolekcję czcionek posiadających znaki
cyrylicy w odpowiednich miejscach.
Jeśli używasz najnowszej dystrybucji X (lub XFree86), istnieje szansa
że masz już takie czcionki. W końcu 1995 X Windows System włączył zestaw
czcionek cyrylicowych, stworzonych przez Cronyxa. Zapytaj swojego
administratora systemu, albo jeśli to ty nim jesteś, sprawdź swój
system, to jest:
<enum>
<item>Uruchom <tt>xlsfonts | grep koi8</tt>. Jeśli wyliczono jakieś
czcionki, twój X-serwer już o nich wie.
<item>W przeciwnym razie wykonaj
<tscreen><verb>
find /usr -name crox\*.pcf\*
</verb></tscreen>
aby znaleźć miejsce czcionek cyrylicowych na serwerze. Będziesz musiał
włączyć te czcionki dla X-serwera, jak wyjaśniam poniżej.
</enum>
Jeśli nie znalazłeś takich fontów zainstalowanych, będziesz musiał to
sam zrobić.
Istnieje pewna rozbieżność co do czcionek. XFree86 twierdzi że kolekcję
czcionek rosyjskich zamieszczonych w dystrybucji stworzył Cronyx. Niemniej
na sieci znaleźć można inne czcionki cyrylicowe Cronyxa (np. na
<tt/ftp.klae.su/), znane jako pakiet <tt/xrus/ (nie myl go z programem
<tt/xrus/, który używany jest do ustawienia układu klawiatury cyrylicy).
Na szczęście ten drugi został ostatnio przemianowany na <tt/xruskb/.
<tt/xrus/ ma mniej czcionek niż kolekcja w XFree86 (38 wobec 68), ale
te drugie czcionki nie chciały działać z moim ustawieniem Netscape -
dawały mi jakąś strasznie dużą czcionkę w pasku menu. Pakiet <tt/xrus/
nie stwarzał tego problemu.
Sugerowałbym ściągnięcie i wypróbowanie obydwu. Wybierz ten który bardziej
ci się podoba. Mam także zamiar wkrótce stworzyć pakiety RPM dla obu
kolekcji i podładować je do <tt/ftp.redhat.com/ oraz mojego FTP.
Istnieją także starsze rzeczy, na przykład pakiet VakuFonts, stworzony przez
Sergieja Wakulenko <tt>(<htmlurl url="mailto:vak@cronyx.ru">)</tt>, który
tworzył podstawę dla tego w dystrubucji X. Istnieją też inne. Ważną rzeczą
jest to że nazwy czcionek w starszych kolekcjach nie całkiem ściśle
stosowały się do standardów. Późniejsze są w zasadzie w porządku, ale
czasami wywołać mogą różne dziwne błędy. Miałem na przykład niemiłe
doświadczenia z Maple V dla Linuxa, który wykładał się tajemniczo z
pakietem VakuFonts, ale działał bez zarzutu ze "standardowymi".
Zacznijmy więc od czcionek:
<enum>
<item>Ściągnij odpowiednią kolekcję czcionek. Pakiet dla XFree86 można
znaleźć w każdym FTP zawierającym dystrybucję Xa, na przykład [możesz
ją ściągnąć] bezpośrednio z FTP XFree86. Pakiet <tt/xrus/ znaleźć
można na <tt/ftp.klae.su/.
<item>Teraz kiedy masz czcionki, stwórz dla nich jakiś katalog. Zwykle
złym pomysłem jest wsadzanie nowych czcionek do już istniejącego
katalogu. Umieść je więc w, powiedzmy, <tt>/usr/lib/X11/fonts/cyrillic</tt>
dla instalacji całosystemowej, albo po prostu utwórz katalog prywatny dla
użytku osobistego.
<item>Jeśli nowe czcionki są w formacie BDF (pliki *.bdf), musisz je
skompilować. Wykonaj dla każdej czcionki
<verb>
bdftopcf -o name.pcf name.bdf
</verb>
Jeśli twój serwer obsługuje czcionki skompresowane, skompresuj je używając
programu <tt/compress/
<verb>
compress name.pcf
</verb>
Jeśli chcesz wsadzić nowe czcionki do już istniejącego katalogu, będziesz
musiał połączyć stary i nowy <tt/font.alias/. w przypadku gdy oba istnieją,
np.
<verb>cat font.alias.new >> font.alias</verb>
Teraz, żeby wszystko ustawić, powinieneś wykonać trzy rzeczy:
<item>Każda katalog z czcionkami w X musi zawierać listę znajdujących
się w nim czcionek. Lista ta przechowywana jest w <tt/fonts.dir/. Nie
musisz jej tworzyć ręcznie. Zamiast tego, wykonaj
<verb>
cd <katalog_z_nowymi_czcionkami>
mkfontdir
</verb>
<item>Musisz teraz powiadomić X-serwer o tym katalogu z czcionkami. Masz
tu kilka opcji:
<itemize>
<item>Instalacja dla całego systemu XFree86. Jeśli uruchamiasz tą wersję
X, dołącz nowy katalog do listy katalogów w <tt/XF86Config/. Aby znaleźć
położenie tego pliku spójrz na wyjście <tt/startx/. Patrz też
XF86Config{4,5} po szczegóły.
<item>Instalacja dla całego systemu poprzez <tt/xinit/. Dodaj katalog
startowy do pliku startowego <tt/xinit/. Patrz xinit(1x) i następny punkt
po szczegóły.
<item>Instalacja osobista. Masz specjalny plik startowy dla X -
<tt>~/.xinitrc</tt> (albo <tt>~/.Xclients</tt>, albo <tt>~/.xsession</tt>
dla użytkowników RedHata). Dodaj do niego następujące komedy:
<tscreen><verb>
xset +fp katalog_z_czcionkami
xset fp rehash
</verb></tscreen>
<item>Zrestartuj teraz X. Jeśli wykonałeś wszystko prawidłowo, testy
na początku sekcji powiodą się. Pobaw się także xfontsel(1x), aby się
upewnić że możesz wybierać czcionki cyrylicowe.
</itemize>
</enum>
Aby klienci X używali czcionek cyrylicowych, musisz ustawić odpowiednie
X-zasoby. Na przykład, ustawiam czcionkę rosyjską jako domyślną w swoim
~/.Xdefaults:
<tscreen><verb>
*font 6x13
</verb></tscreen>
Ponieważ moje czcionki cyrylicowe są pierwsze na liście ścieżek do
czcionek (patrz rezultaty [xinit, wybrana zostanie pierwsza czcionka o
aliasie 6x13)]
To prostszy przykład. Jeśli chcesz ustawić odpowiednią część X-klienta
by używała czcionek cyrylicowych, musisz znaleźć nazwę zasobu (np.
za pomocą editres(1x) i ustalić go albo w bazie danych zasobów, albo
w linii komend. Oto kilka przykładów:
<tscreen><verb>
$ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'
$ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'
</verb></tscreen>
<sect2>Tłumaczenie danych wprowadzanych<p>
W najnowszych wersjach X (X11R61 i wyższych) istnieją dwie "standardowe"
metody wprowadzania znaków: pierwotna, działająca z użyciem programu
<tt/xmodmap/, oraz nowa, zwana (Xkb) XKeyBoard. Pierwsze co powinieneś
zrobić to wyłączyć metodę Xkb! Nie daj się oczarować jej możliwościami
ustawienia "cyrylicznej klawiatury". Wygląda na to że ta metoda używa
klawsymów zdefiniowanych w <tt/keysymdef.h/. Plik ten definiuje klawsymy
dla wielu języków. Jednym problemem jest to że te definicje nie mają
nic wspólnego z rozszerzonym zestawem znaków ASCII - jedynym na którym
potrafi wyłącznie operować większość programów! Ledwie wiem o jakiś
programach które zdolne są przetworzyć klawsymy z <tt/keysymdef.h/
różne od ośmiobitowego ASCII. Jednakowoż naszym celem jest sprawienie
żeby obsługa KOI-8 zadziałała.
Aby wyłączyć obsługę Xkb, przeglądnij sekcję Keyboard w swoim pliku
<tt/XF86Config/ i wykomentuj wszystkie linie zaczynające się od Xkb
(wielkość liter bez znaczenia). Zamiast nich, wstaw następującą linię:
<tscreen><verb>
XkbDisable
</verb></tscreen>
Program <tt/xmodmap/ pozwala na dopasowanie kodów które wysyłają różne
znaki i ich kombinacje. Ustawia on to opierając się na pliku zawierającym
tabelę tłumaczeń.
Jeśli nie chcesz zajmować się wszystkimi tymi trikami i wolisz rozwiązanie
od ręki, [bądź to] ściągnij odpowiednią tablicę xmodmapową, dostępną na
wielu ftpach zajmujących się cyrylicą, na przykład <tt/ftp.kiae.su/ albo
<tt/ftp.funet.fi/. Sam sporządziłem również mapę opisaną poniżej, dostępną
przez mój ftp.
Bardziej odpowiednią alternatywą jest instalacja pakietu <tt/xruskb/,
który pozwala ci skonfigurować większość parametrów translacji wejściowej
bez potrzeby obeznania się z <tt/xmodmap/.
Poniżej uproszczony opis przystosowania wejścia. Jeśli chcesz jakiś
bardziej wyrafinowanych trików, zajrzyj do xmodmap(1) lub, jeszcze
lepiej, poczekaj na następną wersję główną X, która miejmy nadzieję
zajmie się bieżącymi problemami ze wprowadzaniem danych.
W naszym przypadku, tablica tłumaczeń powinna definiować dwie rzeczy:
<itemize>
<item>kody znaków wysyłane przez klawisze alfanumeryczne, oraz
<item>zasady przełączania się między trybami
</itemize>
<sect3>Tablica znaków<p>
Jest to w zasadzie sekwencja dyrektyw które przypisują pewne klawsymy
określonym kodom klawiszy. Ogólna składnia to:
<verb>keycode kod = sym1 sym2 sym3 sym4</verb>
gdzie <tt/kod/ to numeryczny kod określonego klawisza na klawiaturze (zajrzyj
do tablicy standardowej dla twojego systemu. W moim przypadku znajduje
się ona w pliku <tt>/usr/lib/X11/etc/xmodmap.std</tt>). "Symy" definiują klawsymy
wysyłane przez ten klawisz w różnych stanach. <tt/Sym1/ jest klawsymem
wysyłanym w stanie normalnym, <tt/sym2/ odpowiada klawiszowi z naciśniętym
Shift (zwykle), <tt/Sym3/ i <tt/sym4/ definiują klawsymy wysyłane przy aktywnym
Mode_switch dla stanów normalnych i ze Shiftem odpowiednio (grupa 2,
zgodnie z X Protocol Specification). W naszym przypadku aktywny Mode_switch
odpowiada wprowadzaniu w trybie cyrylicy.
Wartościami powinny być albo kody szesnastkowe, albo stałe symboliczne
z <tt>/usr/include/X11/keysymdef.h</tt> (bez początkowego "XK_").
Tak więc jeżeli chcielibyśmy aby klawisz odpowiadający łacińskiemu "a"
wypisywał "a" rosyjskie w trybie alternatywnym, napisalibyśmy jak niżej:
<verb>keycode 38 = a A 0xC1 0xE1</verb>
Czytelnik ciekaw być może dlaczego nie użyłem stałych Cyrillic_a oraz
Cyrillic_A, odpowiednio. Odpowiedż brzmi: nie działają one dla mnie.
Nie jestem zbyt obeznany z wnętrznościami specyfikacji systemu X Windows,
ale mam następujące wytłumaczenie: symboliczne stałe powyżej mają wartości
0x6C1 oraz 0x6E1 odpowiednio. Oznacza to że w rzeczywiście multijęzykowym
środowisku możnaby używać ich bez ich nakładania się na inne zestawy znaków.
Jednak standard KOI-8 nie jest szczególnie przystosowany do takiego
środowiska. Ponieważ więc chcemy pozostać kompatybilni z przeszłością,
naruszymy reguły obsługi wielu języków w systemie X Windows.
Oto tabela dla najbardziej popularnej rosyjskiej klawiatury w układzie
JCUKEN (tabele te pochodzą od tych z pakietu VakuFonts).
<tscreen><verb>
keysym 4 = 4 dollar 4 quotedbl
keysym 5 = 5 percent 5 colon
keysym 6 = 6 asciicircum 6 comma
keysym 7 = 7 ampersand 7 period
keysym q = q Q 0xCA 0xEA
keysym w = w W 0xC3 0xE3
keysym e = e E 0xD5 0xF5
keysym r = r R 0xCB 0xEB
keysym t = t T 0xC5 0xE5
keysym y = y Y 0xCE 0xEE
keysym u = u U 0xC7 0xE7
keysym i = i I 0xDB 0xFB
keysym o = o O 0xDD 0xFD
keysym p = p P 0xDA 0xFA
keysym bracketleft = bracketleft braceleft 0xC8 0xE8
keysym bracketright = bracketright braceright 0xDF 0xFF
keysym a = a A 0xC6 0xE6
keysym s = s S 0xD9 0xF9
keysym d = d D 0xD7 0xF7
keysym f = f F 0xC1 0xE1
keysym g = g G 0xD0 0xF0
keysym h = h H 0xD2 0xF2
keysym j = j J 0xCF 0xEF
keysym k = k K 0xCC 0xEC
keysym l = l L 0xC4 0xE4
keysym semicolon = semicolon colon 0xD6 0xF6
keysym apostrophe = apostrophe quotedbl 0xDC 0xFC
keysym grave = grave asciitilde 0xA3 0xB3
keysym z = z Z 0xD1 0xF1
keysym x = x X 0xDE 0xFE
keysym c = c C 0xD3 0xF3
keysym v = v V 0xCD 0xED
keysym b = b B 0xC9 0xE9
keysym n = n N 0xD4 0xF4
keysym m = m M 0xD8 0xF8
keysym comma = comma less 0xC2 0xE2
keysym period = period greater 0xC0 0xE0
</verb></tscreen>
Dla używających rosyjskiego układu JAWERTY dołączyłem następującą
tabelę:
<tscreen><verb>
keysym q = q Q 0xD1 0xF1
keysym w = w W 0xD7 0xF7
keysym e = e E 0xC5 0xE5
keysym r = r R 0xD2 0xF2
keysym t = t T 0xD4 0xF4
keysym y = y Y 0xD9 0xF9
keysym u = u U 0xD5 0xF5
keysym i = i I 0xC9 0xE9
keysym o = o O 0xCF 0xEF
keysym p = p P 0xD0 0xF0
keysym bracketleft = bracketleft braceleft 0xDB 0xFB
keysym bracketright = bracketright braceright 0xDD 0xFD
keysym a = a A 0xC1 0xE1
keysym s = s S 0xD3 0xF3
keysym d = d D 0xC4 0xE4
keysym f = f F 0xC6 0xE6
keysym g = g G 0xC7 0xE7
keysym h = h H 0xC8 0xE8
keysym j = j J 0xCA 0xEA
keysym k = k K 0xCB 0xEB
keysym l = l L 0xCC 0xEC
keysym z = z Z 0xDA 0xFA
keysym x = x X 0xD8 0xF8
keysym c = c C 0xC3 0xE3
keysym v = v V 0xD6 0xF6
keysym b = b B 0xC2 0xE2
keysym n = n N 0xCE 0xEE
keysym m = m M 0xCD 0xED
keysym backslash = backslash bar 0xDC 0xFC
keysym grave = grave asciitilde 0xC0 0xE0
keysym equal = equal plus 0xDE 0xFE
keysym 3 = 3 numbersign 3 0xDF
keysym 4 = 4 dollar 4 0xFF
</verb></tscreen>
<sect3>Zasady przełączania trybów<p>
Jest to zasadniczo część konfiguracji Xowej cyrylicy wymagająca najwięcej
wiedzy. Zdefiniować powinieneś warunki w których tryb bieżący przełączany
jest między trybem zwykłym i cyrylicy. Dzięki mądremu zaprojektowaniu
translacji wejścia w X, jest ona nieprzenośna, nieelastyczna, niekompletna
i ogólnie mówiąc do kitu. Nic dziwnego że ludzie przenoszą się na MS Windows.
Obecnie dużo się dzieje w rozwijaniu XFree86 w ogólności i modelu
wejścia w X w szczególności. Rezultat jest taki że twoja konfiguracja
może działać z jedną wersją XFree86 i nie działać z inną. Co gorsza,
czasami rzeczy różnią się między różnymi serwerami w tej samej dystrybucji.
Najpierw opiszę moje ustawienia, które w obecnej chwili działają dla mnie.
Pracuję w XFree86 3.3, serwer SVGA. W moim pliku <tt/XF86Config/ (w
dystrybucji RedHata umieszczony jest on w <tt>/etc/X11</tt>, w sekcji
"Keyboard" mam następujące dyrektywy:
Istnieją dwa sposoby osiągnięcia tego w Linuxie. Jedna jest specyficzna
dla XFree86, podczas gdy druga jest bardziej ogólna (nie za bardzo może,
jak i pokażę niżej).
<tscreen><verb>
LeftAlt Meta
RightAlt ModeShift
ScrollLock ModeLock
RightCtl Control
</verb></tscreen>
UWAGA: Metoda ustawiania reguł przełączania trybów poprzez plik
<tt/XF86Config/ jest specyficzna dla XFree86. Nie będzie ona działać
w innych wersjach X.
Teraz ładuję tabelę opisaną w poprzedniej sekcji i zachowaną w jakimś
pliku używając narzędzia xmodmap(1x):
<tscreen><verb>
xmodmap <plik_z_tabelą>
</verb></tscreen>
Teraz mam możliwość zaznaczenia trybu wprowadzania cyrylicy używając
prawego klawisza Alt oraz przełączenia na cyrylicę i z powrotem używając
ScrollLock. Zdziwisz się jeśli zobaczysz że ani CapsLock ani klawisze
Control nie działają w trybie wprowadzania cyrylicy. Cóż, powiem to raz
jeszcze: model wejścia X jest do kitu!
Resztę tej sekcji zajmuje zwięzły opis zwykłej konfiguracji translacji
wejścia w X. Działała ona dla starszych wydań XFree86, ale teraz wykazuje
rozmaite problemy. Pozostawiłem ją tutaj, tak aby co bardziej ciekawi
z was mogli spróbować części tego i zużytkować to.
Powinieneś zrobić co następuje:
<itemize>
<item>przypisać klawsym Mode_switch jakiemuś klawiszowi, oraz
<item>dodać Mode_switch do jakieś nieużywanego układu
</itemize>
Teraz klawisz do którego przypisany jest ModeShift będzie działał jako
przełącznik trybów. Oznacza to że gdy jest przyciśnięty, klawiatura
znajduje się w trybie alternatywnym.
Co więcej, jeśli dodasz klawsym Mode_lock do tego układu, będzie on
ustawiał na stałe tryb alternatywny.
Uwaga: są jednak pewne problemy. Siergiej Wakulenko (<tt/vax@cronyx.com/)
wskazał że różne implementacje X-serwerów mają różne zasady przypisywania
przełączników trybu (np. niektóre serwery ograniczają zestaw klawiszy które
mogą działać w trybie przełącznika do, powiedzmy, CapsLock, NumLock oraz
ScrollLock). Na szczęście ma się to zmienić w następnym wydaniu
systemu X Windows. Po szczegóły patrz specyfikacja X Protocol.
Niestety nie udało mi się zmusić CapsLock aby miał tą samą funkcjonalność
w trybie alternatywnym, konkretnie aby na stałe włączał duże litery.
Wydaje mi się że nie można tego dokonać z powodu idiotycznego
zaprojektowania translacji wejścia w X. Jeśli się mylę, proszę mnie
poprawić.
Zobaczmy przykład. Załóżmy że chce się używać prawego Alt jako
przełącznika trybów i ScrollLock do ustawiania trybu na stałe.
Najpierw powinno się sprawdzić domyślny układ modyfikatorów.
Osiąga się to uruchamiając xmodmap bez argumentów.
<tscreen><verb>
$ xmodmap
xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25)
mod1 Alt_L (0x40), Alt_R (0x71)
mod2 Num_Lock (0x4d)
mod3
mod4
mod5
</verb></tscreen>
Zgodnie z powyższym, plan ataku wygląda jak następuje:
<enum>
<item>usunąć klawisz Alt_R z klawsymu mod1
<item>przypisać klawsym Mode_switch klawiszowi Alt_R
<item>przypisać klawsym Scroll_Lock do kodu klawisza 78 (kodu rzeczywistego
ScrollLock)
<item>dodać Mode_switch do nieużywanego klawsymu mod3 i
<item>dodać klawsym Scroll_Lock do mod3
</enum>
Oto więc rozwiązanie:
<tscreen><verb>
remove mod1 = Alt_R
keysym Alt_R = Mode_switch
keycode 78 = Scroll_Lock
add mod3 = Mode_switch
add mod3 = Scroll_Lock
</verb></tscreen>
Jeśli użyjesz tego drugiego rozwiązania, możesz połączyć tabelę i
dyrektywy dotyczące trybów w swoim pliku <tt>~/.Xmodmap</tt>.
Pliki takie dostarczane są przeważnie razem z różnymi pakietami
do obsługi cyrylicy pod X. Dobrym przykładem są tabele w doskonałym
pakiecie Siergieja Wakulenki, opisanym wyżej.
Gdy już masz taki plik zawierający tabelę, powinieneś wykonać komendę:
<verb>xmodmap filename</verb>
Plik dla całego systemu to <tt>/usr/lib/X11/xinit/xinitrc</tt>; osobisty
to albo <tt>~/.xinitrc</tt>, albo <tt>~/.Xclients</tt>, albo
<tt>~/.xsession</tt>, zależnie od tego co masz [zainstalowane].
UWAGA: Jeśli <tt/xmodmap/ narzeka na twoją tabelę, spróbuj załadować
najpierw domyślną. Tabela domyślna znajduje się zwykle w
<tt>/usr/lib/X11/etc/xmodmap.std</tt>.
<sect>Obsługa cyrylicy w LaTeXie<p>
W tej sekcji opiszę kilka sposobów nakłonienia TeXa i LaTeXa do składania tekstu
w cyrylicy. Istnieje kilka sposobów, które różnią się wyrafinowaniem
instalacji i wygodą w obsłudze. Dla przykładu, jedną z możliwości jest
zacząć bez żadnej wstępnej instalacji i użyć fontów cyrylicowych Washington
AMSTeX. Z drugiej strony, możesz zainstalować pakiet LaTeX, który zapewnia
wysoki stopień ustawień dotyczących cyrylicy. Mam pewne doświadczenia z dwoma
pakietami. Pierwszy to pakiet <tt/cmcyralt/
autorstwa Wadima W. Żytnikowa
(<htmlurl url="mailto:vvzhy@phy.ncu.edu.tw">)
i Aleksandra Harina
(<htmlurl url="harin@lourie.und.ac.za">), a ten drugi to pakiet <tt/LH/
autorstwa CyrTUG
[Cyrillic TeX Users Group] ze stylami i dzieleniem wyrazów
dla LaTeX2e
autorstwa Sergieja O. Naoumowa (<htmlurl url="serge@astro.unc.edu">).
Opiszę obydwa.
Zauważ że dostępne są dwie wersje LaTeXa
: 2.09 jest wersją starszą, podczas
gdy 2e jest nowszym wydaniem pre-3.0. Jeśli używasz LaTeXa 2.09, przestaw
się szybko na 2e. Ten drugi pozostaje kompatybilny z tym pierwszym, ale
ma o wiele więcej funkcji. Miejmy nadzieję że wersja 3 zostanie wkrótce
wypuszczona. Opiszę ustawienia dla LaTeXa 2e.
Uwaga: oba te pakiety wymagają aby tekst w cyrylicy składany był
z użyciem zestawu znaków Alt, nie KOI-8! Spowodowane jest to przyczynami
historycznymi, ponieważ twórcy tych pakietów pracowali byli z EmTeXem
- MS-DOSową wersją TeXa (nie wiedzieli jeszcze o Linuxie :-). Przestawienie
ich na KOI-8 wymaga nieco wysiłku i spodziewane jest niebawem. Na razie,
używaj jakiegoś narzędzia do konwersji tekstu rosyjskiego z KOI-8 do
Alt. Patrz sekcja "Narzędzia użytkownika".
<sect1>Używanie Washington Cyryliic<p>
Pakiet ten został stworzony przez American Mathematics Society w celu
uzupełnienia dokumentów o odnośniki po rosyjsku. Dlatego też autorzy nie
byli zbyt uważni, a czcionki wyglądają raczej niezręcznie. Pakiet ten
określa się zwykle jako 'całkiem kiepski pakiet cyrylicy dla TeXa'.
Niemniej jednak omówimy go, ponieważ jest on bardzo łatwy w użyciu i nie
wymaga żadnej konfiguracji - kolekcja ta dostarczana jest z większością
dystrybucji TeXa.
Oczywiście nie będziesz mógł sobie pozwolić na taki luksus jak automatyczne
przenoszenie wyrazów, ale jednak...
<enum>
<item>Poprzedź swój dokument następującymi dyrektywami:
<tscreen><verb>
\input cyracc.def
\font\tencyr=wncyr10
\def\cyr{\tencyr\cyracc}
</verb></tscreen>
<item>Teraz aby napisać literę w cyrylicy, wprowadzasz
<verb>\cyr</verb>
i używasz odpowiedniej litery łacińskiej albo komendy TeXa. I tak małe
litery rosyjskiego alfabetu wyrażają następujące kody:
a b v g d e \"e zh z i {\u l} k l m n o p q r s t u f kh c ch sh shch
{\cprime} y {\cdprime} \'e yu ya
</enum>
Jest bardzo niewygodnym przekonwertować twoje teksty rosyjskie na takie
kodowanie, lecz proces można zautomatyzować. Program translit (sekcja 11)
obsługuje wynik w postaci TeXowej.
<sect1>Pakiet KOI-8 dla LaTeXa<p>
Pojawił się jakiś nowy pakiet <tt/teTeX-rus/. Podobno obsługuje on zestaw znaków
KOI-8 i ma wszystkie podstawowe rzeczy wymagane dla TeXa i LaTeXa. Osobiście
jeszcze go nie próbowałem, chociaż słyszałem o pomyślnym go używaniu.
<sect1>Używanie pakietu cmcyralt dla LaTeXa<p>
Pakiet <tt/cmcyralt/ znaleźć można na każdym z węzłów CTAN (Comprehensive TeX
Archive Network), jak <tt/ftp.dante.de/. Powinieneś zdobyć dwie kolekcje:
kolekcję fontów z [katalogu] <tt>/fonts/cmcyralt</tt> oraz style i reguły
dzielenia wyrazów z [katalogu]
<tt>/macros/latex/contrib/others/cmcyralt</tt>.
Uwaga: upewnij się że masz zainstalowany pakiet Sauter, bowiem <tt/cmcyralt/
potrzebuje z niego niektórych fontów. Pakiet ten możesz również
zdobyć z węzła CTAN.
Powinieneś teraz zrobić co następuje:
<enum>
<item>Umieścić nowe czcionki w drzewie czcionek TeXa. W moim systemie
(Slackware 2.2) stworzyłem podkatalog <tt>cmcyralt</tt> w
<tt>/usr/lib/texmf/fonts/cm/</tt>. Utwórz w nim podkatalogi <tt/src/,
<tt/tfm/ i <tt/vf/. Umieść tam pliki <tt/.mf/, <tt/.tfm/ oraz
<tt/.vf/, odpowiednio.
<item>Umieść pliki sterowników czcionek (<tt/*.fd/) z archiwum stylów
w odpowiednim miejscu (w moim przypadku był to
<tt>/usr/lib/texmf/tex/latex/fd)</tt>.
<item>Umieść pliki stylów (<tt/*.sty/) w odpowiednim katalogu stylów
LaTeXa (w moim przypadku <tt>/usr/lib/texmf/tex/latex/sty</tt>).
</enum>
Teraz konfiguracja dzielenia wyrazów. Wymaga to przerobienia
pliku bazowego
LaTeXa.
<enum>
<item>Plik <tt/hyphen.cfg/ zawiera dyrektywy dla dzielenia wyrazów
w angielskim i rosyjskim. Wytnij to co tyczy się rosyjskiego
i umieść to w pliku konfiguracji dzielenia wyrazów LaTeXa,
<tt>lthyphen.ltx</tt>. W moim przypadku plik ten znajdował się w
<tt>/usr/lib/texmf/tex/latex/latex-base</tt>.
<item>W tym samym katalogu umieść plik <tt/rhyphen.tex/. Potrzebny jest
on do stworzenia nowego pliku bazowego. Później możesz go usunąć.
<item>Wykonaj w tym katalogu <tt/make/. Nie zapomnij stworzyć odnośnika
z <tt/Makefile/ do <tt/Makefile.unx/. Podczas wykonywania <tt/make/ sprawdź
komunikaty. Powinno się pojawić:
<verb>Loading hyphenation patterns for Russian</verb>
</enum>
Jeśli wszystko pójdzie poprawnie, otrzymasz w tym katalogu nowy
<tt/latex.fmt/. Wstaw go w odpowiednie miejsce, tam gdzie znajdował się
poprzedni (np. <tt>/usr/lib/texmf/ini/</tt>). Nie zapomnij zachować starego
pliku!
Otoż i to. Instalacja gotowa. Spróbuj przetworzyć przykłady z archiwum
stylów. Jeśli możesz stworzyć pliki postscriptowe bez żadnych problemów,
wszystko jest w porządku. Teraz aby używać cyrylicy w LaTeXie, wstaw
na początek swojego dokumentu poniższą dyrektywę:
<verb>\usepackage{cmcyralt}</verb>
Po szczegóły patrz plik <tt/README/ w archiwum stylów <tt/cmcyralt/.
Uwaga: jeśli masz problemy z przykładami, założywszy że instalowałeś
prawidłowo, to prawdopodobnie twój system TeX nie został zainstalowany
poprawnie. Na przykład, przy mojej pierwszym teście każda próba
stworzenia plików <tt/.pk/ dla czcionek rosyjskich nie udawała się (etap
<tt/MakeTeXPK/). Dokładne przyjrzenie się plikom wykryło pewien niejawny
konflikt między konfiguracjami METAFONT <tt/localfont/ i <tt/ljfour/. Kiedyś
było to działało, ale rozpadło się po instalacji <tt/cmcyralt/. Skontaktuj
się ze swoim lokalnym guru od TeXa - TeX jest bardzo (czasami za
bardzo) złożony aby rekonfigurować go bez wcześniejszej znajomości.
<sect1>Pakiet CyrTUG<p>
Pakiet CyrTUG uzyskać możesz z archiwum SunSite
<tt>(<url url="ftp://sunsite.unc.edu/pub/academic/russian-studies/Software"
name="ftp://sunsite.unc.edu/pub/academic/russian-studies/Software">)</tt>.
Zrzuć stamtąd pliki <tt/CyrTUGfonts.tar.gz/, <tt/CyrTUGmacro.tar.gz/ i
<tt/hyphen.tar.Z/.
Proces instalacji nie różni się od opisanego powyżej.
<sect>Cyrylica w PostScriptcie<p>
Eksperci powiadają że PostScript jest łatwy. Nie potrafię osądzić - mam zbyt
wiele rzeczy do nauczenia się aby poświęcić trochę czasu na naukę
PostScriptu. Spróbuję więc opisać moje smutne z nim doświadczenia. Mile
widziałbym wsparcie od każdego kto wie więcej
na ten temat ode mnie (ok. 99%
ludzkości).
Zasadniczo aby wydrukować tekst z użyciem PostScriptu, musisz się upewnić co
do następujących rzeczy:
<itemize>
<item>Czcionka cyrylicowa jest załadowana lub zawarta w dokumencie
<item>W dokumencie zawarty jest tekst w cyrylicy
<item>Tekst w cyrylicy używa odpowiednich kodów które odpowiadają wymaganiom
czcionki
<item>Wybrano odpowiednią czcionkę do drukowania tekstu w cyrylicy
</itemize>
Nie ma rozwiązania na tyle ogólnego aby je polecić jako środek ostateczny,
Spróbuję nakreślić różne sposoby radzenia sobie z różnymi problemami
odnośnie tematu.
Jednym ze sposobów podejścia do konfiguracji cyrylicy jest użycie
Ghostscripta. Ghostscript (lub po prostu gs w nowomowie) to darmowy (no,
quasi-darmowy) interpreter PostScriptu. Ma on wiele zalet, pomiędzy nimi:
<itemize>
<item>Możliwość działania na różnych platformach (Windows, różne Unixy)
<item>Obsługa szerokiego zakresu drukarek niepostscriptowych
<item>Duży stopień konfigurowalności
</itemize>
To co ważne w naszym konkretnym przypadku to to że gdy już raz
skonfigurujemy Ghostscripta, możemy za jego pomocą dokonywać całości
drukowania, eliminując tym samym ekstra konfigurację dla innych urządzeń
postscriptowych (np. HP Laserjet IV).
<sect1>Dodawanie czcionek cyrylicowych do Ghostscripta<p>
Jest to ważne, ponieważ zapewne nie będziesz chciał polegać na innych
programach przy umieszczaniu w wynikowym postscripcie czcionek cyrylicowych.
Zamiast tego dodajesz je do <tt/gs/. i po prostu zmuszasz programy aby
generowały wyjście w cyrylicy kompatybilne z czcionkami.
Aby dodać do <tt/gs/ nową czcionkę (w formacie .pfa lub .pfb), musisz:
<enum>
<item>Dodać ją do katalogu czcionek <tt/gs/ (np.
<tt>/usr/lib/ghostscript/fonts</tt>).
<item>Dodać odpowiednie nazwy i aliasy dla czcionki w pliku <tt/Fontmap/ w
katalogu <tt/gs/
</enum>
Ostatnio pojawił się porządny zestaw czcionek cyrylicowych dla GhostScripta.
Znajduje się on na <tt/ftp.kapella.gpi.ru/. Ma on nawet konieczny wpis
który trzeba dodać do pliku <tt/Fontmap/. Ściągnąć musisz zawartość
katalogu <tt>/pub/cyrillic/psfonts/</tt>. Plik <tt/README/ opisuje
niezbędne szczegóły.
<sect>Drukowanie<p>
Drukowanie zawsze jest rzeczą zawiłą. Istnieją różne drukarki różnych
producentów z różnymi możliwościami. Nawet co do drukowania w "gołym"
formacie nie ma jednorodnego rozwiązania (odnosi się to nie tylko do
Unixa, ale również do innych systemów operacyjnych).
Drukarki mają różne języki kontrolne, a często mają bardzo różne poglądy
na obsługę innych takich języków. Dobrą wiadomością jest to że jeden taki
język kontrolny wydaje się być uznawany za de facto standard dla opisywania
zadań związanych z drukiem - to język PostScript, stworzony przez Adobe
Corporation.
Innym problemem jest różnorodność wymagań związanych z usługą drukowania.
Na przykład, czasem chcesz po prostu wydrukować kawałek programu w C z
rosyjskimi komentarzami, więc nie potrzebujesz żadnego ładnego drukowania -
po prostu czysty wydruk ASCII w pojedynczej czcionce. Innym razem, kiedy
projektujesz pocztówkę dla swojej dziewczyny, będziesz zapewne musiał ją
złożyć używając różnych czcionek, i tak dalej. Będzie to wymagało z
pewnością więcej wysiłku w kwestii ustawienia obsługi cyrylicy.
Aby podołać pierwszemu zadaniu będziesz musiał po prostu zmusić swoją
drukarkę aby rozumiała jeden font cyrylicowy i (być może) zainstalować
jakiś program filtrujący, który będzie wypisywał dane w odpowiednim
formacie. Aby dokonać tego drugiego [zadania], będziesz musiał nauczyć
swoją drukarkę różnych czcionek i mieć specjalny software.
Istnieje także sytuacja pośrodku, gdy masz program który wie jak wygenerować
i fonty i odpowiednie dane dla drukarki, możesz więc, powiedzmy, wykonać
parę ładnych wydruków kodu źródłowego bez wyrafinowanych systemów obróbki
tekstu.
Wszystkie te opcje zostaną mniej lub bardziej omówione poniżej.
<sect1>Ładowanie czcionek cyrylicowych do drukarki niepostscriptowej<p>
Jeśli masz starą dobrą drukarkę igłową i potrzebujesz tylko wydrukować
czysty tekst w KOI-8, spróbuj poniższego:
<enum>
<item>Znajdź odpowiednią czcionkę KOI-8 dla swojej drukarki. Sprawdź
kolekcje MS-DOSowe w Internecie (na przykład archiwum SimTel, <tt>ftp.
simtel.net</tt>)
<item>Dowiedz się z instrukcji jak załadować czcionkę do drukarki i,
możliwie, napisz prosty program który to robi
<item>Uruchom ten program z odpowiedniego pliku .rc w czasie startu systemu.
</enum>
Tak więc mając znaki cyrylicowe w górnej połówce zestawu znaków drukarki
będziesz mógł drukować teksty po rosyjsku bez żadnych ceregieli.
Alternatywnie z czcionkami KOI-8 możesz użyć czcionek Alt. Są ku temu
dwa powody:
<itemize>
<item>Może być łatwiej znaleźć czcionkę Alt, bowiem takowe były bardzo
rozpowszechnione w kulturze MS-DOSowej
<item>Posiadanie odpowiedniej czcionki Alt pozwoli ci drukować również
pseudografikę
</itemize>
Niemniej w tym przypadku będziesz musiał przekodować swoje teksty z KOI-8
na Alt przed posłaniem ich do drukarki. Jest to całkiem łatwe, ponieważ
pełno jest programów które to robią (patrz "translit", na przykład), tak
więc wystarczy że właściwie wywołasz ten program w polu <tt/if/ <tt>/etc/
printcap</tt>. Na przykład dla programu <tt/translit/ napisać możesz:
<tscreen><verb>
if=/usr/bin/translit -t koi8-alt.rus
</verb></tscreen>
Patrz printcap(5) po szczegóły.
<sect1>Drukowanie różnymi czcionkami<p>
Jednym świetnym sposobem poradzenia sobie z różnymi czcionkami i drukarkami
jest użycie TeXa. Sterowniki TeXa zajmują się wszelkimi detalami, więc skoro
już raz nauczyłeś TeXa rozumieć czcionki cyrylicowe, sprawa załatwiona.
Inną możliwością jest użycie PostScriptu. Zdecydowałem się poświęcić
temu cały rozdział, ponieważ nie jest to łatwe.
W końcu, są i inne edytory tekstów