Na tem mestu bi se v idealnem svetu opis poslovenjenja Linuxa lahko koncal. Povedali smo vse potrebno o vnosu in izpisu nasih znakov, ter kako z definiranjem spremenljivk okolja programom dopovemo, da delamo s slovenskimi besedili. To poglavje je takorekoc v celoti posveceno izjemam -- programom, ki iz taksnih ali drugacnih razlogov ne uporabljajo lokalizacijskih spremenljivk, alternativnim metodam za vnos ali izpis znakov, ki v izjemnih primerih (npr. ce nimamo tipkovnice s slovenskimi znaki) lahko vseeno pridejo prav, in podobnemu.
Nastavitve ukazne lupine bash
so v datoteki ~/.inputrc (ki jo po potrebi ustvarimo):
Te tri vrstice je morda pametno dodati tudi v
set meta-flag on set convert-meta off set output-meta on
/etc/skel
, tako da jih podedujejo tudi vsi na novo ustvarjeni uporabniki.
Tole se sicer ne navezuje na slovenscino, ko ste ze pri poslu, si lahko zivljenje olajsate se s tem, da tipkam Home
, Delete
in End
vrnete njihov obicajni pomen: v isto datoteko (~/.inputrc) dodate se vrstice
"\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line
Vnos osembitnih znakov omogocimo, ce v nastavitveno datoteko (/etc/csh.login za skupne nastavitve oz. ~/.tcshrc ali ~/.cshrc za osebne nastavitve) dopisemo vrstico:
setenv LC_CTYPE sl_SI.iso88592
Med nami: kaze, da je ukazni lupini tcsh
povsem vseeno, na kaj nastavite spremenljivko LC_CTYPE
, samo da ni nedefinirana.
Pazite: ukazna lupina mora biti prevedena z vklopljeno izbiro ``8-bit''! To lahko preverite z ukazom ``set'':
Pomemben je tisti ``8b''. Ce se pri vas ne izpise, vam verjetno ne preostane drugega, kot da snamete izvorno kodo in jo prevedete.
rufko:~% set ... version tcsh 6.06.00 (Cornell) 1995-05-13 (i386-intel-linux) options 8b,dl,al rufko:~%
V datoteki ~/.Xresources (osebna nastavitev) ali pa v datoteki /usr/lib/X11/app-defaults/XTerm (skupna nastavitev) dolocimo pisave, ki jih uporablja XTerm. Izberemo pisavo, ki ima vse znake enako siroke, npr. ,,fixed`` ali ,,Courier``, in je kodirana po razporedu ISO Latin 2. Zgled:
XTerm*font: -*-fixed-medium-r-normal--16-*-iso8859-2 XTerm*boldFont: -*-fixed-bold-r-normal-sans-16-*-iso8859-2
Primerne pisave lahko izpisemo z ukazom xlsfonts
(glej se razdelek X Window System poglavja ``Prikaz nasih znakov na zaslonu''):
xlsfonts -fn '*-fixed-*-iso8859-2'
Po podatkih v ceskem HOWTO rxvt
zaenkrat (razvojna izdaja 2.4.6) ne deluje z nasimi znaki brez posegov v izvorno kodo. Potrebne posege najdete v ``Czech HOWTO'' (ki ni del arhiva LDP; glejte razdelek Zahvala, kje ga najdete).
(Jaka Mele, Vse naredim pod Linuxom!, Win.Ini, l.6, st.9, str.60)
WordPerfect ima vse potrebne znake ze v svoji tabeli. Vse, kar moramo napraviti, je da za nase crke definiramo makroukaze. Recimo, da bi radi definirali crko S (velika crka S s stresico). Pricnemo s snemanjem makroukaza (recimo mu Scaron), skocimo v tabelo znakov, v njej izberemo crko S, zakljucimo makro in nazadnje pri nastavitvah povezemo makro z izbrano tipko.
(Jaka Mele, Message-id: <[email protected]>
---------- Forwarded message ---------- Date: Thu, 24 Dec 1998 11:04:33 +0000 From: "[ALAMUN ALEN" <[email protected]> To: [email protected] Subject: WordPerfect SLO tipkovnica Hi! Daj prosim spravi to v mojem imenu na lugos listo, ker je verjetno trazena roba. Uspelo mi je definirati SLO tipkovnico brez makrojev. Sem na fax-u pa ne morem poslati jaz na Lugos listo. LP, Alen
Datoteko SLO.WGK s prireditveno tabelo za slovensko tipkovnico najdete na
ftp://sizif.mf.uni-lj.si/pub/i18n/SLO.WGK
(Andrej Komelj, Message-id: <[email protected]>
)
Odgovor na vprasanje: "Kako je s podporo sumnikom v WP-ju 8.0 pod Linuxom?" se glasi: SLABO. 1. Resitev v obliki "insert symbol -> multinational" je v teoriji uporabna, vendar... Hja, multinational znaki so v WP Multinational fontu, le-ta pa je najbolj podoben Roman-WP fontu. Ima "serife", zato Helvetica in Zurich odpadeta. Vendar se tudi pri Roman-WP pojavijo tezave, ce se le-tega uporablja v bold, italic ali bold-italic obliki. 2. Resitev v obliki uporabe Type 1 fontov z definiranimi slovenskimi znaki (kje se jih dobi? odg: poglejte si v Slovenian-HOWTO, ali jih skopirajte iz OS/2-ja, ce ga imate) pa zal tudi odpade, ker "brezplacna" verzija WP-ja nima vsebovanega font installerja (xwpfi) in zato kakrsno koli dodajanje fontov v wp.drs odpade... Skratka, tako kot je nekdo ze napisal; brezplacen-in-neoskubljen WP je ena velika potegavscina... Za Americane je mogoce se nekako uporaben, za povprecnega Slovenca, ki pise tudi slovenska besedila, pa je popolnoma brez vrednosti. :-( Nazaja k LyX-u in ze sestavljenim vzorcem. :-) Mimogrede, kaj se je zgodilo z WP-jem?!? Dokler se ni bil v lasti Corel-a, je znal postavljati stresice na katere koli znake v katerem koli fontu. Z WP-jem 6.0 za DOS sem tako pisal tekste v TrueType, Type 1 in CG fontih... POVSOD sem lahko uporabljal sumnike. Huh, "napredek" pa tak. -- Kome.
(Jaka Mele, Vse naredim pod Linuxom!, Win.Ini, l.6, st.9, str.60)
StarOffice je malce tezavnejsi, zato, ker rabi dodatne Type1 fonte, pa vendarle povejmo recept se zanj. Kot prvo si torej moramo dobiti slovenske oziroma latin2 pisave (pfb, afm, fonts.dir in fonts.scale) iz recimo ftp streznika drustva uporabnikov linuxa slovenije ftp://ftp.lugos.si/pub/lugos/arhiv/Type1-Latin2-Fonts/, datoteki l2afm004.zip in l2pfb004.zip). Nato arhiva odpremo v /usr/lib/X11/fonts/Type1.Latin2/, ter ta imenik dodamo v spisek imenikov s pisavami, ki jih uporabi XWindow streznik. To naredimo tako, da v datoteko /etc/X11/XF86Config dopisemo:
FontPath "/usr/X11R6/lib/X11/fonts/Type1.Latin2/"
Za tem pozenemo
xset fp+ /usr/X11R6/lib/X11/fonts/Type1.Latin2/
ter se xset fp rehash
. Nato je potrebno v direktoriju /usr/local/StarOffice3-1/x3p/fontmetrics/ za .afm
datoteke narediti povezave iz /usr/lib/X11/fonts/Type1.Latin2/. Podobno naredimo se za direktorij /usr/local/StarOffice3-1/x3p/pssoftfonts/, le da sem povezemo .pfb datoteke. Skoraj smo ze na koncu, v datoteko /usr/local/StarOffice-3.1/xp3/psstd.fonts dodamo po vzoru ze dodanih pisav v datoteki fonts.dir iz Latin2 podrocja, vse nove pisave, tako, da namesto npr. arial.pfb pride arial
, namesto -0-0-0-0
pa -%d-%d-%d-%d...
Saj se takoj vidi. Na koncu si premapirajmo se tipkovnico in sicer s programom xmodmap, tako da izvrsimo xmodmap xmodmap.si
. Ce imate starejsi Xwindow sistem, si boste morda morali xmodmap.si se popraviti, da vam bosta tipki Backspace in Delete delali normalno, sicer pa samo pozenete swriter3 in uzivate v dodatnih slovenskih pisavah.
(Boris Pozar, Message-Id: <[email protected]>
)
Z Lugosovega streznika snamemo pisave TrueType v kodnem naboru ISO 8859-2. Potem jih kot root
s FontManagerjem dodamo v katalog pisav in zadeva je resena.
ftp://ftp.lugos.si/pub/lugos/arhiv/Type1-Latin2-Fonts/l2ttf004.zip
Emacs je, tako kot njegov avtor, kontroverzni Richard M. Stallman, urejevalnik, glede katerega ljudje niso indiferentni: ali ga obozujejo, ali pa sovrazijo. Emacs je vec kot urejevalnik; je takorekoc nacin zivljenja. V njem lahko pisete programe, iz njega poganjate prevajalnik, pisete besedila, poganjate crkovalnik, poganjate TeX, berete posto in novice... Ko enkrat v resnici dobro obvladate Emacs, imate realne moznosti, da se vam se dobrsen del naslednjega stoletja ne bo treba nauciti nobenega novega urejevalnika. Dokazano pa ljudje shajajo tudi brez njega.
Privzeta nastavitev urejevalnika je omejitev na sedembitne znake (ASCII). Nastavitev spremenimo tako, da v datoteko z nastavitvami dodamo naslednjih nekaj vrstic:
;; Omogocimo izpis znakov s kodo vecjo od 127 (standard-display-european t) ;; Omogocimo vnos znakov s kodo vecjo od 127 (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0)
Prilagoditev Emacsa je mozno izvesti v eni od naslednjih datotek z nastavitvami:
Z vnosom in izpisom nasih znakov seveda se ni konec zgodbe o prilagoditvi Emacsa za slovenscino. Zelimo na primer tudi, da se ukaza forward-word
in backward-word
ne bosta zatikala na nasih znakih, ter da tudi za nase znake pravilno tece pretvarjanje med velikimi in malimi crkami. S starejsimi izdajami Emacsa to ni vedno povsem trivialno. Bralcu bo v veliko pomoc zbirka nasvetov Slovenscina in racunalniki avtorja Alesa Kosirja, v kateri je programu GNU emacs so posveceno obsirno poglavje. Najdete jo na
http://nl.ijs.si/gnusl/tex/tslovene/slolang/slolang.html
Z zadnjo izdajo urejevalnika Emacs in standardno slovensko tipkovnico je prilagoditev posebno enostavna. Vse, kar potrebujemo, je
;;; Turn on Latin-2 both as input and output method (Emacs 20.* ;;; and onwards) (set-language-environment "Latin-2")
Crisp je urejevalnik v duhu urejevalnika Brief z burno zgodovino. Napisal ga je iz Anglije in ga distribuiral kot ``program na pokusino'' (shareware). Zadnja taksna razlicica je 2.2e iz leta 1991 in je po nekaterih vesteh avtor ne podpira vec. Novejse (trenutno 5.1) pa trzi podjetje Vital, Inc. iz Teksasa, ZDA. Crisp je nekako blizje pecejevskemu duhu, kot pa sta Emacs in Vi; ce se nobenega od teh dveh ne morete navaditi, je morda Crisp prava izbira.
Privzeta nastavitev urejevalnika Crisp 2.2e je, da znakov s kodami od 127 dalje ne prikaze, ampak izpise njihovo sestnajstisko kodo, ki jo uvede z znakoma \x
. Pomaga, ce nalozimo paket z izvorno kodo Crisp in v datoteki $(SRC)/crisp2.2e/src/crunch/tty/xterm.cr popravimo drugi argument funkcije set_term_features()
iz NULL
na "%c"
. Popravljeni makroukaz prevedemo:
Rezultat, popravljeni xterm.cm, postavimo med ostale, navadno v imenik /usr/local/lib/crisp/macros/tty.
crunch xterm.cr
Makro xterm
velja, kot bi iz imena sami uganili, za Crisp, pognan v oknu XTerm znotraj X Window System. Enaka intervencija piscu teh vrstic ni uspela na linux.cr (konzola) in xcrisp.cr (razlicica Crisp za X11). Poleg tega se je na starejsi verziji Linuxa (1.0.8) crunch
pritozeval nad predprocesorjem za C, /lib/cpp. Pomagala je logicna povezava:
ln -s /usr/lib/gcc-lib/i486-linux/2.5.8/cpp /lib/cpp
Ales Kosir je napisal za Crisp makro slovene
:
http://nl.ijs.si/gnusl/tex/tslovene/src/slovene.cr
Z njim lahko vnasamo nase znake tudi na tipkovnicah, ki nimajo primernih tipk na nacin: namesto c vtipkamo "c
, makro pa pretvori zaporedje v ustrezen znak. Poleg ISO Latin 1 podpira se nekaj drugih kodiranj, ki so v uporabi v nasih krajih. Navodila za uporabo so na voljo tudi prek WWW:
http://nl.ijs.si/gnusl/tex/tslovene/slolang/
Del distribucije Caldera OpenLinux je tudi ``lahka'' izvedba urejevalnika Crisp, CRiSP LiTE. Caldera ponuja tudi moznost kasnejse ugodnejse nadgraditve na polno izvedbo. CRiSP LiTE nima zgoraj opisanih tezav z vnosom osembitnih znakov.
Urejevalnik vi
izvira iz sive davnine Unixa. Zaradi tezav z licencnino najdete na sistemih Linux namesto originalnega Vi navadno urejevalnik vim
(Vi IMproved) avtorja Brama Moolenaarja, vcasih pa tudi ``elvis'', delo Steva Kirkendalla, ali nvi
iz distribucije BSD 4.4. Ideje, na katerih temelji ``vi'' so v temeljih ortogonalne na vse, kar ste se o urejevalnikih naucili pod MS-DOS. Kljub temu pa je glede na to, da je ``vi'' edini urejevalnik, ki zanesljivo obstaja na cisto vsakem Unixu, pametno poznati nekaj osnovnih ukazov za delo z njim.
Po izkusnjah pisca tako originalni vi
kot tudi vim
sama po sebi brez tezav prepuscata osembitne znake. Tezave lahko vcasih povzrocajo zunanji programi, ki jih klicemo iz urejevalnika (npr. fmt
za poravnavanje besedila). Navadno pomaga, ce v ~/.profile
dolocimo spremenljivko LC_CTYPE
(glej poglavje Slovenski locale).
Pine najprej prebere skupne nastavitve iz /usr/local/lib/pine.conf (ali /etc/pine.conf, zatem pa se osebne nastavitve iz ~/.pinerc. V enem ali drugem poiscemo niz character-set
in postavimo to spremenljivko na ISO-8859-2
:
... # character-set should reflect the capabilities of the display # you have. Normal default is US-ASCII. Typical alternatives # include ISO-8859-x, where x is a number between 1 and 9. character-set=ISO-8859-2 ...
Opozorilo: pisec ze dolgo ne uporablja vec tega programa in zapisanega ni preveril. Danski in nemski HOWTO trdita, da je bodisi dovolj v ukazni lupini postaviti spremenljivko LANG
na vrednost iso_8859_1
, bodisi v konfiguracijski datoteki ~/.elm/elmrc
nastaviti vrednosti naslednjih spremenljivk:
... charset=iso-8859-1 displaycharset=iso-8859-1 textencoding=8bit ...
Se enkrat prosim koga, ki ta program v resnici uporablja, da opise svoje izkusnje.
V Netscape Mail 4.06 je mozno pisati nase znake v telesu sporocila, ne pa tudi v glavi. Ko imamo enkrat namescene nase pisave in urejeno preslikavo tipkovnice (razdelka Pisave pod X11 in Tipkovnica pod X11), le se v menuju View postnega programa izberemo ``Encoding'', tam pa ``Central European (ISO-8859-2)''.
Vesel bom opisa izkusenj z drugimi izdajami programa Netscape Mail.
Lynx pozna od izdaje 2.5 dalje tudi kodno stran ISO 8859-2. Nastavimo jo lahko na enega od treh nacinov. Prvi je, da izberemo O)ptions
, zatem pa C)harset
, ter z pritiskanjem na kurzorske puscice izberemo zeljeni nabor znakov. Drugi je, da v datoteki ~/.lynxrc (osebna nastavitev) nastavimo
character_set=ISO Latin 2
In zadnji je, da v datoteki /usr/lib/lynx.cfg (skupna nastavitev)
CHARACTER_SET:ISO Latin 2
(Metod Kozelj, Message-id: <[email protected]>
)
Netscape Navigator, pa tudi brkljalnik iz Netscape Communicator, uporabljata nabor znakov, ki ga nudi X Windows System. Za prikaz nasih znakov je torej najprej namestiti pisave za X11 (poglavje Pisave pod X11). Ko Navigator zazenemo, sam ugotovi, da so na voljo tudi pisave za 'Central European (ISO-8859-2)'. Ce pregledujemo stran, ki brkljalniku pravilno sporoci uporabljeni nabor znakov, potem Navigator avtomaticno uporabi pisavo s pravim kodnim naborom. Seveda lahko spremenimo osnovno velikost crk ali pa obliko za proporcionalno pisavo.
To storimo tako, da v 'Edit / Preferences / Appearance / Fonts' dolocimo, da spreminjamo nastavitve za srednjeevropske pisave ('For the Encoding / Central European (iso-8859-2)'), potem pa izberemo, s katero pisavo naj Navigator prikazuje tekste. Navigator nam sam ponudi le pisave s pravim naborom znakov.
Ce pregledujemo strani, ki imajo sicer pravilen razpored crk (razpored ISO 8859-2 in ne Windows-1250), pa Navigator ne uporabi pisave s pravim razporedom crk, lahko razpored preklopimo rocno z izbiro ,,View / Encoding / Central European (ISO-8859-2)``.
Ob izbiri pisave s pravilnim razporedom crk in ob pravilnem razporedu tipk na tipkovnici lahko uporabljamo nase crke tudi pri pisanju v modulu 'Page Composer'.
Netscape Communicator 4.06 in novejsi znajo na Unixih, ki imajo namescene pisave ISO 8859-2, prikazati tudi strani, napisane v kodni strani Microsoft CP1250, oznacene kot windows-1250
v glavi.
Opomba: spodnje besedilo je prevod navodil ,,Configuring WWW Server for ISO 8859-2`` http://sizif.mf.uni-lj.si/linux/cee/app/httpd.html, ta pa se v veliki meri naslanjajo na besedilo Marka Martinca ,,Resitev problema slovenskih sumnikov v HTML dokumentih`` http://www.ijs.si/doc/www-csz.html.
Content-Type
. To je edina informacija o zvrsti informacije, ki jo ima na voljo brskalnik, zato mora odrazati pravo vsebino spisa.
Content-Type: text/html
charset
v vrstici Content-Type
glave MIME izberemo drug kodni razpored. Naceloma je dovoljen katerikoli kodni razpored, registriran pri IANA Character Set Registry. Iz prakticnih razlogov pa je priporocljivo, da se omejimo na naslednje entitete HTTP:
Entiteta, ki je definirana pri IANA Character Set Registry, mora predstavljati nabor znakov, kot je bil prijavljen pri IANA. Prazna entiteta implicira nabor ISO 8859-1 (kar vkljucuje US-ASCII, ki je njegova podmnozica). Spise HTML, kodirane v skladu s kodnim razporedom ISO 8859-2, morajo potemtakem vsebovati v glavi MIME vrstico
charset = "US-ASCII" | "ISO-8859-1" | "ISO-8859-2" | "ISO-8859-3" | "ISO-8859-4" | "ISO-8859-5" | "ISO-8859-6" | "ISO-8859-7" | "ISO-8859-8" | "ISO-8859-9" | "ISO-2022-JP" | "ISO-2022-JP-2" | "ISO-2022-KR" | "UNICODE-1-1" | "UNICODE-1-1-UTF-7" | "UNICODE-1-1-UTF-8" | token
Pri tem presledek med podpicjem in
Content-Type: text/html; charset=ISO-8859-2
charset=ISO-8859-2
ni obvezen.
&#nnn;
dolocajo pismenko s kodo nnn v referencnem razporedu znakov (ISO 8859-1 oz. ISO 10646), ne pa v trenutno izbranem. Na ta nacin torej sploh ne moremo uporabljati nasih znakov, kodiranih skladno s kodnim razporedom ISO 8859-2, lahko pa uporabimo 16-bitne kode ISO 10646. Crko c (mali C s kljukico) lahko torej zapisemo kot č
. In samo tako.Kdaj je uporaba kodnega razporeda ISO 8859-2 priporocljiva, kdaj pa ne? Znotraj intraneta (notranjega informacijskega sistema) v okolju, kjer se uporablja ISO 8859-2, je morda smiselno ta razpored uporabiti za vse spise. Ce pa je informacija namenjena sirsemu obcinstvu, pa je potrebno vedeti, da je uporabniki zunaj srednje ali vzhodne Evrope, kjer se ta kodni razpored uporablja, informacije morda ne bodo mogli prikazati. Veljavno dolocilo prenosnega protokola HTTP namrec od spletnih brskalnikov ne zahteva, da prikazejo spise HTML, ki uporabljajo kodni razpored ISO 8859-2. V primeru, da brskalnik ne zmore prikazati strani v zahtevanem kodnem razporedu, lahko ta problem ignorira in stran (nepravilno) prikaze v nekem drugem kodnem razporedu (navadno ISO 8859-1), ali pa ponudi, da spis shranimo na disk. Zato je priporocljivo, da vstopne tocke v vas informacijski sistem ne uporabljajo kodnih razporedov, razlicnih od ISO 8859-1.
Obdelali bomo tri metode, s katerimi lahko spletni streznik prilagodimo, da pravilno postreze uporabniku s spisom, kodiranim po ISO 8859-2:
Ob zahtevku za spis vecina spletnih streznikov izve zvrst staticnih spisov iz pripone datoteke ter na osnovi tega izdela glavo MIME, s katero opremi spis, preden ga izroci prejemniku. Vec razlicnih pripon lahko ustreza isti zvrsti spisa (priponi .jpeg
in .jpg
na primer obe dolocata zvrst image/jpeg
), obratno pa ne - ena pripona lahko doloca kvecjemu eno zvrst spisa.
Nobene splosne metode ni, ki bi dovoljevala uporabo pripone .html
za spletne spise, kodirane bodisi v skladu s kodnim razporedom ISO 8859-1, bodisi ISO 8859-2, in pricakovala od spletnega streznika, da se bo nekako odlocil, s kaksno glavi MIME bo opremil ene in druge. Ena moznost je vsekakor, da pripono .html
trajno vezemo na zvrst spisov HTML, kodirani skladno s kodnim razporedom ISO 8859-2. Ta resitev ima seveda ocitno pomanjkljivost za obcinstvo, ki ne more prikazati tega nabora znakov.
Tukaj predlagana resitev izkorisca zmoznost spletnih streznikov, da dolocijo novo pripono datoteke in jo vezejo na zvrst spisa text/html; charset=ISO-8859-2
v glavi MIME. To moznost podpira vecina spletnih streznikov. Streznika W3C ter NCSA httpd
(ter vse njune izpeljanke, npr. Apache) uporabljata ukaz AddType
v nastavitveni datoteki za vezavo dodatnih zvrsti spisov na nove pripone datotek. Z enostavno in domisleno shemo (glej Resitev problema slovenskih sumnikov v HTML dokumentih lahko zagotovimo pravilne glave MIME za zvrsti spisov, ki uporabljajo kodne razporede, razlicne od ISO 8859-1. Ce na primer dolocimo pripono .html-l2
za spise, kodirane skladno s kodnim razporedom ISO 8859-2, moramo v nastavitveni datoteki dodati vrstico:
AddType .html-l2 text/html;charset=ISO-8859-2 8bit 1.0
AddType text/html;charset=ISO-8859-2 .html-l2
AddType text/html;charset=ISO-8859-2 html-l2
Na vsakem spletnem strezniku, ki podpira vmesnik Common Gateway Interface (CGI) lahko izvedemo dinamicno prekodiranje spletnih spisov. Poleg dobrih strani (iz enega samega izvora lahko ponudimo spletni spis v mnogo razlicnih kodnih razporedih) ima ta metoda tudi slabe: pretvarjanje spisa po eni strani porablja procesorski cas streznika, po drugi pa dinamicnih spisov posredniki (angl. proxy) navadno ne shranjujejo v medpomnilniku, zato z njimi dodatno obremenjujemo komunikacijske vode.
Primera skriptov, ki izvajata dinamicno prekodiranje:
Sledijo tri resitve, ki uporabljajo posebnosti in nestandardne razsiritve programske opreme. Prvi dve se nanasata na spletni streznik, zadnja na priljubljeni spletni brskalnik Netscape Navigator. Istega problema se je lotil G. Nicol s predlogom ``MIME Header Supplemented File Type''.
Spletni streznik W3C (nekoc poznan kot CERN WWW) omogoca dodajanje metainformacije v glave MIME odhodnih spisov.
Po privzeti nastavitvi isce streznik metainformacije v datotekah s pripono .meta
podimenik .web
imenika s spisi. Ce na primer spletne spise hranimo v imeniku /WWW/Hypertext
in zelimo opremiti spis isolatin2.html
v njem s pravilno glavo MIME, napravimo to takole:
.web
:
$ mkdir /WWW/Hypertext/.web
Content-Type: text/html; charset=ISO-8859-2
Streznik Apache doloca poseben tip datoteke, imenovan ASIS. Streznik poslje datoteko ASIS odjemniku natancno taksno, kot je (angl. ``as is''), ne da bi jo opremil z glavo, ki jo sicer zahteva protokol HTTP. Datoteka sama mora zato vsebovati vsa potrebna polja, ki jih zahteva protokol HTTP, tem sledi prazna vrstica in vsebina spisa HTML.
V nastavitveni datoteki za streznik dolocimo, da pripona .asis
pripada zvrsti spisa httpd/send-as-is
:
AddType httpd/send-as-is asis
Primer datoteke ASIS:
Status: 200 OK Content-Type: text/html; charset=ISO-8859-2 <HTML> <HEAD> <TITLE>Hello world</TITLE> </HEAD> <BODY> <H1>Zivjo svet!</H1> </BODY> </HTML>
Kot vidite, morate v datoteko vkljuciti tudi tromestno odzivno kodo streznika. Streznik vedno doda polji Date:
in Server:
, zato teh ne smemo vkljuciti v datoteko.
V dolocilu HTTP 2.0 predlagana znacka <META>
z oznacbo HTTP-EQUIV
je bila predlagana kot neobvezna metoda, s katero lahko streznik potegne dodatno metainformacijo iz zaglavja (<HEAD>
) spletnega spisa in jo uporabi pri tvorjenju glave MIME. Piscu teh vrstic ni znano, da bi kateri streznik to v resnici tudi pocel. Tovrstno razclenjevanje spletnih spisov verjetno predstavlja preveliko obremenitev za procesor in bi se mocno poznalo pri odzivnosti spletnega streznika. Pac pa so namesto tega zaceli to informacijo uporabljati spletni brskalniki (Netscape Navigator, na primer, to pocenja od izdaje 2.0 dalje).
Primer spisa z metainformacijo o uporabljenem kodnem razporedu v zaglavju spisa:
<HTML> <HEAD> <TITLE>Naslov<TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2"> </HEAD> <BODY> Besedilo... </BODY> </HTML>
Z ukazoma telnet
ali rlogin
lahko prek omrezja TCP/IP delamo na drugem racunalniku.
Tezave z osembitnimi znaki pri tem so redko posledica napacne nastavitve v maloprej omenjenih programov, saj privzeti nastavitvi pri obeh podpirata osembitne znake. V primeru tezav se poleg teh programov splaca pogledati se
stty -parenb -istrip cs8
telnet
ali rlogin
Telnet eksplicitno pripravimo do vzpostavitve osembitne zveze z ukazom toggle binary
:
~> telnet
telnet> toggle binary
Negotiating binary mode with remote host.
telnet> open racunalnik
Telnet omogoca tudi, da si nastavitve za izbrane racunalnike vnesemo v nastavitveno datoteko, ~/.telnetrc. Vnosi imajo obliko:
... biofiz.mf.uni-lj.si set binary true ...
Privzet nacin zveze pri programu ``rlogin'' je osembiten, eksplicitno pa lahko to dolocimo z dolocilom ``-8'':
rlogin racunalnik -8
Poslovenjenje paketa LaTeX obsega
Podporo za neangleske jezike v LaTeXu je poenotil paket babel
Johannesa Braamsa z Nizozemske, ki je standardni del vseh sodobnih distribucij paketa TeX na Linuxu, kot sta teTeX in NTeX:
ftp://sunsite.informatik.rwth-aachen.de/pub/comp/tex/teTeX/
http://web.mathematik.uni-stuttgart.de/ntex/WWW/
Z uporabo izbire ``slovene'' v paketu babel
se avtomaticno izberejo slovenska imena pod- in nadnapisov, naslovov ipd., slovenska pravila za zlogovanje besed (ce imamo namescene slovenske zlogovalne vzorce; poglavje Slovenska pravila za deljenje besed), in 7-bitni nacin vnosa znakov "c"s"z
:
\usepackage[slovene]{babel}
V novi razlicici LaTeXa (LaTeX2e) lahko s paketoma fontenc
in inputenc
izberemo tudi 8-bitno kodno tabelo T1
(znano tudi kot DC ali Cork) in 8-bitni vnos znakov. Primer celotnega spisa v LaTeXu:
\documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \begin{document} Ceprav se pouk na zeleznicarski soli v Sentvidu obicajno konca sele ob stirih, odpesacijo ucenci iz obcin Zelimlje in Zetale domov ze cetrt cez tri. \end{document}
V starejsi razlicici paketa LaTeX, LaTeX 2.09, ne moremo uporabiti mehanizma inputenc
. Pomagamo si s stilom latin2.sty
Andreja Brodnika. Primer uporabe:
\documentstyle[latin2]{article} \begin{document} ... \end{document}
latin2
je na voljo na vseh streznikih CTAN, npr.
ftp://ftp.dante.de/tex-archive/macros/latex209/contrib/latin2/
Datoteko s slovenskimi pravili za zlogovanje besed je v okviru svoje diplomske naloge leta 1990 izdelal Matjaz Vrecko, in jo predal v last slovenskemu drustvu uporabnikov sistema TeX (TeXCeH). Na voljo je za individualno uporabo brez namena pridobivanja premozenjske koristi. Od leta 1995 dalje zanjo skrbi dr. Leon Zlajpah z IJS, ki jo je posredoval tudi skrbniku sistema sistema babel
za tujejezicno podporo v sistemu TeX, Johannesu Braamsu. Sistem babel
praviloma dobimo skupaj z distribucijo sistema TeX. Trenutno zadnja izdaja je 2.3, datirana 1997-04-15.
V distribuciji teTeX, ki je najbolj priljubljena distribucija na Unixu, vklopimo podporo za slovenske delilne vzorce tako, da kot administrator pozenete program texconfig
. V menuju izberemo moznost HYPHEN - hyphenation table (tex/latex). Program texconfig
pri tej izbiri pozene urejevalnik vi
in vanj nalozi datoteko language.dat. Za tiste, ki ga ne poznate, najnujnejse o uporabi le-tega: levo, desno, gor in dol po besedilu se premikate s tipkami h
, l
(mali L), j
in k
. Znak pobrisete tako, da kurzor pripeljete nanj in pritisnete tipko x
. Datoteko shranite in zakljucite z delom s pritiskom na tipko Esc
in vpisom :wq
(dvopicje, mali W, mali Q), ki mu sledi Enter
. Oborozeni s tem znanjem v datoteki language.dat pobrisemo komentar (znak za procent) pred zapisom slovene sihyph22.tex
, shranimo in zapustimo urejevalnik. Program texconfig
bo avtomaticno ustvaril nove formatne datoteke z vgrajenimi delilnimi vzorci.
Pisec teh vrstic je imel nepojasnjene tezave z datoteko sihyph22.tex, ki so enako cudezno izginile, ko mu je dr. Zlajpah poslal novo izdajo slovenskih delilnih vzorcev. Dobimo jo lahko na ftp://sizif.mf.uni-lj.si/pub/i18n/tex/sihyph23.tex in jo postavimo ob bok stari datoteki, navadno v imenik /usr/TeX/texmf/tex/generic/hyphen/. Pozenemo texconfig
, tam najprej osvezimo seznam datotek (izbira REHASH - rebuild ls-R database), zatem pa ponovimo postopek iz prejsnjega odstavka, s tem, da ime sihyph22.tex
popravimo v sihyph23.tex
.
Dodatne informacije o slovenski skupini uporabnikov TeX najdete na
http://vlado.fmf.uni-lj.si/texceh/texceh.htm
(Roman Maurer, <[email protected]>)
Ce uporabljamo LyX s standardno slovensko tipkovnico (102/105 tipk), ga lahko enostavno prilagodimo za delo s slovenscino:
Zal izgleda, da LyX tega podatka nikamor ne shrani. Zato moramo rocno dodati v datoteko lyxrc (sistemska je navadno v imeniku /usr/share/lyx/, uporabniska pa v ~/.lyx/) naslednjo vrstico:
Options / Screen Fonts / Font Norm = iso8859-2
\font_norm iso8859-2
Layout / Document / Language = slovene Layout / Document / Encoding = latin2 Layout / Paper / Papersize = A4 Layout / Quotes = ,,text`` & Double
Layout / Save layout as default
"Should I set some parameters to letter the defaults of this document class?"
Zaradi napake v LyXu do vkljucno 1.0.0pre2 ni mogoc vnos 8-bitnih znakov v matematicnem tekstovnem nacinu (math text mode). Pomagamo si tako, da postavimo kar celo formulo kot TeXovo kodo ("tex-mode"
- s tem sicer izgubimo WYSIWYG). Razvijalci LyX-a so o napaki obvesceni in jo bodo verjetno popravili v naslednjih izdajah.
7-bitni vnos sumnikov kot "c"s"z
je otezen, ker LyX avtomaticno pretvori dvojni narekovaj v dva enojna. Prva misel je, da si lahko spet pomagamo z izbiro "tex-mode"
, udobnejsa moznost pa je, da predefiniramo dvojni narekovaj. V datoteko emacs.bind (ali pa cua.bind, kar ze uporabljamo) dodamo vrstico:
\bind "S-quotedbl" "accent-caron"
Nase znake bomo zdaj dobili s pritiskom na "c"s"z
. S tem zal izgubimo avtomaticno pretvarjanje dvojnega narekovaja v dva enojna, a vsega pac ne moremo imeti...
Datoteka emacs.bind je v imeniku ~/.lyx/bind/. Ce je se ni, lahko napravimo kopijo sistemske z imenika /usr/share/lyx/bind/ in jo popravimo.
Ce imamo staro slovensko tipkovnico (ameriska s csz namesto ~{`), lahko uporabimo premapiranje tipkovnice v Latin 2 Alena Salamuna <[email protected]>
:
Options / Keyboard / Primary = slovene
Ustrezna datoteka slovene.kmap je tipicno v imeniku /usr/share/lyx/kbd/.
Takole pa lahko uporabimo crkovalnik ispell za crkovanje slovenskih spisov:
Edit / Spellchecker / Spellchecker Options * Use alternate language: slovensko * Extra special chars allowed in words: cszCSZ
V slovenski izdaji urejevalnika LyX pa:
Uredi / Crkovalnik / Izbire crkovalnika * Uporabi drug jezik: slovensko * Dodatni posebni znaki, dovoljeni v besedah: cszCSZ
V Evropi je standardni format papirja A4, kar moramo dopovedati tudi programom za pregled besedila na zaslonu:
V datoteko ~/.Xresources (osebna nastavitev) dodamo vrstico
XDvi.paper: a4
V datoteko ~/.Xresources (osebna nastavitev) ali pa v datoteko /usr/lib/X11/app-defaults/Ghostview (skupna nastavitev) dodamo vrstice:
! Ghostview naj uporablja format A4 *pageMedia: A4 ! Tudi Ghostscript naj uporablja format A4 *Ghostview.interpreter: gs *Ghostview.arguments: -sPAPERSIZE=a4
/usr/share/ghostscript/izdaja/gs_init.ps
ali /usr/local/share/ghostscript/izdaja/gs_init.ps
) globalno izberemo velikost strani A4. Poiscemo spodnjo vrstico in jo odkomentiramo (pobrisemo zacetni znak za procent):
% (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse
Najpogostejse orodje za izdelavo stvarnih kazal v sistemu TeX je Makeindex. Ta je le omejeno lokaliziran (poleg angleskih pozna se nemska pravila za razvrscanje) in nase abecede ne pozna.
Stvarno kazalo v LaTeX izdelamo z ukazom \makeindex
v preambuli; vsako besedo, ki jo zelimo vnesti v kazalo, pa moramo posebej oznaciti z ukazom \index{vnos}
. Ker navadno zelimo stvarno kazalo tudi izpisati, dodamo se ukaz \printindex
, ta pa je definiran v makropaketu makeidx
. Zgled, datoteki recimo zelez-sola.tex, naj ilustrira povedano:
\documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \usepackage{makeidx} \makeindex \begin{document} Ceprav se pouk na zeleznicarski soli\index{s~ola@sola!z~eleznic~arska@zeleznicarska} v Sentvidu\index{S~entvid@Sentvid} obicajno konca sele ob stirih, odpesacijo ucenci iz obcin Zelimlje\index{Z~elimlje@Zelimlje} in Zetale\index{Z~etale@Zetale} domov ze cetrt cez tri. \printindex \end{document}
Trik je v tem, da makeindex
dopusca skladnjo \index{vnos1@vnos2}
, kjer je vnos1
tisti, po katerem se kazalo ureja, vnos2
pa besedilo, ki se v resnici izpise. Naso crko C
zato pisemo kot C~
(znak ~
je v kodnem razporedu ASCII za vsemi crkami), in tako bo zanesljivo uvrscena za vsemi C. Besedilo prevajamo v treh korakih:
latex zelez-sola makeindex zelez-sola latex zelez-sola
Prvi latex
iz datoteke zelez-sola.tex izdela datoteko zelez-sola.idx, ukaz makeindex
to uredi in iz nje izdela datoteko zelez-sola.ind, to pa vsrka drugi ukaz latex
.
Groff nudi precej omejeno podporo za nase znake. Pri izpisu na zaslon (nacin nroff
) lahko goljufamo tako, da zapisemo datoteko z osembitnimi znaki ISO Latin 2, programu pa lazemo (izbira -Tlatin1
), da so kodirani po razporedu ISO Latin 1.
Henryk Paluch je napisal paket groff-latin2
, s katerim lahko nase znake vnasamo kot makroukaze, na primer:
Izpis v obliki PostScript v casu pisanja tega spisa se vedno ne deluje, ceprav bi se mehanizme iz paketa ``ogonkify'' Juliusza Chroboczka podobno kot v programu ``a2ps'' verjetno dalo uporabiti tudi tu. Se najvecji problem je verjetno ta, da je paket ``groff'' osirotel, saj ga prvotni avtor, James Clark, ne vzdrzuje vec. Za paket
\('a a z ostrivcem \(vc c s stresico \vou u s krozcem
groff-latin2
zdaj skrbi Jan Kasprzak <[email protected]>, najdete ga na
ftp://ftp.fi.muni.cz/pub/localization/groff/
Od izdaje 5.004 dalje tudi Perl podpira lokalizacijo. Nastaviti moramo primerne spremenljivke okolja in bodisi v programu uporabiti klic
use locale;
-Mlocale
. Nekaj primerov; preizkus smo si sposodili pri Janu Pazdziori:
~> LC_CTYPE=sl_SI.iso88592 perl -Mlocale -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:z:i:s:c:e: ~> LC_CTYPE=C perl -Mlocale -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:zi:sce: ~> LC_CTYPE=sl_SI.iso88592 perl -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:zi:sce:
Kot vidimo, je samo v prvem primeru, ko smo izvedli oboje: nastavili spremenljivko LC_CTYPE
in Perl poklicali z izbiro -Mlocale
, nase znake res uposteval kot crke (\
).
Vecina sodobnih distribucij Linuxa ze pride s crkovalnikom Ispell; manjka pa mu slovenski besedni zaklad. Tega najdete v datoteki
ftp://sizif.mf.uni-lj.si/pub/i18n/ispell/slovensko.tar.gz
Arhivska datoteka vsebuje dve datoteki, slovensko.hash in slovensko.aff. Postavimo ju tja, kjer Ispell ze hrani leksikone za ostale jezike. Pri piscu teh vrstic je to /usr/lib/ispell/; ce pri vas ni, si lahko morda pomagate s tem, da s find poskusite poiskati datoteko english.aff. Osnovni slovenski leksikon izvira iz baze, ki jo je podjetje Amebis d.o.o. prispevalo za mednarodni projekt MULTEXT-East; s posredovanjem dr. Tomaza Erjavca z odseka za inteligentne sisteme na Institutu Jozef Stefan pa je na voljo za nepridobitno uporabo.
Ispell uporabljamo tako, da mu v ukazni vrstici podamo jezik, v katerem je napisano besedilo, na primer english, deutsch, francais ali slovensko:
ispell -d slovensko besedilo.txt
Natancnejsa navodila za ravnanje s programom Ispell boste nasli v prirocniku, vec o prilagoditvi paketa ispell
za slovenscino si lahko preberete na strani Slovenscina in racunalniki Alesa Kosirja. Ispell s slovenskim besednim zakladom poganja tudi spletni crkovalnik Trubar istega avtorja:
http://nl.ijs.si/cgi-bin/truform.pl
Razen ISO Latin 2 vsebuje vse nase znake se nekaj drugih naborov: Microsoft Codepage 1250, IBM Codepage 852, JUS I.B1.002, Apple MacOS-CE, Apple MacOS-Croatian, Kamenicky, ISO Latin 4, ISO Latin 6, ISO Latin 7 itd.
Ceprav ni tezko napisati programcka za pretvorbo iz enega kodnega nabora v drugega, je pripravno uporabiti ze izdelan program. Eden takih je GNU recode, dostopen npr. na strezniku ARNES:
ftp://ftp.arnes.si/software/gnu/recode/recode-3.4.tar.gz
Starejse izdaje GNU recode (pred 3.5) ne poznajo Microsoftovih kodnih strani 1250-1259.
Uporaba je enostavna:
recode yu:latin2 datoteka
pretvori datoteko iz kodnega nabora JUS I.B1.002 v kodni nabor ISO Latin 2. Kot obicajno izda tudi tu izbira --help
se dodatne moznosti.
Novejse izdaje programa recode (ki poznajo tudi nekaj vec kodnih naborov), uporabljajo malo drugacno skladnjo:
recode yu..latin2 datoteka
Po izkusnjah pisca pa je precrkovanje (npr. ,,nabori`` latex
ali flat
) se vedno omejeno na pretvorbo iz in v nabor ISO 8859-1. Novejse (preizkusne) izdaje programa recode najdete na:
ftp://ftp.iro.umontreal.ca/pub/recode/
Less (avtor Mark Nudelman) je program za pregledovanje besedil na zaslonu, in je priljubljena zamenjava standardnega more
.
Less prilagodimo za izpis osembitnih znakov z nastavitvijo v ~/.profile:
LESSCHARSET=latin1; export LESSCHARSET
latin1
namesto latin2
ni pomota. Less zaenkrat slednjega se ne pozna, ker pa ga pravzaprav zanima samo, kateri znaki so obicajni, kateri pa kontrolni (ki zahtevajo posebno obravnavo), ker pa je razpored znakov enak v celotni druzini ISO 8859, lahko izberemo kar latin1. Namesto tega lahko tudi eksplicitno navedemo zaporedje tipa znakov v naboru:
Vsi nabori iz druzine ISO 8859 imajo osem binarnih znakov (posebnih znakov, ki jih praviloma ni v besedilih), tri kontrolne znake, binarni znak, dva kontrolna znaka, osemnajst binarnih znakov, 95 navadnih znakov, 33 binarnih znakov, in normalne znake do konca tabele.
LESSCHARDEF="8bcccbcc18b95.33b."; export LESSCHARDEF
Vsi sistemi Unix imajo vgrajen koledarcek cal
, ki pa je precej anglocentricen. Thomas Esken iz Nemcije je napisal alternativni koledarcek gcal
. Od izdaje 2.40 dalje pozna tudi slovenske praznike. Najdemo ga na obicajnih mestih distribucije GNU. Najblizje je verjetno:
ftp://ftp.arnes.si/software/gnu/
Spodnja vrednost spremenljivke GCAL
ustreza nasim razmeram:
GCAL="--cc-holidays=SI --gregorian-reform=1582"; export GCAL