Uvod v namizje K

Poglavje 2. Osnovna orodja potrebna za izdelavo DocBook dokumenta

2.1. Primerni urejevalniki

Primerni so pravzaprav vsi, ki shranijo datoteke kot ASCII. Torej vi, emacs, knotepad, kwrite, itd. Če je kdo ob tem pomislil na Notepad iz Windows (recimo, da dela del časa na tako hendikepiranem računalniku) še opozorilo:

Pri uvažanju so težave: znaki morajo biti v latin2 (ISO 8859-2) in ne v CP1250 (Win) ali CP852 (DOS), sicer se bo prevajalnik pritožil, a vseeno prevedel datoteko. Težava je le v tem, da bodo tam namesto naših znakov prazna mesta.... To, da je prelom vrstice v DOS-u <CR> <LF>, v Unix-u pa le <LF> niti ni tako hudo. Zakaj sem predlagal emacs ali pa pod določenimi pogoji kwrite? Vsekakor zelo priporočam barvanje skladnje (emacs sam prepozna SGML datoteke, v kWrite pa nastavimo poudarek na HTML (v bistvu gre za SGML). Emacs je posebej uporaben za poganjanje prevajalnika (da ni treba vedno skakati v ukazno vrstico), pa še zgodovino različic lahko nadziramo... skratka priporočam! Gre pa tudi drugače....

2.1.1. emacs

Kot že rečeno, emacs podpira barvanje skladnje SGML (z ustreznim modulom seveda - v večini distribucij bi načeloma moral biti; v SuSE 6.1 je). Seveda pa je to treba vklopiti: Help->Options->Global Font Lock Ker je nerodno podporo za barvanje vsakič znova vklapljati je bolje, da v datoteki .emacs ki se nahaja v vašem domačem imeniku (/home/moje_uporabniško_ime) dodamo ti dve vrstici:
 (set-language-environment "Latin-2")
 (global-font-lock-mode t)
Predvsem prvo priporočam (Latin2 je za nas namreč trenutno edini način kodiranja dokumentov; UTF-8 se zaenkrat uporablja le za sporočila na zaslon; CP-1250 (Micro$oft) pa tako ali tako ne!), barvanje skladnje pa je osebna izbira... Zelo uporabna možnost, ki jo ponuja emacs je lupina (shell mode). Z njeno pomočjo lahko kar iz emacsa poganjamo programe v ukazni vrstici. Tako ni potrebno imeti odprte dodatne konzole ali pa preklapljati med njimi (v tekstovnem načinu). Uporabiti moramo M-x shell (kdor ne ve, da v tem primeru M pomeni tipko Alt ("meta key"), si naj prosim prebere kaj več o emacsu). Odpre se novo okno, v katerem na primer vtipkamo
 db2html -d /usr/lib/sgml/stylesheets/kde.dsl index.docbook
pritisnemo Enter in v drugem delu okna mirno urejamo besedilo dalje medtem ko se docbook prevaja v HTML... Ko želimo v lupini znova pognati isti ukaz, se lahko tipkanju izognemo z C-c C-l (kjer je C Ctrl), ki nam vrne zgodovino prejšnjih ukazov. Prejšnji ukaz nam prikliče M-p, naslednji pa M-n. Če se želi kdo lotiti večjega projekta, naj si pogleda menu Tools->Version Control s pomočjo katerega bo lahko vzdrževal vse različice datotek. To pa še ni vse - emacs omogoča tudi preverjanje črkovanja (Edit->Spell). Kot kaže emacs v osnovni varianti barva sintakso docbook-a le, če je na koncu kot komentar dodan
 <!--
 Local Variables:
 mode: sgml
 sgml-omittag: nil
 sgml-shorttag: t
 End:
 -->
saj ne spozna .docbook. Ravno te vrstice pa so tarča pri čiščenju izvorne kode. Rrešitev je preprosta: vtipkajte M-x sgml-mode pa bo (M je tu Alt).

Modul psgml (zraven paketa docbook tools) je bistveno zmogljivejši, a kot kaže privzeto ne barva sintakse sgml. Na strani http://www.snee.com/bob/sgmlfree/emcspsgm.pdf je v 99 (!) straneh dolgem priročniku (PDF je zelo velik) naslednji nasvet (na strani 89): v datoteki .emacs je treba postaviti vrednost spremenljivke sgml-set-face na "non-nil". Rešitev je torej
 (setq sgml-set-face t)
Sedaj je treba privzeto shemo še prikazati na zaslonu. Aktivna postane namreč šele, ko uporabimo DTD->Parse DTD, počakamo dve ali tri sekunde in emacs zasije v novem izgledu. Ali pa ne...

Kaj je šlo narobe? Privzeta shema je poudarjeno besedilo, torej "bold", in če ste na konzoli ali pa imate font, ki ne more biti poudarjen... No, rešitev je preprosta:
 (make-face 'sgml-comment-face)
 (make-face 'sgml-start-tag-face)
 (make-face 'sgml-end-tag-face)
 (make-face 'sgml-entity-face)
 (make-face 'sgml-param-face)
 (make-face 'sgml-doctype-face)
 
 (set-face-foreground 'sgml-comment-face "Gray")
 (set-face-foreground 'sgml-start-tag-face "Blue")
 (set-face-foreground 'sgml-end-tag-face "MediumAquamarine")
 (set-face-foreground 'sgml-entity-face "Gold")
 (set-face-foreground 'sgml-param-face "Violet")
 (set-face-foreground 'sgml-doctype-face "Red")
 
 
 (setq sgml-markup-faces
   '((comment    . sgml-comment-face)
     (start-tag  . sgml-start-tag-face)
     (end-tag    . sgml-end-tag-face)
     (entity     . sgml-entity-face)
     (param      . sgml-param-face)
     (doctype    . sgml-doctype-face)))
 
Te vrstice je treba dodati v datoteko .emacs pred vrstico, ki barvanje vklopi (setq sgml-setface t). Seveda so barve poljubne (da jih le emacs pozna), pa tudi vseh lastnosti ni treba pobarvati (start- in end-tag sta lahko enake barve).


Primer 2.1. Posnetek emacs-a

Prikazana je uporaba modula psgml iz paketa docbook orodij.


2.1.2. kwrite

KWrite (K->Uporabniški programi->Napredni urejevalnik) je manj zmogljiv, čeprav se izkaže pri barvanju SGML kode: ne le da jo lahko lepo barva, za posamezne elemente lahko uporabi različno pisavo - kar precej pripomore k berljivosti. Za morebitne novince je tudi precej lažje obvladljiv kot pa emacs, katerega uporabniški vmesnik je sam svoj standard.


Primer 2.2. Posnetek kWrite

Izrez iz okna kWrite. Lepo je vidna uporaba različnih pisav.


Kdor je vajen novejših urejevalnikov iz sveta DOS/Win, se bo z lahkoto znašel. Se pa ne bo dalo izogniti uporabi terminalskega okna.