LinuxDoc+Emacs+Ispell-HOWTO
F�rfattare: Philippe MARTIN (
[email protected])
Engelsk �vers�ttare: S�bastien Blondeel (Sebastien.Blon�
[email protected])
Svensk �vers�ttare: Linus �kerlund (
[email protected])
v0.4, 27 February 1998. Svensk �vers�ttning: 10 juni 1998.
Detta dokument �r riktat till f�rfattare och �vers�ttare av Linux-HOW�
TOn eller andra dokument f�r The Linux Documentation Project. Det ger
dem ledtr�dar om hur de ska anv�nda verktyg s�som Emacs och Ispell.
______________________________________________________________________
Inneh�llsf�rteckning
1. Inledning
1.1 Upphovsr�tt
1.2 Tillk�nnagivanden
1.3 Kommentarer
1.4 Versioner
1.5 Svenska �vers�ttarens anm�rkningar
2. Introduktion
2.1 SGML
2.2 (TT
2.3 (TT
3. Ditt f�rsta dokument
3.1 Fr�n ett textdokument
4. Konfigurera
4.1 Tecken med accent
4.1.1 Att visa 8-bitars tecken
4.1.2 Att skriva 8-bitars tecken
4.1.2.1 (TT
4.1.2.2 (CPARAM
4.1.3 Att visa 8-bitars SGML-tecken
4.2 SGML-l�ge
4.3 PSGML-l�ge
4.4 Diverse annat
4.4.1 auto-fill-l�ge
5. Ispell
5.1 Att v�lja standardordlistor
5.2 V�lja speciella ordlistor f�r vissa filer
5.3 Stavningskontrollera dina dokument
5.4 Personlig ordlista kontra filens lokala ordlista
5.5 Direkt stavningskontroll
6. Fula knep
6.1 Att automatiskt infoga ett dokumenthuvud
6.1.1 Genom att infoga en fil
6.1.2 Genom att k�ra en rutin
7. En
______________________________________________________________________
1.
Inledning
1.1.
Upphovsr�tt
Copyright Philippe Martin 1998
Du f�r vidaredistribuera och/eller modifiera detta dokument, s� l�nge
du r�ttar dig efter villkoren i The GNU General Public License,
version 2 eller senare.
1.2.
Tillk�nnagivanden
Ett speciellt tack g�r till S�bastien Blondeel, som �r en hemsk typ,
och fr�gade mig en massa om att konfigurera Emacs. Hans intelligenta
fr�gor har gjort att jag f�rst�r det b�ttre, och vidarebefordrar denna
kunskap till dig, genom detta dokument.
1.3.
Kommentarer
Tveka inte att tala om f�r mig, om det �r n�got du tycker skulle kunna
g�ra detta dokument b�ttre. Jag kommer t�nka �ver din kritik noggrant.
Tveka ej heller att st�lla fr�gor, relaterade till de �mnen som h�r
diskuteras, till mig. Jag besvarar dem mer �n g�rna, eftersom de
hj�lper mig att vidare f�rb�ttra detta dokument. (--
�vers�ttarens anm�rkning: Om engelskan �r ful, tja, det �r jag ocks�!
--)
1.4.
Versioner
Detta dokument behandlar f�ljande versioner:
� Sgml-tools version 0.99,
� Emacs version 19.34,
� Ispell version 3.1,
� Alla Emacs-bibliotek, vilka det refereras till i detta dokument,
distribueras med ovan n�mnda version av Emacs, f�rutom iso-sgml,
vilket distribueras med XEmacs, och psgml, vilket �r ett frist�ende
bibliotek.
1.5.
Svenska �vers�ttarens anm�rkningar
Detta dokument �r en �vers�ttning av den engelska versionen.
Originalet �r skrivet p� franska, ett spr�k jag inte beh�rskar. Jag
hoppas att jag lyckats bevara all information som finns med i
originaldokumentet. Som vanligt �r alla v�lkomna att komma med
anm�rkningar och kritik. �ndra g�rna i SGML-filen och skicka de
korrigerade versionerna till mig, p�
[email protected].
2.
Introduktion
2.1.
SGML
Standard Generalised Mark-up Language, eller SGML, �r ett spr�k f�r
att definiera dokument-typer.
Man kan t.ex. definiera dokument-typen recept, med en f�rsta del f�r
att presentera ingredienserna, en andra del f�r att presentera
hj�lpmedlen, en tredje del vilken ger stegvisa instruktioner om hur
t�rtan ska bakas och en trevlig, avslutande bild, f�r att visa
resultatet av allt detta.
Detta kallas en definition av en dokument-typ (Document type
Definition. �vers.anm.). Den definierar inte hur den slutliga
produkten kommer se ut, den definierar bara vad den kommer att
inneh�lla.
F�r att anv�nda samma exempel igen; jag �r s�ker p� att du, d� du
l�ser om min id� om ett recept, k�nner igen dina, eller din
favoritkocks. De ser trots allt olika ut: mina har en bild i det �vre
v�nstra h�rnet av badrumssk�pet, och listan �ver ingredienser finns p�
bakg�rden, mellan swimmingpoolen och grillen. Dina?
Tack vare standarddefinitionen, s� kan man skriva ett dokument utan
att ta h�nsyn till hur det slutligen kommer se ut, f�r l�saren.
2.2.
LinuxDoc s typ-definition
Denna typ anv�nds, som du kanske har kunnat gissa dig till, till att
skriva dokument vilka �r relaterade till Linux.
S�dana dokument �r typiskt uppbyggda som f�ljer: de b�rjar med en
titel, f�ljd av f�rfattarens namn, versions-numret och datumet. Sedan
kommer sammanfattningen (s� att du inte beh�ver bl�ddra igenom hela
alltet, innan du inser att det inte alls var vad du var ute efter),
sedan inneh�llsf�rteckningen, vilken visar strukturen, s� att de som
har br�ttom kan hoppa direkt till det avsnitt de vill l�sa.
Sedan f�ljer en lista �ver kapitel, avsnitt och stycken. Bland dessa
kan man infoga delar av program, �ndra typsnitt, f�r att framh�va ett
ord eller en mening, infoga listor, referera till andra delar av
dokumentet osv.
F�r att skriva ett s�dant dokument beh�ver du bara, vid r�tt tidpunkt,
specificera titeln, f�rfattaren, datumet och dokument-versionen,
kapitlen och avsnitten, n�r en lista ska infogas, vilka dess element
�r osv.
2.3.
SGML-Tools
SGML-Tools omvandlar ett dokuments specifikationer till det
slutgiltiga resultatet, i det format du �nskar. Om du vill ha det i
ditt personliga bibliotek, v�ljer du PostScript. Om du vill dela det
med v�rlden, genom webben, s� blir det HTML. Om du inte kan hj�lpa
det, och m�ste l�sa det under Windows, s� kan du omvandla det till
RTF, s� att det kan l�sas av vilken ordbehandlare som helst. Eller s�
kanske du anv�nder alla tre formaten, f�r att anpassa det till ditt
v�xlande hum�r.
SGML-Tools �r tillg�ngligt via anonym FTP fr�n
ftp://ftp.funet.fi/public/ftp/pub/linux/utils/text/
3.
Ditt f�rsta dokument
3.1.
Fr�n ett textdokument
Om du vill g�r om ett textdokument till SGML, f�r att omvandla det
till andra format, ska du g�ra p� f�ljande s�tt:
1. L�gg till de f�ljande raderna i b�rjan:
<!doctype linuxdoc system>
<article>
<title>H�r ska titeln vara</title>
<author>
f�rfattarens namn, e-post-adress osv.
</author>
<date>
version och datum
</date>
2. Om du kort beskriver dokumentets inneh�ll i b�rjan, innefatta
stycket i <abstract>- och </abstract>-taggarna.
3. Infoga sedan <toc>-taggen, vilket st�r f�r Table Of Contents
(inneh�llsf�rteckning. �vers.anm.).
4. Ers�tt, i b�rjan av varje kapitel, raden som anger nummer och titel
f�r kapitlet med:
<sect>Kapitlets titel
och l�gg till </sect>-taggen i slutet av kapitlet.
Observera : Du beh�ver inte ange kapitel-nummer, detta g�rs
automatiskt.
5. Forts�tt p� samma s�tt med avsnitten. Du m�ste ta bort numren och
"tagga" deras titlar med <sect1>, och avsluta dem med </sect1>.
6. Du kan �ven, p� ett liknande s�tt, ange s� m�nga som 4 n�stade
niv�er i avsnitten, genom att anv�nda <sectn>- och
</sectn>-taggarna, d�r n= 2, 3 eller 4.
7. L�gg, i b�rjan av varje stycke, in <p>-taggen.
8. Om du beh�ver framh�va vissa delar, "tagga" dem med <it> och </it>
(kursiverat), <bf> och </bf> (fetstil) eller <tt> och </tt>
(skrivmaskins-stil).
9. F�r att infoga en lista, som den f�ljande:
Detta �r en lista om fyra rader:
- h�r �r f�rsta raden
- sedan kommer andra raden
- �nnu en
- det var det.
s� m�ste du ers�tta den med:
Detta �r en lista om fyra rader:
<itemize>
<item>h�r �r f�rsta raden
<item>sedan kommer andra raden
<item>�nnu en
<item>det var det.
</itemize>
10.
N�r ett helt block �r en del av ett program, eller n�got annat som
m�ste sticka ut:
<verb>
10 REM Herre gud, vad �r det h�r?
20 REM Jag trodde det h�r hade f�rsvunnit f�r l�nge sedan!
30 PRINT "Jag �r tillbaks f�r att";
40 PRINT "r�dda v�rlden."
50 INPUT "Fr�n vem, menar du? ",M$
60 IF M$="Bill" THEN PRINT "Du �r vis.":GOTO PARADISET
70 ELSE PRINT "Du har inte hajat n�got...":GOTO RIKMOND
</verb>
11.
P� detta stadium �r dina kunskaper i SGML-formattering ganska
hyffsade. Om du vill f�rfina ditt dokument, s� kan du ta en titt p�
anv�ndar-manualen till SGML-Tools, vilken ger mer detaljer om
dokument-typen LinuxDoc.
4.
Konfigurera Emacs
4.1.
Tecken med accent
Om du vill skriva dokument p� franska, eller n�got annat
v�steuropeiskt spr�k, s� beh�ver du 8-bitars tecken. S� h�r st�ller du
in Emacs f�r att acceptera s�dana tecken.
4.1.1.
Att visa 8-bitars tecken
F�r att f� Emacs att visa 8-bitars tecken, s� m�ste du ha f�ljande
rader i din .emacs-fil:
(standard-display-european 1)
(load-library "iso-syntax")
Om du anv�nder Emacs p� en terminal, som har st�d f�r 8-bitars tecken,
s� kan du anv�nda iso-ascii-biblioteket ((load-library "iso-ascii")),
vilket s�ger �t Emacs att visa s�dana tecken, s� bra den kan.
4.1.2.
Att skriva 8-bitars tecken
Om ditt tangentbord l�ter dig skriva tecken med accenter, s� �r det
inget problem. Om inte, s� kommer h�r n�gra hj�lpmedel:
4.1.2.1.
iso-acc -biblioteket
Emacs iso-acc-bibliotek l�ter dig skriva 8-bitars tecken p� ett
7-bitars tangentbord.
F�r att anv�nda det, infoga f�ljande i din .emacs-fil:
(load-library "iso-acc")
N�r du sedan k�r Emacs och �ppnar en fil att editera, skriv Meta-x
iso-accents-mode.
Du kan skriva �-tecknet, i det svenska ordet kaf�, genom att skriva '
och sedan e. Mer generellt s� kommer du skriva ett tecken med accent
genom att f�rst skriva accenten, och sedan bokstaven som accenten ska
finnas till (stora eller sm� bokst�ver). De f�ljande �r accenter du
kan vilja anv�nda:
` : V�nster-lutad (grav) accent
^ : Cirkumflex
" : Punkter
~ : Tilde och andra specialfall (cf iso-acc.el).
/ : F�r att f� ett streck �ver ordet
Om du beh�ver n�got av dessa tecken, och inte en bokstav med accent,
tryck mellanslag efter tecknet. F�r att skriva t.ex. 'kaf�', skriv '
<mellanslag> k a f ' e
Du hittar alla m�jliga kombinationer i iso-acc.el-filen.
4.1.2.2.
<Meta>-tangenten
Vissa terminaler l�ter dig skriva 8-bitars tecken med <Meta>-tangenten
(eller <Alt>). Om du t.ex. trycker <Meta>-i, s� f�r du �-tecknet.
Men Emacs reserverar <Meta>-tangenten f�r andra �ndam�l, och jag
k�nner inte till n�got bibliotek som l�ter dig anv�nda det f�r tecken
med accent.
Detta �r en l�sning:
(global-set-key "\ei" '(lambda () (interactive) (insert ?\351)))
_ ___
En s�dan rad, om den infogas i din .emacs-fil, l�ter dig skriva �
genom att anv�nda <Meta>-i. Du kan omdefiniera de kombinationer du
beh�ver, genom att byta ut i mot den r�tta tangenten och 351 med den
r�tta koden (koden finner du i tecken-upps�ttningen ISO-8859-1).
Varning! Vissa lokala l�gen kan omdefiniera s�dana tangent-
kombinationer.
4.1.3.
Att visa 8-bitars SGML-tecken
Under SGML kan du skriva tecken med accent med makron. F�r att skriva
t.ex. �-tecknet, s� skriver du é. Rent generellt s� kan de
applikationer som beh�ver kunna l�sa SGML redan l�sa 8-bitars tecken,
s� dessa makron beh�vs inte. Men vissa kan inte det. Eftersom det
finns ett s�tt att l�sa problemet, s� vore det on�digt att inte
anv�nda makrona.
iso-sgml-biblioteket l�ter dig skriva tecken med accent under Emacs,
som alltid, men d� du sparar din fil p� disk, s� omvandlas dessa
8-bitars tecken till sina motsvarigheter i SGML.
P� grund av detta bibliotek �r det allts� l�tt att skriva och l�sa
dina dokument under Emacs, och du kan vara s�ker p� att applikationer
som inte klarar av 8-bitars tecken kommer att acceptera dina dokument.
F�r att anv�nda detta bibliotek beh�ver du bara l�gga till f�ljande
rader i din .emacs-fil:
(setq sgml-mode-hook
'(lambda () "Defaults for SGML mode."
(load-library "iso-sgml")))
4.2.
SGML-l�ge
D� du laddar en fil med .sgml-�ndelsen, s� g�r Emacs automatiskt in i
sgml-l�ge (sgml mode). Om det inte g�r det, s� kan du manuellt s�ga �t
det att g�ra det genom att skriva Meta-x sgml-mode, eller automatiskt,
genom att l�gga till f�ljande rader till din .emacs-fil:
(setq auto-mode-alist
(append '(("\.sgml$" . sgml-mode))
auto-mode-alist))
Detta l�ge l�ter dig t.ex. v�lja hur du ska infoga 8-bitars tecken.
Med Meta-x sgml-name-8bit-mode (eller meny-alternativet SGML/Toggle
8-bit insertion), kan du v�lja att skriva in 8-bitars tecken som de
�r, eller i SGML-form, allts� i formen &...;.
Det l�ter dig �ven d�lja eller visa SGML-taggarna, med Meta-x sgml-
tags-invisible (eller meny-alternativet SGML/Toggle Tag Visibility).
4.3.
PSGML-l�ge
PSGML-l�get (PSGML mode) �r v�ldigt hj�lpsamt, om du editerar SGML-
dokument med Emacs.
psgml-linuxdoc-dokumentationen f�rklarar hur du ska installera detta
l�ge och anv�nda det med LinuxDoc.
4.4.
Diverse annat
4.4.1.
auto-fill-l�ge
I det normala l�get m�ste du anv�nda <Return>, d� du kommer till
slutet av raden, f�r att komma till n�sta rad, annars kommer raden att
ta upp hela stycket. Om du anv�nder <Return> f�r att komma till n�sta
rad, s� f�r du ett stycke med oj�mna kanter.
Om du l�ter vissa rader g� bortom den rimliga l�ngden, s� kommer du
inte kunna se dem i vissa editorer.
auto-fill-l�get automatiserar detta jobbiga arbete: d� du g�r bortom
en viss kolumn (den 70nde, som standard), s� tas du automatiskt till
n�sta rad.
S� h�r sl�r du p� detta l�ge, och anger radl�ngden till 80 tecken:
(setq sgml-mode-hook
'(lambda () "Defaults for SGML mode."
(auto-fill-mode)
(setq fill-column 80)))
5.
Ispell
Om du vill stavningskontrollera dina dokument fr�n Emacs, s� kan du
anv�nda Ispell-paketet och dess Emacs-l�ge.
5.1.
Att v�lja standardordlistor
Du kan st�lla in Emacs s� att det, d� du laddar en fil, automatiskt
v�ljer vilka ordlistor det ska anv�nda (det kan anv�nda flera). Den
f�rsta, och s�kerligen den viktigaste, �r huvudordlistan, vilken
distribueras med Ispell. Du kan v�lja mellan flera olika spr�k. Den
andra �r din personliga ordlista, d�r Ispell infogar ord som det inte
kunde finna i huvudordlistan, men du sade �t det att komma ih�g.
En svensk (och �ven en dansk) ordlista kan h�mtas p�
http://www.sslug.dk/ispell.
Om du vill anv�nda den standardiserade franska ordlistan som kommer
med Ispell, och om du vill anv�nda filen .ispell-perso-ord, i din
hemkatalog, som din personliga ordlista, s� l�gg till f�ljande rader
till din .emacs-fil:
(setq sgml-mode-hook
'(lambda () "Defaults for SGML mode."
(setq ispell-personal-dictionary "~/.ispell-perso-ord")
(ispell-change-dictionary "francais")
))
5.2.
V�lja speciella ordlistor f�r vissa filer
Du kan f� problem om du inte stavningskontrollerar alla dokument i
samma spr�k hela tiden. Om du �vers�tter dokument, s� �r det ganska
troligt att du byter spr�k (och ordlistor) v�ldigt ofta.
Jag k�nner inte till n�got Lisp-s�tt att v�lja, antingen automatiskt
eller med ett enkelt mus-klick, huvudordlista eller personliga
ordlista, som ska associeras med spr�ket du f�r tillf�llet anv�nder.
(Om du k�nner till n�got om detta, tala om det f�r mig!)
Det �r dock m�jligt att ange, p� slutet av filen, vilka ordlistor du
vill anv�nda f�r den aktuella filen (och endast denna). Det r�cker att
l�gga till dem som kommentarer, s� att Ispell kan l�sa dem d� det k�r
stavningskontrollen (spell-check).
<!-- Local IspellDict: english -->
<!-- Local IspellPersDict: ~/emacs/.ispell-english -->
Om du redan, i din .emacs-fil, har angivit att dina standard-ordlistor
�r de franska, s� kan du l�gga till dessa rader i slutet av varje
engelsk fil.
5.3.
Stavningskontrollera dina dokument
F�r att stavningskontrollera ett helt dokument, anv�nd, varifr�n som
helst i dokumentet, Meta-x ispell-buffer-kommandot. Du kan �ven v�lja
att bara kontrollera en viss del av dokumentet:
� Markera b�rjan av avsnittet med Ctrl-Spc (mark-set-command),
� G� till slutet av avsnittet du vill kontrollera,
� Skriv Meta-x ispell-region.
Sedan k�r Emacs Ispell. D� det st�ter p� ett ok�nt ord visar det dig
det aktuella ordet (vanligtvis markerat) och ber dig v�lja mellan:
� mellanslag beh�ll ordet, endast denna g�ng,
� i beh�ll ordet, och infoga det i din personliga ordlista,
� a beh�ller ordet f�r denna session,
� A beh�ller ordet i denna fil, och infogar det i filens lokala
ordlista,
� r l�ter dig r�tta till ordet f�r hand,
� R l�ter dig r�tta till alla instanser av det felstavade ordet,
� x avbryter kontrollen och placerar mark�ren d�r den var fr�n
b�rjan,
� X avbryter kontrollen och l�mnar mark�ren d�r den �r, vilket l�ter
dig korrigera filen; du kan senare forts�tta kontrollen om du
skriver Meta-x ispell-continue,
� ? ger dig hj�lp.
Om ispell finner ett eller flera ord som liknar det ok�nda ordet,
s� visar det dem i ett litet f�nster, vart och ett med en siffra
framf�r sig. Tryck bara p� motsvarande siffertangent, f�r att
ers�tta det felstavade ordet med det korresponderande ordet.
5.4.
Personlig ordlista kontra filens lokala ordlista
i-tangenten l�ter dig infoga ett ord i din personliga ordlista, och A
l�ter dig infoga ett ord i en lokal ordlista f�r den aktuella filen.
Den lokala filens ordlista �r en sekvens av ord infogade i slutet av
filen, som kommentarer, vilka l�ses in a Ispell varje g�ng det ska
kontrollera filen. P� det s�ttet kan du beh�lla vissa ord, vilka �r
acceptabla i denna fil, �ven om de inte med n�dv�ndighet �r acceptabla
i andra filer.
Enligt min �sikt s� �r det b�ttre att reservera den personliga
ordlistan f�r ord som huvudordlistan inte k�nner till, men som tillh�r
spr�ket (som sammansatta ord), plus n�gra vanliga ord som substantiv
och andra ord (som Linux), om de inte �r alltf�r lika ett riktigt ord,
som finns i huvudordlistan; att l�gga till alltf�r m�nga ord i den
personliga ordlistan, s�som f�rnamn, kan vara farligt, eftersom de kan
likna ett ord som ing�r i spr�ket (man skulle kunna t�nka sig att
Ispell blir f�rvirrat av det f�ljande: `Det roligaste med Young Ones
var n�r Neil skulle koka linus-soppa.' (-- Om jag skulle lagt in Linus
i min personliga ordlista!--)
5.5.
Direkt stavningskontroll
Ispell kan utf�ra stavningskontroll p� filen medan du skriver. Till
detta m�ste du anv�nda ispell-minor-mode. F�r ett starta eller avsluta
det, skriv Meta-x ispell-minor-mode. Ispell piper varje g�ng du
skriver ett ord som det inte k�nner igen.
Om dessa pip irriterar dig (eller om din rumskamrat tar en tupplur),
s� kan du ers�tta de irriterande pipen med att sk�rmen blinkar till,
vilket du g�r med kommandot Meta-x set-variable RET visible-bell RET t
RET. F�r att f�r evigt tysta Emacs, kan du l�gga till f�ljande rad i
din .emacs-fil:
(setq visible-bell t)
6.
Fula knep
6.1.
Att automatiskt infoga ett dokumenthuvud
Emacs l�ter dig hook-a vissa funktioner till h�ndelser (�ppna en fil,
spara, k�ra ig�ng ett nytt l�ge osv).
autoinsert-biblioteket anv�nder denna funktion: n�r du �ppnar en ny
fil under Emacs, s� infogar detta bibliotek, i enlighet med filtypen,
ett standardiserat dokumenthuvud.
I v�rt fall skulle detta standardiserade huvud kunna vara den del som
deklarerar dokument-typen (LinuxDoc), titeln, f�rfattaren och datumet.
Jag ska beskriva tv� s�tt att infoga ett s�dant huvud. Du skulle kunna
infoga en f�rpreparerad fil, vilken inneh�ller denna information,
eller s� kan du k�ra en elisp-rutin.
6.1.1.
Genom att infoga en fil
F�rst m�ste du s�ga �t Emacs att k�ra auto-insert-l�get d� en fil
�ppnas, att sedan l�sa autoinsert-biblioteket, vilket deklarerar auto-
insert-alist-listan, vilken vi m�ste �ndra i. Denna lista anger
huvudet som ska infogas f�r varje filtyp. Som standard m�ste filen som
ska infogas finnas i ~/insert/-katalogen, men det �r m�jligt att �ndra
auto-insert-directory-variabeln, om du vill l�gga den n�gon
annanstans.
L�gg till f�ljande rader till din .emacs-fil, f�r att infoga filen
~/emacs/sgml-insert.sgml, varje g�ng du �ppnar en ny SGML-fil:
(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))
Sedan kan du skriva in ditt specialkomponerade huvud i filen
~/emacs/sgml-insert.sgml, starta om Emacs och �ppna t.ex. foobar.sgml-
filen. Emacs ska d� be dig bekr�fta att filen ska infogas automatiskt,
och om du svarar ja s� ska filen infogas.
6.1.2.
Genom att k�ra en rutin
Detta fungerar som f�rut, men ist�llet f�r att s�tta auto-insert-alist
till en fil att infoga, s� m�ste du s�tta den till en funktion att
k�ra. S� h�r ska du g�ra, om du vill skriva denna funktion i en fil
som heter ~/emacs/sgml-header.el (det finns ingen anledning att
betunga din .emacs-fil med en s�dan funktion, eftersom den kan bli
ganska l�ng):
(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))
I ``appendixet'' hittar du ett exempel p� en insert-sgml-header-
funktion.
G. En insert-sgml-header -funktion
Denna funktion l�ter anv�ndaren infoga ett specialkomponerat
dokumenthuvud i ett Linux Documentation Project-dokument. Den kan
anropas automatiskt n�r en fil �ppnas, eller explicit, av anv�ndaren.
Denna funktion fr�gar anv�ndaren, genom mini-bufferten, om en del
information, av vilken en del �r n�dv�ndig, och annat ej.
F�rst kommer titeln. Om ingen anges, s� avslutas funktionen
omedelbart, och infogar inget. Sedan kommer datumet, f�rfattaren, hans
e-postadress och hemsida (de tv� sista �r valfria).
Sedan kommer en fr�ga efter namnet p� �vers�ttaren. Om det inte finns
n�gon, tryck bara Return och inga fler fr�gor om en hypotetisk
�vers�ttare kommer st�llas. Om det finns en, s� tillfr�gas du om hans
e-postadress och hemsida (ocks� valfria).
Funktionen skriver sedan in detta i den aktuella buffern, inklusive
informationen du skrev in i en mall, och inklusive taggarna, som
anv�nds till sammanfattning och f�rsta kapitlet. Slutligen placeras
mark�ren d�r sammanfattningen ska skrivas.
(defun insert-sgml-header ()
"Infoga dokumenthuvudet f�r ett LinuxDoc-dokument"
(interactive)
(let (titel forfattare epost hem oversattare epost-oversattare hem-oversattare datum
starting-point)
(setq titel (read-from-minibuffer "Titel: "))
(if (> (length titel) 0)
(progn
(setq datum (read-from-minibuffer "Datum: ")
forfattare (read-from-minibuffer "F�rfattare: ")
epost (read-from-minibuffer "F�rfattarens e-post: ")
hem (read-from-minibuffer "F�rfattarens hemsida: http://")
oversattare (read-from-minibuffer "�vers�ttare: "))
(insert "<!doctype linuxdoc system>\n<article>\n<titel>")
(insert titel)
(insert "</titel>\n<forfattare>\nF�rfattare: ") (insert forfattare) (insert "<newline>\n")
(if (> (length epost) 0)
(progn
(insert "<htmlurl url=\"mailto:")
(insert epost) (insert "\" name=\"") (insert epost)
(insert "\"><newline>\n")))
(if (> (length hem) 0)
(progn
(insert "<htmlurl url=\"http://")
(insert hem) (insert "\" name=\"") (insert hem)
(insert "\">\n<newline>")))
(if (> (length oversattare) 0)
(progn
(setq epost-oversattare (read-from-minibuffer "�vers�ttarens e-post: ")
hem-oversattare (read-from-minibuffer "�vers�ttarens hemsida: http://"))
(insert "�vers�ttare : ")
(insert oversattare)
(insert "<newline>\n")
(if (> (length epost-oversattare) 0)
(progn
(insert "<htmlurl url=\"mailto:")
(insert epost-oversattare) (insert "\" name=\"")
(insert epost-oversattare)
(insert "\"><newline>\n")))
(if (> (length hem-oversattare) 0)
(progn
(insert "<htmlurl url=\"http://")
(insert hem-oversattare) (insert "\" name=\"")
(insert hem-oversattare)
(insert "\"><newline>\n")))))
(insert "</forfattare>\n<datum>\n")
(insert datum)
(insert "\n</datum>\n\n<abstract>\n")
(setq point-beginning (point))
(insert "\n</abstract>\n<toc>\n\n<sect>\n<p>\n\n\n</sect>\n\n</article>\n")
(goto-char point-beginning)
))))