<!doctype linuxdoc system>
 <linuxdoc>
 <article>
 <titlepag>
 <title>LinuxDoc+Emacs+Ispell-HOWTO</title>
 <author><name>
 Auteur: Philippe MARTIN
 (<htmlurl url="mailto:feloy@wanadoo.fr" name="feloy@wanadoo.fr">) &nl;
 Vertaler: S&eacute;bastien Blondeel
 (<htmlurl url="mailto:Sebastien.Blondeel@lifl.fr"
name="Sebastien.Blondeel@lifl.fr">)
 Vertaler (nl): Ellen Bokhorst
 (<htmlurl url="mailto:bokkie@nl.linux.org"
name="bokkie@nl.linux.org">)
 </name></author>
<date>v0.4, 27 Februari 1998</date>
 
<abstract> 
Dit document is bedoeld voor schrijvers en vertalers van Linux HOWTO's of
enig ander document voor het Linux Documentatie Project. Het geeft 
aanwijzingen voor het gebruiken van hulpmiddelen waaronder Emacs en Ispell.
</abstract>
</titlepag>

<toc>

<sect><heading>Inleiding</heading>
<sect1><heading>Copyright</heading>
<p>
Copyright Philippe Martin 1998&nl;
Je mag dit document herdistribueren en/of wijzigen zolang als je
voldoet aan de voorwaarden van de GNU General Public Licence, versie 2 of
later.
</p>
</sect1>

<sect1><heading>Verdiensten</heading>
<p>
Speciale dank gaat uit naar S&eacute;bastien Blondeel, een akelige vent
die me nogal veel vroeg over het instellen van Emacs. 
Zijn slimme vragen lieten me het beter
begrijpen en de kennis via dit document aan je door te geven.
</p>
</sect1>
 
<sect1><heading>Commentaar</heading>
<p>
Aarzel niet me te vertellen waarvan je denkt dat het kan helpen dit
document te verbeteren. Ik zal je kritiek door en door bestuderen.&nl;
Aarzel ook niet om me vragen te stellen die te maken hebben met de
onderwerpen die hier worden besproken.
Ik zal ze met plezier beantwoorden, aangezien ze me kunnen helpen dit
document verder te verbeteren.
<footnote>
Opmerking van de vertaler: als de vertaling niet deugt, dan gaat dat naar mij!
</footnote>
</p>
</sect1>

<sect1><heading>Versies</heading>
<p>
Dit document gaat uit van de volgende versies:
<itemize>
<item>Sgml-tools versie 0.99,</item>
<item>Emacs versie 19.34,</item>
<item>Ispell versie 3.1,</item>
<item>Alle Emacs libraries waarnaar in dit document wordt verwezen,
worden met de bovengenoemde versie van Emacs gedistribueerd, 
afgezien van <tt/iso-sgml/, dat met
XEmacs wordt gedistribueerd, en <tt/psgml/ is een stand-alone library.
</item></itemize>
</p>
</sect1>
</sect>

<sect><heading>Introductie</heading>
<sect1><heading>SGML</heading>
<p>
<it>Standard Generalised Mark-up Language</it>, of 
<bf>SGML</bf>, is een taal voor het defini&eacute;ren van documenttypen.
</p>
<p>
Men kan het documenttype bijvoorbeeld defini&euml;ren als een <it>recept</it>,
met een eerste deel dat de ingredi&euml;nten presenteert,
een tweede deel dat de accesoires introduceert,
een derde deel waarin stap-voor-stap instructies worden
gegeven voor het bakken van de cake, en een aardig laatste plaatje
om de uitkomst van dit alles te tonen.
</p>
<p>     
Dit wordt een <it>Document Type Definition</it> genoemd. 
Het definieert niet hoe het uiteindelijke product er uit zal zien, het
definieert slechts wat er in zou kunnen staan.
</p>
<p>     
Om nogmaals hetzelfde voorbeeld aan te halen, ik ben er zeker van dat
bij het lezen van mijn idee van een recept, 
je jouw favoriete bereidingen herkent. Niettemin zien ze
er in feite anders uit: van de mijne is er een plaatje in de bovenste
linkerhoek van de badkamerkast, en de lijst met ingredi&euml;nten bevindt
zich in de achtertuin, tussen het zwembad en de barbecue. En de jouwe?
</p>
<p>     
Met dank aan deze standaarddefinitie; men kan een document schrijven zonder
acht te slaan op hoe het er uiteindelijk richting de gebruiker uit komt
te zien.
</p>
</sect1>
 
<sect1><heading>De <tt>LinuxDoc</tt> Type Definitie</heading>
<p>
Dit type wordt gebruikt, zoals je misschien al hebt geraden, om
documenten gerelateerd aan Linux, te schrijven.
</p>
<p>
Dergelijke documenten worden in het algemeen als volgt opgebouwd: 
ze beginnen met een titel gevolgd door de naam van de auteur, en het 
versienummer en de -datum.
Vervolgens komt de samenvatting (zodat je er niet doorheen hoeft te bladeren,
voordat je je achteraf realiseert dat het niet hetgeen is waarnaar je zocht), 
en dan de inhoud die de structuur toont, zodat degene die haast hebben, direct
naar dat deel kunnen gaan wat ze willen lezen.
</p>
<p>
Vervolgens komt er een lijst met hoofdstukken, secties en paragrafen. 
Hiertussen kan men stukken programma invoegen, het font wijzigen om
een woord of een zin te benadrukken, lijsten invoegen, naar een ander 
deel van het document verwijzen, enz.
</p>
<p>
Om een dergelijk document te schrijven, zul je gewoon op het juiste
moment de titel, de auteur, de datum en de versie van het document, de
hoofdstukken en paragrafen moeten schrijven en laten we zeggen, welke
elementen er in een lijst staan als deze moeten worden ingevoegd, enz.
</p>
</sect1>


<sect1><heading><tt>SGML-Tools</tt></heading>
<p>
<bf>SGML-Tools</bf> zal de specificatie van een document in het
uiteindelijke resultaat omzetten in de vorm waaraan je de voorkeur geeft.
Als je wilt dat het een onderdeel van je persoonlijke bibliotheek vormt, 
zul je voor <it>PostScript</it> kiezen. 
Als je het wilt delen met de rest van de wereld via het Web, zal het
<it>HTML</it> zijn. Als je er niets aan kunt doen en het onder Windows
moet lezen, kun je het omzetten in <it>RTF</it> zodat je het in iedere 
tekstverwerker in kunt lezen.
Of misschien wil je alle drie de formaten gebruiken om aan je wisselende
stemmingen tegemoet te komen.

SGML-Tools zijn beschikbaar via anonieme FTP op <htmlurl
url="ftp://ftp.lip6.fr/pub/sgml-tools/" name
="ftp://ftp.lip6.fr/pub/sgml-tools/">
</p>
</sect1>
</sect>


<sect><heading>Je eerste document</heading>
<sect1><heading>Vanuit een tekstdocument</heading>
<p>
Als je een tekstdocument in SGML wilt omzetten om het over te zetten naar
andere formaten, is dit de manier waarop je 't doet:

<enum>
<item>
Voeg de volgende regels aan het begin toe:
 
<verb>
	<!doctype linuxdoc system>
	<article>
	<title>De titel staat hier&etago;title>
	<author>
	naam van de auteur, e-mail van de auteur, enz.
	&etago;author>
	<date>
	versie en datum 
	<&etago;date>
</verb>
</item> 
<item>
Als je aan het begin van het document de inhoud ervan in het
kort beschrijft, omsluit die paragraaf dan met de
<tt>&lt;abstract&gt;</tt> en <tt>&etago;abstract&gt;</tt> tags.
</item> 
<item>
 Voeg dan de <tt>&lt;toc&gt;</tt> tag in, wat staat voor 
 <em>Inhoudsopgave</em>. 
</item>
<item>
Aan het begin van ieder nieuw hoofdstuk, vervang je de regel waarin het
nummer en de titel van het hoofdstuk staan door:
	
	<verb>
	&lt;sect&gt;&lt;heading>De Titel Van Het Hoofdstuk&lt;/heading&gt;
	</verb>
en voeg de <tt>&etago;sect&gt;</tt> tag aan het einde van het
hoofdstuk toe.&nl;
<bf>Opmerking:</bf> Je hoeft het hoofdstuknummer niet aan te geven,
dit gebeurt automatisch.
</item>

<item>
Ga op dezelfde wijze door met paragrafen. Je zult de nummers
moeten verwijderen en de titels laten beginnen met de <tt>&lt;sect1&gt;</tt>
tag en laten be&euml;indigen met de <tt>&etago;sect1&gt;</tt> tag.
</item>

<item>
Je kunt op vergelijkbare wijze 4 niveuas in de secties nesten,
door gebruik te maken van <tt>&lt;sectn&gt;</tt> en 
<tt>&etago;sectn&gt;</tt> waar de
<tt>n=</tt> staat voor 2, 3, of 4.
</item>

<item>
Aan het begin van iedere paragraaf voeg je de <tt>&lt;p&gt;</tt> tag in.
</item>

<item>
Als je een aantal delen wilt benadrukken, omsluit ze dan met de
<tt>&lt;it&gt;</tt> en <tt>&etago;it&gt;</tt>
 (<it>cursief</it>), <tt>&lt;bf&gt;</tt> en <tt>&etago;bf&gt;</tt>
 (<bf>vet</bf>), of <tt>&lt;tt&gt;</tt> en <tt>&etago;tt&gt;</tt>
 (<tt>typewriter stijl</tt>).
</item>
 <item>
 Om een op de volgende gelijkende lijst in te voegen:

 <verb>
   Dit is een lijst met vier regels:

 - hier komt de eerste regel
 - vervolgens komt de tweede regel
 - nog een andere
 - dat is het.
 </verb>
 
 je moet dit vervangen door:
 
 <verb>
 Dit is een lijst met vier regels:
 &lt;itemize>
 &lt;item>hier komt de eerste regel&lt;/item>
 &lt;item>vervolgens komt de tweede regel&lt;/item>
 &lt;item>nog een andere&lt;/item>
 &lt;item>dat is het.&lt;/item>
 &etago;itemize>
 </verb>
</item>

<item>
Als een geheel blok uit een gedeelte van een programma bestaat, of iets anders
dat in 't oog moet springen: 

 <verb>
	10 REM Oh mijn God wat is dit?
	20 REM Ik dacht dat dit al lang niet meer bestond!
	30 PRINT "Ik ben terug bij";
	40 PRINT "red de wereld."
	50 INPUT "Van wie denk je dat 't is? ",M$
	60 IF M$="Bill" THEN PRINT "Gij bent verstandig.":GOTO PARADISE
	70 ELSE PRINT "Je snapt er niks van...":GOTO RICHMOND
	&etago;verb>
 </verb>
</item>

<item>
Tot dusverre zijn je SGML-formatterings vaardigheden al tamelijk goed. Als je
je document bij wilt schaven, zou je de gebruikersgids 
<bf>SGML-Tools</bf> eens kunnen bekijken, waarin meer details staan over het
<bf>LinuxDoc</bf> documenttype.
 </item>
 </enum>
 </p>
 </sect1>
</sect>

<sect><heading>Configureren van Emacs</heading>
<sect1><heading>Geaccentueerde Tekens</heading>
<p>
Als je documenten in het Frans of elke andere West-Europese taal wilt
schrijven, zul je 8-bit tekens nodig hebben.
Je kunt Emacs als volgt instellen dat het dergelijke tekens accepteert.
</p>

<sect2><heading>Het tonen van 8-bit tekens</heading>

<p>
Om in Emacs 8-bits tekens te kunnen tonen, zul je de volgende regels in
het bestand <tt>.emacs</tt> nodig hebben:
<verb>
(standard-display-european 1)
(load-library "iso-syntax")
</verb>

Als je Emacs op een terminal gebruikt die geen ondersteuning voor 8-bit geeft,
kun je de <tt>iso-ascii</tt> library (<tt>(load-library "iso-ascii")</tt>) 
gebruiken, waarmee Emacs de opdracht krijgt om dergelijke tekens zo goed 
mogelijk te benaderen.
</p>
</sect2>

<sect2><heading>Het typen van 8-bit tekens</heading>
<p>
Als je toetsenbord je de mogelijkheid geeft om geaccentueerde tekens
in te voeren, geen probleem. Als dit niet zo is zijn hier een aantal remedies:
</p>

<sect3><heading>De iso-acc-library</heading>
<p>
De Emacs <tt>iso-acc</tt> library geeft je de mogelijkheid om
8-bits tekens vanaf een 7-bit toetsenbord in te tikken.
</p>
<p>
Om het te kunnen gebruiken, voeg je de volgende regel toe aan het bestand 
<tt>.emacs</tt>:
<verb>
(load-library "iso-acc")
</verb>
</p>

<p>
Vervolgens, als je Emacs draait en het bestand opent dat je wilt
wijzigen, tik je in:
<tt>Meta-x iso-accents-mode</tt>.
</p>

<p>
Je kunt dan de <bf>&eacute;</bf> van het Franse woord 
<em>caf&eacute;</em> invoegen door <bf>'</bf> te typen en 
vervolgens <tt>e</tt>. Meer in het algemeen, je
zult een geaccentueerd teken intikken door als eerste het accent in te tikken
en vervolgens de letter die moet worden geaccentueerd
(kleine- of hoofdletter). Je kunt de volgende accenten gebruiken:

<list>
<item><tt>'</tt>~: Accent Aigu</item>
<item><tt>`</tt>~: Accent Grave</item>
<item><tt>^</tt>~: Accent Circonflexe</item>
<item><tt>"</tt>~: Dubbel aanhalingsteken</item>
<item><tt>&tilde;</tt>~: Tilde, cedille, en andere speciale gevallen
(cf iso-acc.el).</item>
<item><tt>/</tt>~: Om tekens te scheiden, enz.</item>
</list>      

Als je &eacute;&eacute;n van deze tekens nodig hebt en niet een geaccentueerde
letter, typ je er een spatie achter.
Om bijvoorbeeld
<it>l'&eacute;l&eacute;phant</it> te typen, typ je 
<tt>l ' <cparam/spc/ ' e l ' e ...</tt>
</p>
<p>
Alle mogelijke combinaties zijn in het bestand <tt>iso-acc.el</tt> te vinden.
</p>
</sect3>

<sect3><heading>De Meta-toets</heading>
<p>
Een aantal terminals staan je toe om 8-bits tekens in te tikken met de
&lt;Meta&gt; (of &lt;Alt&gt;) toets. Als je bijvoorbeeld
<bf>&lt;Meta&gt;-i</bf> indrukt, zul je het <bf>&eacute;</bf>-teken krijgen.
</p>
<p>
Maar Emacs heeft de &lt;Meta&gt;-toets voor andere doeleinden gereserveerd, 
en ik ken geen library die je het laat gebruiken voor geaccentueerde tekens.
</p>
<p>
Dit is een oplossing:
<tscreen>
<verb>
(global-set-key "\ei" '(lambda () (interactive) (insert ?\351)))
     _                                      ___
</verb>
</tscreen>
Als je een dergelijk regel in het bestand
<tt>.emacs</tt> invoegt, kun je een
<bf>&eacute;</bf> intikken door gebruik te maken van de 
<bf>&lt;Meta&gt;-i</bf> toetsaanslag. 
Je kunt op die manier de combinaties, die je nodig hebt, herdefini&euml;ren
als je de <bf>i</bf> door de juiste toets en
<bf>351</bf> door de juiste code (de code uit de
ISO-8859-1 tekenset) vervangt.
</p>
<p>
<bf>Waarschuwing!</bf> Het kan zijn dat een aantal lokale modes
dergelijke toetscombinaties herdefini&euml;ren.
</p>
</sect3>
</sect2>


<sect2><heading>Het tonen van 8-bits SGML-tekens</heading>
<p>
Onder SGML kun je geaccentueerde tekens met macros intikken. 
De <bf/&eacute;/ toets bijvoorbeeld is <bf/&amp;eacute;/. 
In het algemeen kunnen de applicaties die SGML in moeten kunnen lezen, 
8-bit tekens inlezen en is het dus niet nodig om
deze macro's te gebruiken.
Maar een aantal ervan kunnen dit mogelijk niet. Aangezien er een manier
is om dit probleem op te lossen, zou het zonde zijn om het hierdoor vast
te laten lopen.
</p>
<p>
De <tt>iso-sgml</tt> library laat je zoals altijd geaccentueerde tekens 
onder Emacs typen, maar bij het opslaan van je bestand naar disk, zal
het deze 8-bits tekens omzetten in de SGML-equivalente.
</p>
<p>
Dankzij deze library is het daarom makkelijk om je document onder 
Emacs in te typen en het opnieuw in te lezen, zodat je er zeker van kunt
zijn dat een niet-8-bit-clean-applicatie je document zal accepteren.
</p>
<p>
Om deze bibliotheek te kunnen gebruiken, hoef je slechts de volgende regels
aan het bestand <tt>.emacs</tt> toe te voegen:
<tscreen>
<verb>
(setq sgml-mode-hook
'(lambda () "Standaards voor SGML mode."
 (load-library "iso-sgml")))
</verb>
</tscreen>
</p>
</sect2>
</sect1>

<sect1><heading>SGML mode</heading>
<p>
Bij het laden van een bestand met de <bf>.sgml</bf> extensie,
schakelt Emacs automatisch over op de <bf>sgml mode</bf>. Als dit niet gebeurt,
kun je dit handmatig doen door
<tt>Meta-x sgml-mode</tt> in te tikken, of 
automatisch door de volgende regels aan het <tt>.emacs</tt> bestand toe te
voegen:
 
 <verb>
(setq auto-mode-alist
(append '(("\.sgml$"  . sgml-mode))
auto-mode-alist))
 </verb>
 
Deze mode laat je kiezen uit hoe je bijvoorbeeld 8-bit tekens in wilt voegen.
Met de <tt>Meta-x sgml-name-8bit-mode</tt> (of het menu-item
<it>SGML/Toggle 8-bit insertion</it>), je kunt ervoor kiezen om de 9-bit
tekens in te tikken, of in SGML vorm, b.v. in de vorm <bf>&amp;...;</bf>.
 
Het laat je met <tt>Meta-x sgml-tags-invisible</tt> 
(of het menu-item <it>SGML/Toggle Tag
Visibility</it>) ook de SGML-tags verbergen of tonen.
</p>
</sect1>

<sect1><heading>PSGML mode</heading>
<p>
De PSGML mode kan veel bijdragen aan het wijzigen van SGML-documenten
met Emacs.
</p>
<p>
 De <htmlurl name="psgml-linuxdoc"
url="http://www.linux-france.com/article/psgml-linuxdoc">
 documentatie geeft een uitleg over hoe je deze mode met 
<it>LinuxDoc</it> kunt installeren en gebruiken. 
</p>
</sect1>


 <sect1><heading>Diverse</heading>
 <sect2><heading>auto-fill mode</heading>
<p>
Als je in de normale mode een paragraaf typt en aan het einde van de regel
komt, moet je de &lt;Return&gt;-toets gebruiken om naar de volgende regel
te gaan, anders komt de gehele paragraaf op &eacute;&eacute;n regel.
Als je de &lt;Return&gt; gebruikt om naar de volgende regel te gaan,
krijg je een paragraaf met ongelijke rechtermarges.
</p>
<p>
Als je een aantal regels voorbij een redelijke breedte laat gaan, kun
je ze met een aantal editors niet zien.
</p>
<p>
De <bf>auto-fill</bf> mode zorgt dat deze saaie taak automatisch wordt
gedaan: als je verder gaat dan een bepaalde kolom
(standaard de 70e), ga je automatisch naar de volgende regel.
</p>
<p>
Je kunt deze mode als volgt gebruiken en de breedte-instelling van je
regels op 80 instellen:

<tscreen>
<verb>
 (setq sgml-mode-hook
 '(lambda () "Standaardwaarden voor SGML mode."
 (auto-fill-mode)	
 (setq fill-column 80)))
 </verb>
 </tscreen>
</p>
</sect2>
</sect1>
</sect>


 <sect><heading>Ispell</heading>
<p>
Als je vanuit Emacs je document op spelling wilt controleren, kun je daarvoor
het <bf>Ispell</bf>-package gebruiken in de Emacs mode.
</p> 
 
<sect1><heading>Kiezen van je standaard-woordenboeken</heading>
 <p>
Je kunt Emacs zo instelen, dat het bij het laden van een bestand, automatisch
woordenboeken selecteert (je kunt er verscheidene gebruiken).
De eerste, zeker de belangrijkste, is het hoofdwoordenboek,
dat met Ispell wordt gedistribueerd.
Je kunt tussen verscheidene talen kiezen. De tweede is
je persoonlijke woordenboek, waarin Ispell die woorden zal zetten die het
niet in het hoofdwoordenboek kon vinden maar waarvan je aangaf dat ze 
moesten worden `onthouden'.

Als je het Franse woordenboek dat met Ispell wordt meegeleverd, wilt gebruiken
als standaard-woordenboek en als je het bestand
<tt>.ispell-dico-perso</tt> in je home-directory als een persoonlijk
woordenboek wilt gebruiken, zet dan de volgende regels in het bestand 
<tt>.emacs</tt>:
 
<tscreen>
<verb>
 (setq sgml-mode-hook
 '(lambda () "Standaardwaarde voor SGML mode."
 (setq ispell-personal-dictionary "~/.ispell-dico-perso")
 (ispell-change-dictionary "francais")
 ))
 </verb>
 </tscreen>
</p>
</sect1>

<sect1><heading>Selecteren van speciale woordenboeken voor bepaalde bestanden
</heading>
<p>
Het kan een probleem zijn als je de spelling in je documenten niet altijd
in dezelfde taal wilt controleren.
Als je documenten vertaalt, is het zeer waarschijnlijk dat je vaak van
taal (en woordenboeken) verwisselt.
</p> 
<p>
Ik weet niet hoe je op enige Lisp-wijze, ofwel
automatisch of met een enkele muisklik, het hoofdwoordenboek en
persoonlijke woordenboeken geassocieerd met de taal die op dat moment
wordt gebruikt, kunt selecteren.
(Als je dit wel weet, laat me dit dan alsjeblieft weten!)
</p> 
<p>
Het is echter mogelijk om aan het einde van het bestand aan te geven, welke
woordenlijsten je voor het huidige bestand (en slechts deze) wilt gebruiken.
Het volstaat om ze als commentaar toe te voegen, zodat Ispell
ze bij het opstarten van de spellingscontrole kan inlezen:
 
 <verb>
<!-- Local IspellDict: english -->
<!-- Local IspellPersDict: ~/emacs/.ispell-english -->
 </verb>
 
Als je voorheen, in het bestand <tt/.emacs/, hebt opgegeven dat
je standaard-woordenboeken de Franse woordenboeken zijn, dan kun
je deze regels aan het einde van ieder bestand in 't
Engels toevoegen.
</p>
</sect1>

<sect1><heading>Controleren van de spelling in je document</heading>
<p>
Om je gehele document op spelling te controleren, gebruik je vanuit een
willekeurige plaats in het document het commando
<tt>Meta-x ispell-buffer</tt>. Je kunt ook slechts de spelling van een
deel van je document controleren:

<itemize>
 <item> Markeer het begin van het gebied met <tt>Ctrl-Spc</tt>
(mark-set-command),
 </item>
 <item> Ga naar het einde van het gebied dat moet worden gecontroleerd,
 </item>
 <item> typ <tt>Meta-x ispell-region</tt>.
</item>
</itemize>
 
Emacs start dan vervolgens Ispell op. Zodra het een onbekend woord tegenkomt,
wordt het woord getoond (meestal benadrukt) en wacht tot je 
&eacute;&eacute;n van de volgende toetsen indrukt:
 
<itemize>
<item><bf>spc </bf>accepteer alleen deze keer het woord,
</item>
<item><bf>i </bf>accepteer het woord en voegt het toe aan je
persoonlijke woordenboek,
</item>
<item><bf>a </bf>accepteer het woord voor deze sessie,
</item>
<item><bf>A </bf>accepteer het woord voor dit bestand, en voeg het toe
aan het lokale woordenboekbestand
</item>
<item><bf>r </bf>staat je toe om het woord handmatig te wijzigen
</item>
<item><bf>R </bf>staat je toe om het onjuist gespelde woord in alle 
voorkomende gevallen te wijzigen,
</item>
<item><bf>x </bf>stop het controleren en zet de cursor weer terug op
z'n plaats,
</item>
<item><bf>X </bf>stop het controleren en laat de cursor waar het is,
zodat je je bestand kunt corrigeren;je zul later weer verder kunnen gaan
met het controleren van de spelling als je
<tt>Meta-x ispell-continue</tt> intikt,
</item>
<item><bf>? </bf>geeft je online-help.
</item>
</itemize>
 
Als ispell &eacute;&eacute;n of meerdere woorden vindt, die het onbekende
woord benaderen, zal het ze in een klein venster tonen, waarbij ieder woord
wordt voorafgegaan door een cijfer. Typ gewoon dit cijfer in om het
onjuist gespelde woord te vervangen door het corresponderende woord.
</p>
</sect1>

<sect1><heading>Persoonlijk woordenboek versus lokaal woordenboekbestand
</heading>
<p>
Met de <bf>i</bf> toets kun je een woord invoegen in je persoonlijke
woordenboek, en met <bf>A</bf> kun je een woord invoegen in het
lokale woordenboekbestand.
</p> 
<p>
Het lokale woordenboekbestand bestaat uit een reeks woorden die aan het
einde van het bestand als commentaar worden ingevoegd, en iedere keer
dat Ispell met dit bestand wordt opgestart, opnieuw worden ingelezen.
Op deze manier, kun je een aantal woorden accepteren, die in dit bestand,
maar niet noodzakelijk in andere bestanden zijn toegestaan.
</p> 
<p>
Wat mezelf betreft, denk ik dat het beter is dat het persoonlijke
woordenboek gereserveerd moet zijn voor woorden die niet in het
hoofdwoordenboek staan maar die wel aan de taal toebehoren
(zoals afgebroken woorden), plus een aantal algemene woorden zoals
proper nouns of anderen (zoals <it>Linux</it>), alz ze niet te veel
op een echt woord uit het hoofdwoordenboek lijken;
het toevoegen van te veel woorden in het persoonlijke woordenboek
zoals voornamen, kan risico's met zich meebrengen omdat ze op een
woord uit de werkelijke taal kunnen lijken
(je kunt je voorstellen dat Ispell door het volgende wordt gefopt:
`<it>When the going gets tof, the tof get going</it><footnote>
<em>Tof</em> is een Franse afkorting voor de voornaam
<em>Christophe</em>!').</footnote>
</p>
</sect1>

<sect1><heading>Controleren van de spelling tijdens het typen</heading>
<p>
Ispell kan je bestand tijdens het typen op spelling controleren.
Hiervoor moet je de <bf>ispell-minor-mode</bf> gebruiken.
Om het te starten of te stoppen, tik je in:
<tt>Meta-x ispell-minor-mode</tt>. Ispell zal iedere keer dat je
een woord intikt en het niet kent een <em>beep</em> produceren.
</p> 
<p>
Als die <em>beeps</em> je irriteren (of je kamergenoot doet een dutje),
kun je die hinderlijke <em>beeps</em> vervangen door 
een flits op het scherm, met het commando
<tt>Meta-x set-variable RET visible-bell RET t RET</tt>. Je kunt
de volgende regel aan je bestand <tt>.emacs</tt> toevoegen om Emacs voorgoed
tot zwijgen brengen:
 
<verb>
 (setq visible-bell t)
</verb>
</p>
</sect1>
</sect>


<sect><heading>Truuks</heading>
 <sect1><heading>Automatisch invoegen van een header</heading>
<p>
Emacs staat je toe om een aantal acties aan een event te <em>koppelen</em>
(openen van een bestand, opslaan, opstarten van een nieuwe mode, enz).
</p>
<p>
De <bf>autoinsert</bf> library maakt van deze faciliteit gebruik: 
als je een nieuw bestand onder Emacs opent, voegt deze library,
overeenkomstig het type bestand, een <em>standaard</em> header in.
</p>
<p>
In ons geval, zou deze <em>standaard</em>
header evengoed het deel kunnen zijn dat het documenttype
(LinuxDoc), de titel, de auteur, en de datum declareert.
</p>
<p>
Ik zal hier twee manieren beschrijven om een dergelijke header in te voegen. 
Je zou een sjabloon-bestand met informatie in kunnen voegen, of je zou
een <bf>elisp</bf>-routine op kunnen starten.
</p>


<sect2><heading>door het invoegen van een bestand</heading>
<p>
Je moet Emacs eerst laten weten dat het de
<tt>auto-insert</tt> opstart als het een bestand opent, dan
de <bf>autoinsert</bf> library in te lezen, die de
<tt>auto-insert-alist</tt> lijst declareert die we moeten wijzigen. Deze
lijst definieert de header voor ieder bestandstype die moet worden ingevoegd. 
Standaard moet het bestand dat moet worden ingevoegd in de
<tt>~/insert/</tt> directory staan, maar het is mogelijk om de
<tt>auto-insert-directory</tt> variabele te herdefini&euml;ren,
als je het ergens anders wilt plaatsen.
</p>
<p>
Voeg de volgende regels toe aan je <tt>.emacs</tt> bestand om het
bestand <tt>~/emacs/sgml-insert.sgml</tt> iedere keer dat je een
nieuw SGML-bestand opent, in te voegen:

 <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>
 
Vervolgens kun je in het bestand <tt>~/emacs/sgml-insert.sgml</tt>
je aangepaste header wegschrijven en dan Emacs opnieuw opstarten en
&eacute;&eacute;n of ander bestand
<tt>foobar.sgml</tt> openen. Emacs zou je moeten vragen om de automatische
invoeging te bevestigen en als je `yes' antwoordt, je header invoegen.
</p>
</sect2>

<sect2><heading>door het opstarten van een routine</heading>
<p>
Dit werkt net als voorheen, maar in plaats van de
<tt>auto-insert-alist</tt> in te stellen op een bestand dat moet worden
ingevoegd, zul je het in moeten stellen
op een functie die moet worden uitgevoerd.
Zo kunt je verdergaan, ervan uitgaande dat je deze functie wilt wegschrijven
in een bestand met de naam <tt>~/emacs/sgml-header.el</tt>.
(het is niet nodig je <tt>.emacs</tt> bestand met een dergelijke functie
te belasten, aangezien het nogal lang kan worden):

 <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>

In de <ref id="insert-sgml-header" name="appendix"> zul je een
voorbeeld aantreffen van de <tt>insert-sgml-header</tt> functie.
</p>
</sect2>
</sect1>
</sect>
 
<appendix>
<sect><heading>Een insert-sgml-header functie <label id="insert-sgml-header">
</heading>
<p>
Deze functie zal voor de gebruiker een aangepaste header, voor een Linux
Documentatie Project document, in een nieuw bestand invoegen. Het kan
automatisch, wanneer er een nieuw bestand wordt geopend,
of expliciet door de gebruiker worden aangeroepen.
</p>
<p>
Deze functie vraagt de gebruiker, via de <em>mini-buffer</em>,
om wat informatie, een deel daarvan is nodig, een deel daarvan niet.

Als eerste komt de titel. Als er geen wordt opgegeven, keert de functie
onmiddellijk terug, en voegt niets in. Dan komt de datum, de auteur, 
zijn e-mail en home-page (deze laatste twee zijn optioneel).

Dan komt een verzoek voor de naam van de vertaler. Als er geen is,
typ je gewoon <em>Return</em>, en er zullen verder geen vragen meer 
worden gesteld over een hypothetische vertaler.
Als er wel &eacute;&eacute;n is, wordt
je om zijn e-mail en home-pagina gevraagd (ook optioneel).

Deze functie drukt je verzoek vervolgens naar de huidige buffer af,
natuurlijk inclusief alle informatie die je in het invoerformulier
hebt ingetikt, en ook inclusief de tags die dienen voor de samenvatting
en het eerste hoofdstuk. Als laatste zet het de cursor op die plaats waar
de samenvatting moet worden ingetypt.

<verb>
(defun insert-sgml-header ()
"Voegt de header voor een LinuxDoc document in"
(interactive)
(let (title author email home translator email-translator home-translator date 
	      starting-point)
(setq title (read-from-minibuffer "Titel: "))
(if (> (length title) 0)
	(progn 
	  (setq date (read-from-minibuffer "Datum: ")
		author (read-from-minibuffer "Auteur: ")
		email (read-from-minibuffer "Auteur e-mail: ")
		home (read-from-minibuffer "Auteur home-pagina: http://")
		translator (read-from-minibuffer "Vertaler: "))
	  (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 "Vertaler e-mail: ")
		      home-translator (read-from-minibuffer "Vertaler home-pagina: http://"))
		(insert "Vertaald door : ") 
		(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>
 </p>
 </sect>
 </article>
</linuxdoc>
<!-- 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
 -->
