LinuxDoc+Emacs+Ispell-HOWTO Avtor: Philippe MARTIN () &nl; Prevajalec: Sébastien Blondeel () &nl; Prevajalca v slovenščino: Roman Maurer (prva štiri poglavja) in Jernej Kovačič () (drugo) v0.5, 28. april 1998, prevod 10. september 2001 Ta sestavek je namenjen prevajalcem in piscem spisov HOWTO za Linux ali katerihkoli drugih dokumentov Dokumentacijskega projekta za Linux. Ponuja jim namige za uporabo orodij, tudi za urejevalnik besedil Emacs in črkovalnik Ispell. Predgovor Pravice razširjanja

Copyright Philippe Martin 1998&nl; Ta sestavek lahko razširjate in/ali spreminjate, če upoštevate pogoje splošne licence GNU, različice 2 ali poznejše. Zahvale

Posebej se zahvaljujem Sébastienu Blondeelu, ker me je veliko spraševal o nastavitvah Emacsa. Po zaslugi njegovih bistrih vprašanj bolje poznam ta urejevalnik in lahko s tem dokumentom svoje znanje prenašam tudi na vas. Pripombe

Brez oklevanja mi sporočite morebitne pripombe in/ali kritike tega dokumenta, za katere mislite, da bodo izboljšale spis. &nl; Prav tako brez oklevanja zastavljajte vprašanja, ki se nanašajo na tu obravnavane teme, z veseljem vam bom odgovoril. Različice

Ta sestavek obravnava naslednje različice: SGML-Tools različice 0.99, Emacs različice 19.34, Ispell različice 3.1, Vse knjižnice Emacsa, na katere se sklicuje ta sestavek, se razširjajo z gornjo različico Emacsa, razen Uvod Jezik SGML

Jezik Standard Generalised Mark-up Language) je jezik za definiranje vrst dokumentov.

Na primer, definira se lahko vrsta dokumenta za kuharski recept, katerega prvi del določa sestavine, drugi del pripomočke, tretji navodila za peko torte, v zadnjem delu pa je prikazana slika končnega rezultata.

Taka definicija vrste dokumenta se imenuje DTD (ang. Document Type Definition). DTD ne določa videza končnega izdelka, temveč le definira, kaj vse lahko obsega.

Če spet uporabimo prejšnji zgled: prepričan sem, da ste se ob branju mojega kuharskega recepta domislili svojega ali recepta vašega najljubšega kuharja. Vsak je drugačen: moj je na fotografiji, ki jo najdete v levem zgornjem kotu kopališke omarice, seznam sestavin pa poiščite med bazenom in žarom. Pa vaš?

Zahvaljujoč tej standardni definiciji se lahko pišejo sestavki, ne da bi morali predvideti, kako jih bo videl bralec. Definicija vrste LinuxDoc

Ta vrsta omogoča pisanje, kot ste verjetno uganili, dokumentacije, povezane z Linuxom.

Ti dokumenti so navadno sestavljeni takole: začenjajo se z naslovom, Temu sledi avtorjevo ime in številka različice ter datum. Potem pride povzetek, ki na kratko razlaga vsebino sestavka (da vam ni treba brskati po njej, nazadnje pa ugotovite, da to ni to, kar iščete), potem kazalo, ki prikazuje strukturo sestavka in omogoča tistim, ki se jim mudi, da preidejo neposredno na del, ki ga želijo brati.

In nadalje sledi zbirka poglavij, razdelkov, odstavkov. Med temi odstavki lahko vstavite kodo programov, spremenite pisavo, da ponazorite besedo ali stavek, vstavljate sezname, se sklicujete na druge dele sestavka itd.

Za pisanje takega sestavka zadostuje na primernem mestu določiti naslov, avtorja, datum in različico sestavka, nato pisati poglavja in razdelke, povedati, kdaj se vstavi seznam in kaj so njegovi elementi itd. Paket SGML-Tools

Paket SGML-Tools omogoča izdelavo končnega formata dokumenta iz njegovega opisa. Če želite dokument uvrstiti v osebno knjižnico, boste izbrali izhodni format PostScript, če ga želite deliti s svetom na svetovnem spletu, boste izbrali HTML, in če ne morete pomagati in morate brati v Windows, ga boste spremenili v RTF, da ga boste lahko uvozili v kak urejevalnik besedil. Morda boste želeli uporabljati različne formate, ki se bodo prilagajali vašemu spremenljivemu razpoloženju. Paket SGML-Tools je dostopen po anonimnem FTP iz arhiva . Vaš prvi sestavek

Iz tekstovne datoteke

Če želite spremeniti svoj tekstovni dokument v DTD LinuxDoc, da bi ga potem spremenili v razne druge formate, je to prava pot: Na samem začetku sestavka dodajte naslednje vrstice:

Tu je naslov&etago;title> <author> ime avtorja, njegov e-poštni naslov &etago;author> <date> različica in datum sestavka &etago;date> </verb></tscreen> <item>Če na začetku na kratko opišete vsebino sestavka, obkrožite ta odstavek z oznakama <tt><abstract></tt> in <tt>&etago;abstract></tt>. <item>Potem vstavite oznako <tt><toc></tt>, ki v končnem formatu samodejno naredi <em>kazalo</em> (ang. Table Of Contents). <item>Na začetku vsakega novega poglavja nadomestite vrstico s številko in naslovom poglavja z vrstico: <tscreen><verb> <sect>Naslov poglavja </verb></tscreen> in na koncu poglavja dodajte oznako <tt>&etago;sect></tt>.&nl; <p> <bf>Vedite:</bf> Ni vam treba vstavljati številke poglavja, to se naredi samodejno. <item>Enako nadaljujte z razdelki. Morali boste odstraniti njihove številke in označiti njihov obseg z oznakama <tt><sect1></tt> in <tt>&etago;sect1></tt>. <item>Podobno lahko definirate do štiri ravni gnezdenja razdelkov (pri <tt><sect4></tt> in <tt>&etago;sect4></tt>). <item>Na začetku vsakega odstavka vstavite oznako <tt><p></tt>. <item>Če želite poudariti določene dele ali fraze, jih ukleščite med oznaki <tt><it></tt> in <tt>&etago;it></tt> (<it>kurzivno</it>), ali <tt><bf></tt> in <tt>&etago;bf></tt> (<bf>polkrepko</bf>), ali med <tt><tt></tt> in <tt>&etago;tt></tt> (<tt>pisalni stroj</tt>). <item>Seznam, kot je naslednji: <tscreen><verb> To je seznam s štirimi vrsticami: - tu je prva vrstica, - potem druga, - še ena, - dovolj. </verb></tscreen> vstavite z naslednjo kodo: <tscreen><verb> To je seznam s štirimi vrsticami: <itemize> <item>tu je prva vrstica, <item>potem druga, <item>še ena, <item>dovolj. &etago;itemize> </verb></tscreen> <item>Ko celoten blok predstavlja del programa ali kaj drugega, kar mora ohraniti svoj videz: <tscreen><verb> <verb> 10 REM O, bog, kaj pa je zdaj to? 20 REM Mislil sem, da tega že zdavnaj ni več! 30 PRINT "Vrnil sem se"; 40 PRINT "rešit svet." 50 INPUT "Pred kom, sprašujete? ",M$ 60 IF M$="Bill" THEN PRINT "Pametni ste.":GOTO VRAJ 70 ELSE PRINT "Ničesar ne razumete...":GOTO DAJDOLARJE &etago;verb> </verb></tscreen> <item>Prišli ste do točke, ko so vaše formatirne zmogljivosti za SGML DTD LinuxDoc precej spodobne. Če želite izboljšati svoj sestavek, poglejte v uporabniški priročnik paketa <bf>SGML-Tools</bf>, ki podrobneje razlaga vrsto dokumenta <bf>LinuxDoc</bf>. </enum> </sect1> </sect> <sect>Prilagoditev Emacsa <p> <sect1>Šumniki in črke z naglasnimi znamenji <p> Črke slovenske abecede so podprte v kodnem naboru ISO Latin 2 (ISO 8859-2). Na tem mestu je koristno prebrati <htmlurl name="Slovenian HOWTO" url="http://www.lugos.si/delo/slo/HOWTO-sl/Slovenian-HOWTO.html">, ki razlaga nastavitve za vnos, prikaz in tiskanje naših črk. <p> Emacs prebere svoje nastavitve iz naslednjih datotek: <itemize> <item><tt>/usr/lib/emacs/site-lisp/site-start.el</tt> (skupne nastavitve) <item><tt>~/.emacs</tt> (osebne nastavitve) <item><tt>/usr/lib/emacs/site-lisp/default.el</tt> (skupne nastavitve) </itemize> Tam, kjer se sklicujemo na datoteko <tt>.emacs</tt>, s tem pravzaprav mislimo na katerokoli izmed zgornjih treh datotek. <sect2>Prikaz osembitnih znakov <p> Če želite pisati spise <tt>.sgml</tt> v slovenščini ali v kateremkoli drugem evropskem jeziku, boste potrebovali osembitne znake. Emacs prilagodite za prikaz osembitnih znakov z naslednjo vrstico v vaši datoteki <tt>.emacs</tt>: <tscreen><verb> (standard-display-european t) </verb></tscreen> Za vnos zahodnoevropskih črk pride prav tudi naslednja vrstica, ki pa zaenkrat ni uporabna za slovenščino: <tscreen><verb> (load-library "iso-syntax") </verb></tscreen> Če uporabljate Emacs za pisanje zahodnoevropskih besedil na terminalu, ki ne podpira osembitnega prikaza, lahko uporabite knjižnico <tt>iso-ascii</tt> (<tt>(load-library "iso-ascii")</tt>), ki poskrbi, da Emacs prikazuje najboljše približke osembitnih črk. <sect2>Vnos osembitnih znakov <p> Tipkovnico nastavite za vnos osembitnih črk v konzoli ali v Oknih X, če Emacs poganjate tam. Take nastavitve so skupne vsem programom v konzoli ali v Oknih X in so opisane v spisu <htmlurl name="Slovenian HOWTO" url="http://www.lugos.si/delo/slo/HOWTO-sl/Slovenian-HOWTO.html">. <p> Če vaša tipkovnica v konzoli ali Oknih X torej podpira vnos osembitnih znakov, boste morali le v datoteko <tt>.emacs</tt> dodati naslednje vrstice: <tscreen><verb> ;; Omogočimo vnos znakov s kodo, večjo od 127 (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) </verb></tscreen> Če vaš terminal ne podpira osembitnega vnosa, ste pri pisanju slovenskih besedil v težavah. Za pisanje zahodnoevropskih besedil si lahko pomagate z dodatnimi paketi: <sect3>Knjižnica <tt>iso-acc</tt> <p> Knjižnica za Emacs <tt>iso-acc</tt> vam bo omogočila vnos osembitnih znakov s tipkovnico, ki sicer omogoča le vnos sedembitnih črk. <p> Za uporabo te knjižnice vstavite naslednje v vašo datoteko <tt>.emacs</tt>: <verb> (load-library "iso-acc") </verb> <p> Ko boste naslednjič pognali Emacs in odprli datoteko, ki bi jo radi uredili, napišite <tt>Meta-x iso-accents-mode</tt>. <p> Črko <bf>é</bf> v francoski besedi <em>café</em> lahko vstavite tako, da pritisnete <bf>'</bf> in potem še <tt>e</tt>. V splošnem lahko vpišete zahodnoevropski znak z naglasnim znamenjem tako, da najprej pritisnete ustrezno naglasno znamenje, ki mu sledi črka pod njim (velika ali mala). Uporabite lahko naslednja naglasna znamenja: <list> <item><tt>'</tt> : ostrivec <item><tt>`</tt> : krativec <item><tt>^</tt> : strešica <item><tt>"</tt> : preglas" <item><tt>˜</tt>~: tilda nad črko, sedij (kljukica pod ,,c``), in drugi posebni primeri (glejte <tt>iso-acc.el</tt>) <item><tt>/</tt>~: različna skandinavska naglasna znamenja idr. </list> Če potrebujete enega od teh znakov in ne naglašene črke, pritisnite za njim presledek. Na primer, za vnos <it>l'éléphant</it>, napišite <tt>l ' <cparam/spc/ ' e l ' e ...</tt> <p> Vse možne kombinacije boste našli v datoteki <tt>iso-acc.el</tt>. <sect3>Tipka <cparam/Meta/ <p> Nekateri terminali vam omogočajo vnos osembitnih znakov s tipko <cparam/Meta/ (ali <cparam/Alt/). Na primer, če pritisnete kombinacijo <bf><cparam/Meta/-i</bf>, lahko dobite znak <bf>é</bf>. <p> Vendar Emacs potrebuje tipko <cparam/Meta/ za drugačno rabo. Zato morate pritisniti zaporedje <cparam/Ctrl/-q (ukaz <tt>quoted-insert</tt>), preden pritisnete <cparam/Meta/-i. Ta ukaz vam dovoljuje vnos znakov tudi z vpisom osmiške kode. Pritisnite kombinacijo <cparam/Meta/-q, ki ji sledi osmiška koda znakov, ki bi jih radi vnesli. Slovenske šumnike ,,ČŠŽ`` in hrvaški črki ,,ĆĐ``, pisane po ISO Latin 2, lahko vnesete z naslednjimi kombinacijami: <tscreen><verb> č Ctrl-q 350 Č Ctrl-q 310 š Ctrl-q 271 Š Ctrl-q 251 ž Ctrl-q 276 Ž Ctrl-q 256 ć Ctrl-q 346 Ć Ctrl-q 306 đ Ctrl-q 360 Đ Ctrl-q 320 </verb></tscreen> <sect2>Prikaz osembitnih znakov v SGML DTD LinuxDoc <p> V SGML lahko vnašate naglašene znake z makroukazi, vendar žal ne tudi srednjeevropskih. Na primer, simbol za tipko <bf/é/ je <bf/&eacute;/. V splošnem, aplikacije, ki morajo brati SGML, znajo brati osembitne znake in ni treba uporabljati teh makroukazov. Vendar nekateri morda ne bodo mogli brati osembitnih znakov. Če vemo, da je na voljo preprosta rešitev (spet samo za zahodne narode, op. prev.), bi bilo škoda pustiti, da se take aplikacije sesujejo. <p> Knjižnica <tt>iso-sgml</tt> vam omogoča vnos naglašenih znakov v Emacsu kakor vedno, a ob shranjevanju datoteke na disk bo samodejno spremenila osembitne znake v njihove ustreznike v SGML. Vendar, žal, slovenske povsem napačno, saj jih v ISO Latin 1 ni. <p> No, zahvaljujoč tej knjižnici, je lahko vnašati in brati spise z zahodnimi znaki, pisanimi po ISO Latin 1 (ISO 8859-1) v Emacsu, in prepričani ste lahko, da bo aplikacija, ki sicer ne sprejme osembitnih sestavkov, po takem postopku vašega sprejela. <p> Za uporabo te knjižnice morate dodati naslednje vrstice v vašo datoteko <tt>.emacs</tt>: <tscreen><verb> (setq sgml-mode-hook '(lambda () "Privzete nastavitve načina SGML." (load-library "iso-sgml"))) </verb></tscreen> <sect1>Način SGML <p> Po nalaganju datoteke s podaljškom <bf>.sgml</bf> Emacs samodejno vstopi v <bf>način sgml</bf> (ang. sgml mode). Če ne, mu lahko to naročite ročno z ukazom <tt>Meta-x sgml-mode</tt>, ali samodejno z dodatkom naslednjih vrstic v vašo datoteko <tt>.emacs</tt>: <tscreen><verb> (setq auto-mode-alist (append '(("\.sgml$" . sgml-mode)) auto-mode-alist)) </verb></tscreen> Ta način vam bo, na primer, omogočil izbiranje, kako boste vnašali osembitne znake. Z ukazom <tt>Meta-x sgml-name-8bit-mode</tt> (ali z menujsko postavko <it>SGML/Toggle 8-bit insertion</it>) lahko izberete vnos osembitnih znakov kot takih, ali v obliki SGML, se pravi, v obliki <bf>&...;</bf>. Emacs vam bo tudi dovoljeval skriti ali prikazati oznake SGML z ukazom <tt>Meta-x sgml-tags-invisible</tt> (ali z menujsko postavko <it>SGML/Toggle Tag Visibility</it>). <sect1>Način PSGML <p> Načinu PSGML zelo pomaga pri urejanju spisov SGML z Emacsom. <p> Dokumentacija za <htmlurl name="psgml-linuxdoc" url="http://www.linux-france.com/article/psgml-linuxdoc"> razlaga, kako namestiti in uporabljati ta način z zvrstjo besedila <it>LinuxDoc</it>. <sect1>Razno <p> <sect2>Način auto-fill <p> Ko v normalnem načinu napišete odstavek in pridete do konca vrstice, morate sami uporabiti tipko <cparam/Return/, da pridete v naslednjo vrstico, sicer se bo vaša vrstica nadaljevala nedoločeno dolgo skozi ves odstavek. Kadar uporabite <cparam/Return/ za pomik v novo vrstico, dobite odstavek z neporavnanimi desnimi robovi. Če dopustite, da so nekatere vrstice daljše od razumne širine, jih z nekaterimi urejevalniki ne boste mogli videti. <p> Način <bf>auto-fill</bf> avtomatizira to nehvaležno opravilo: ko greste dlje od določenega stolpca (privzeto 70.), vas samodejno postavi v naslednjo vrstico. <p> Takole uporabite ta način in nastavite širino vaših vrstic na 80: <tscreen><verb> (setq sgml-mode-hook '(lambda () "Defaults for SGML mode." (auto-fill-mode) (setq fill-column 80))) </verb></tscreen> <sect>Ispell <p> Če želite pravopisno preveriti spis v Emacsu, lahko uporabite paket <bf>Ispell</bf> in njegov način za Emacs. <sect1>Izbor privzetega besednjaka <p> Emacs lahko nastavite tako, da po nalaganju datoteke avtomatsko določi, kateri besednjak naj uporabi (uporabljate jih namreč lahko več). Prvi, zagotovo najpomembnejši, je glavni besednjak, ki se razširja skupaj z Ispellom. Izbirate lahko med več jeziki. Drugi besednjak je vaš osebni, v katerega Ispell vstavlja besede, ki jih ni našel v prvem besednjaku, vendar ste mu naročili, naj si jih zapomni. Če želite kot privzetega uporabljati slovenski besednjak (dobite ga lahko na naslovu <htmlurl url="ftp://sizif.mf.uni-lj.si/pub/i18n/ispell/ispell-sl-0.1-1.src.rpm" name="ftp://sizif.uni-lj.si/pub/i18n/ispell/ispell-sl-0.1-1.src.rpm">) in če želite uporabljati datoteko<tt>.ispell-dico-perso</tt> v vašem domačem imeniku kot osebni besednjak, vnesite naslednje vrstice v vašo datoteko <tt>.emacs</tt>: <verb> (setq sgml-mode-hook '(lambda () "Privzeto za nacin SGML." (setq ispell-personal-dictionary "~/.ispell-dico-perso") (ispell-change-dictionary "slovensko") )) </verb> <sect1>Izbor posebnih besednjakov za določene datoteke <p> Manjše težave povzroči, če ne preverjate črkovanja v dokumentih vedno v istem jeziku. Če prevajate dokumente, je zelo verjetno, da pogosto pomešate jezike (in besednjake). <p> Žal ne poznam nobenega načina v Lispu, niti avtomatskega niti kakšnega z enojnim klikom z miško, za izbor glavnih in osebnih besednjakov, povezanih s trenutno rabljenim jezikom. (Če veste kaj več, mi, prosim, povejte!) <p> Vendarle pa je mogoče na koncu datoteke označiti, katere besednjake želite uporabljati ob preverjanju trenutne (in samo te) datoteke. Zadostuje, da te oznake dodaste kot komentarje, tako da jih bo Ispell znal prebrati ob zagonu preverjanja črkovanja: <verb> <!-- Local IspellDict: english --> <!-- Local IspellPersDict: ~/emacs/.ispell-english --> </verb> Če ste prej v datoteki <tt/.emacs/ definirali, naj bodo privzeti besednjaki slovenski, lahko dodaste te vrstice na konec vsake datoteke v angleščini. <sect1>Preverjanje črkovanja v vašem dokumentu <p> Preverjanje črkovanja celotnega dokumenta lahko s kateregakoli mesta v preverjanem dokumentu poženete z ukazom <tt>Meta-x ispell-buffer</tt>. Lahko pa tudi preverite samo del dokumenta: <itemize> <item> Označite začetek področja s tipkama <tt>Ctrl-Spc</tt> (mark-set-command), <item> pojdite na konec področja, ki ga želite preveriti, <item> in vtipkajte <tt>Meta-x ispell-region</tt>. </itemize> Emacs zatem požene Ispell. Ko naleti na neznano besedo, vam jo pokaže (ponavadi osvetljeno) in čaka, da pritisnete na ustrezno tipko: <itemize> <item><bf>spc </bf>sprejme besedo, samo tokrat, <item><bf>i </bf>sprejme besedo in jo doda v vaš osebni besednjak, <item><bf>a </bf>sprejme besedo, velja samo za to preverjanje, <item><bf>A </bf>sprejme besedo samo za to datoteko in jo doda v besednjak za preverjano datoteko, <item><bf>r </bf>dovoli vam ročno popravljanje besede, <item><bf>R </bf>dovoli vam popravek, ki velja za vse primere napačno vtipkane besede, <item><bf>x </bf>ustavi preverjanje in postavi kazalec nazaj, <item><bf>X </bf>ustavi preverjanje in pusti kazalec tam, kjer je, tako lahko popravite datoteko; s preverjanjem črkovanja lahko nadaljujete pozneje, če vtipkate <tt>Meta-x ispell-continue</tt>, <item><bf>? </bf>ponudi vam sprotno pomoč. </itemize> Če Ispell najde eno ali več besed, ki so podobne neznani, vam jih bo pokazal v majhnem okencu. Pred vsako stoji številka. Samo vtipkajte to številko in napačno vtipkana beseda se bo nadomestila z izbrano. <sect1>Osebni besednjak proti besednjaku za preverjano datoteko <p> Tipka <bf>i</bf> vam omogoča vnos besede v vaš osebni besednjak, <bf>A</bf> pa vam doda besedo v besednjak za preverjano datoteko. <p> Besednjak za preverjano datoteko je zaporedje besed, dodano na konec datoteke v obliki komentarjev. Ispell jih znova prebere vsakič, ko ga poženemo za preverjanje te datoteke. Tako lahko sprejmete nekaj besed, ki so sprejemljive samo v tej datoteki, v drugih pa morebiti ne. <p> Kar zadeva mene, mislim, da je bolje, da je osebni besednjak rezerviran za besede, ki jih ni v glavnem besednjaku, vendar pripadajo jeziku (npr. besede z vezaji), in pa še za besede, kot so lastna imena idr. (npr. <it>Linux</it>), če niso podobne resničnim besedam iz glavnega besednjaka. Dodajanje preveč besed (npr. imen) v osebni besednjak je lahko nevarno, saj so lahko videti kot povsem običajna beseda v nekem jeziku. <sect1>Preverjanje črkovanja med tipkanjem <p> Ispell zna preverjati črkovanje v vaši datoteki kar med tipkanjem. Da bo to delovalo, morate uporabiti način <bf>ispell-minor-mode</bf>. Poženete ali ustavite ga, če vtipkate <tt>Meta-x ispell-minor-mode</tt>. Ispell bo <em>zapiskal</em> vsakič, ko vtipkate besedo, ki je ne prepozna. <p> Če vas ti <em>piski</em> motijo (ali če vaš sostanovalec že spi), lahko te moteče <em>piske</em> nadomestite z bliskanjem na zaslonu, kar dosežete z ukazom <tt>Meta-x set-variable RET visible-bell RET t RET</tt>. V datoteko <tt>.emacs</tt> lahko dodaste naslednjo vrstico in za vedno utišate Emacs: <verb> (setq visible-bell t) </verb> <sect>Umazane zvijače <sect1>Avtomatsko dodajanje zaglavja... <p> Emacs vam omogoča nastaviti, da se nekatere akcije <em>sprožijo</em> ob določenih dogodkih (npr. odpiranje datoteke, shranjevanje, zagon novega načina itd.). <p> Knjižnica <bf>autoinsert</bf> uporablja naslednjo lastnost: ko v Emacsu odprete novo datoteko, vanjo ta knjižnica doda <em>standardno</em> (glede na vrsto datoteke) zaglavje. <p> V našem primeru bi lahko to <em>standardno</em> zaglavje določilo vrsto dokumenta (LinuxDoc), naslov, avtorja in datum. <p> Tu bom opisal dva načina za dodajanje takega zaglavja. Vrinete lahko datoteko s predlogo, v kateri so vse naštete informacije, lahko pa poženete rutino v <bf>elispu</bf>. <sect2>z vrivanjem datoteke <p> Najprej morate povedati Emacsu, naj ob odpiranju datoteke požene <tt>auto-insert</tt>, potem naj prebere knjižnico <bf>autoinsert</bf>, ki določi seznam <tt>auto-insert-alist</tt>, tega pa moramo popraviti. Ta seznam določa zaglavje, ki se bo vrinilo v odvisnosti od vrste datoteke. Privzeto mora biti datoteka za vrivanje v imeniku <tt>~/insert/</tt>, vendar je mogoče popraviti vrednost spremenljivke <tt>auto-insert-directory</tt>, če želite imeti datoteko kje drugje. <p> V datoteko <tt>.emacs</tt> dodajte naslednje vrstice, da se bo datoteka <tt>~/emacs/sgml-insert.sgml</tt> vrinila vsakič, ko odprete novo datoteko SGML: <verb> (add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (setq auto-insert-directory "~/emacs/") (setq auto-insert-alist (append '((sgml-mode . "sgml-insert.sgml")) auto-insert-alist)) </verb> Zatem si lahko v datoteko <tt>~/emacs/sgml-insert.sgml</tt> napišete ustrezno zaglavje, znova poženete Emacs in odprete neko datoteko <tt>foobar.sgml</tt>. Emacs bi vam moral reči, da potrdite avtomatsko dodajanje zaglavja, in če odgovorite z 'yes', ga doda. <sect2>s funkcijo v elispu <p> To deluje podobno kakor prej, le da morate namesto nastavljanja seznama <tt>auto-insert-alist</tt> nastaviti funkcijo, ki naj se izvede. Prikazali bomo ta postopek, pri čemer bomo predpostavili, da želite napisati to funkcijo v datoteko <tt>~/emacs/sgml-header.el</tt>. (Nobene potrebe ni, da datoteko <tt>.emacs</tt> nasmetite s takimi funkcijami, ker se lahko zgodi, da bo predolga): <verb> (add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (add-to-list 'load-path "~/emacs") (load-library "sgml-header") (setq auto-insert-alist (append '(((sgml-mode . "SGML Mode") . insert-sgml-header)) auto-insert-alist)) </verb> V <ref id="insert-sgml-header" name="dodatku"> boste našli zgled funkcije <tt>insert-sgml-header</tt>. <appendix> <sect>Funkcija <tt>insert-sgml-header</tt> <label id="insert-sgml-header"> <p> Ta funkcija uporabniku omogoči dodajanje zaglavja za dokument dokumentacijskega projekta za Linux (Linux documentation Project) v datoteko. Izvede se lahko samodejno, ko nekdo odpre novo datoteko, ali pa izrecno na uporabnikovo željo. <p> Ta funkcija v <em>mini-bufferju</em> (spodnja vrstica v Emacsu) vpraša uporabnika za nekaj podatkov, izmed katerih so nekateri obvezni, nekateri pa ne. Najprej se prikaže vprašanje o naslovu dokumenta. Če ne podaste ničesar, se funkcija takoj konča, ne da bi se dodalo kakšno zaglavje. Sledijo vprašanja o datumu, avtorju, njegovem elektronskem naslovu in domači strani (zadnja dva podatka sta neobvezna). Sledi zahteva po imenu prevajalca. Če ga ni, samo pritisnite <em>Enter</em> in ne bo več nobenih nadaljnjih vprašanj o morebitnem prevajalcu. Če pa prevajalec je, boste vprašani še po njegovem elektronskem naslovu in domači strani (oboje je prav tako neobvezno). Funkcija nato zapiše zahteve na mesto, kjer urejate pravkar odprto novo datoteko (buffer v terminologiji Emacsa), seveda se dodajo vsi malo prej vtipkani podatki in pa še vse oznake za označevanje povzetka (angl. abstract) in prvega poglavja. Končno se kazalec postavi na mesto, kjer je treba napisati povzetek. <verb> (defun insert-sgml-header () "Doda zaglavje v dokument LinuxDoc" (interactive) (let (title author email home translator email-translator home-translator date starting-point) (setq title (read-from-minibuffer "Naslov: ")) (if (> (length title) 0) (progn (setq date (read-from-minibuffer "Datum: ") author (read-from-minibuffer "Avtor: ") email (read-from-minibuffer "Avtorjev elektronski naslov: ") home (read-from-minibuffer "Avtorjeva domaca stran: http://") translator (read-from-minibuffer "Prevajalec: ")) (insert "<!doctype linuxdoc system>\n<article>\n<title>") (insert title) (insert "&etago;title>\n<author>\nAuthor: ") (insert author) (insert "&nl;\n") (if (> (length email) 0) (progn (insert "<htmlurl url=\"mailto:") (insert email) (insert "\" name=\"") (insert email) (insert "\">&nl;\n"))) (if (> (length home) 0) (progn (insert "<htmlurl url=\"http://") (insert home) (insert "\" name=\"") (insert home) (insert "\">\n&nl;"))) (if (> (length translator) 0) (progn (setq email-translator (read-from-minibuffer "Prevajalcev el. naslov: ") home-translator (read-from-minibuffer "Prevajalceva domaca stran: http://")) (insert "Translator : ") (insert translator) (insert "&nl;\n") (if (> (length email-translator) 0) (progn (insert "<htmlurl url=\"mailto:") (insert email-translator) (insert "\" name=\"") (insert email-translator) (insert "\">&nl;\n"))) (if (> (length home-translator) 0) (progn (insert "<htmlurl url=\"http://") (insert home-translator) (insert "\" name=\"") (insert home-translator) (insert "\">&nl;\n"))))) (insert "&etago;author>\n<date>\n") (insert date) (insert "\n&etago;date>\n\n<abstract>\n") (setq point-beginning (point)) (insert "\n&etago;abstract>\n<toc>\n\n<sect>\n<p>\n\n\n&etago;sect>\n\n&etago;article>\n") (goto-char point-beginning) )))) </verb> </article> <!-- Local IspellDict: english --> <!-- Local IspellPersDict: ~/emacs/.ispell-english --> <!-- Local IspellDict: english --> <!-- Local IspellPersDict: ~/emacs/.ispell-english --> <!-- LocalWords: bastien HOWTOs rushy HTML Dieresis phant eacute sgml caf --> <!-- LocalWords: tof Christophe autoinsert elisp Blondeel spc XEmacs -->