
                          LinuxDoc+Emacs+Ispell-HOWTO

Auteur : Philippe MARTIN ( feloy@wanadoo.fr)

   v0.5, 28 Avril 1998
     _________________________________________________________________

   _Ce document s'adresse aux traducteurs et rdacteurs de HOWTO Linux ou
   de toute autre documentation du Projet de Documentation Linux. Il
   donne  ces derniers des trucs et astuces pour l'utilisation entre
   autre d'Emacs et d'Ispell. _
     _________________________________________________________________

Appendix

1. Prambule

1.1 Copyright

   Copyright Philippe Martin 1998
   Vous pouvez redistribuer et/ou modifier ce document selon les
   conditions de la GNU General Public Licence, version 2 ou ultrieure.

1.2 Remerciements

   Je remercie tout particulirement Sbastien Blondeel pour m'avoir pos
   tant de questions si pertinentes sur la configuration d'Emacs,
   questions qui m'ont permises de concrtiser mes connaissances sur le
   sujet et de vous en faire part.

1.3 Remarques

   N'hsitez pas  me faire parvenir toute remarque et/ou critique sur ce
   document, je les examinerai afin de faire voluer au mieux ce
   document.
   N'hsitez pas non plus  me poser des questions relatives au sujet
   trait dans cet HOWTO, j'y rpondrai avec un intrt tout particulier.

1.4 Versions

   Ce document traite des versions suivantes :
     * Sgml-tools version 0.99,
     * Emacs version 19.34,
     * Ispell version 3.1,
     * Toutes les bibliothques Emacs auxquelles je fais rfrence sont
       celles distribues avec la version d'Emacs prcite, sauf iso-sgml
       distribue avec XEmacs et psgml distribue seule.

2. Introduction

2.1 Le langage SGML

   Le langage _SGML_ (_Standard Generalized Markup Language_) est un
   langage qui permet de dfinir des types de documents.

   On peut par exemple dfinir grce  lui un type de document _recette
   de cuisine_, qui prcisera qu'il faudra y inclure une premire partie
   avec les diffrents ingrdients, puis une deuxime avec les
   accessoires, une troisime donnant la faon de faire votre gteau pas
    pas, et enfin une belle photo qui montre le rsultat final.

   Cette dfinition d'un type de document est appel _DTD_ (_Document
   Type Definition_). Elle ne permet pas de dfinir quelle sera l'allure
   du document final, mais seulement ce qu'il contiendra ou pourra
   contenir.

   Pour reprendre l'exemple prcdent, je suis sr qu'en lisant l'ide
   que je me fais d'une recette de cuisine, vous avez reconnu celles que
   vous ou votre cuistot attitr utilisez. Et pourtant, elles ont une
   allure compltement diffrente : les miennes ont une photo qui se
   trouve en haut  gauche du placard de la salle de bain, et la liste
   des ingrdients se trouve entre les bouteilles de lait et de gaz au
   fond du jardin. Et les vtres ?

   Grce  cette dfinition type, quelqu'un peut crire son document,
   sans tenir compte de la forme qu'il aura quand il arrivera devant les
   yeux du lecteur.

2.2 La dfinition du type LinuxDoc

   Ce type permet d'crire, vous l'aviez devin, des documents se
   reportant  Linux.

   Ces documents sont en gnral construits ainsi : ils commencent par un
   titre suivi de l'auteur, de la date de diffusion et de la version de
   ce document. Suit juste aprs un court paragraphe qui explique
   brivement ce que contient ce document (ce qui vite d'attendre de
   l'avoir fini pour se rendre compte que ce n'est pas du tout ce que
   l'on recherchait) puis une table des matires qui montre plus en
   dtail son contenu et permet aux plus presss d'aller voir directement
   ce qu'ils cherchent.

   Et vient ensuite une suite de chapitres, sections, paragraphes. Au
   milieu de ces paragraphes, on peut insrer des morceaux de programme,
   ou changer de police de caractres pour faire ressortir un mot ou un
   passage, ou encore y insrer des listes, faire rfrence  une autre
   partie du document, et d'autres choses encore.

   Pour crire un tel document, il suffit alors de prciser au bon moment
   le titre, l'auteur, la date et la version du document, puis les
   chapitres et sections, dire quand il faut insrer une liste et quels
   en sont les lments, et ainsi de suite.

2.3 Les SGML-Tools

   Les _SGML-Tools_ permettent,  partir de cette spcification du
   document, d'obtenir le document final dans le format que vous
   prfrez. Si vous voulez l'ajouter  votre bibliothque personnelle,
   ce sera srement du _PostScript_, si vous voulez le faire partager au
   reste de la plante  travers le Web, pourquoi pas du _HTML_, ou si
   vous craquez et voulez le lire sous Windows, vous pouvez toujours
   l'avoir en _RTF_ pour pouvoir le lire sous n'importe quel diteur de
   texte. Ou peut-tre sous chacun de ces formats, si vous avez des
   humeurs changeantes.

   La distribution SGML-Tools peut tre rcupre via FTP anonyme dans le
   rpertoire ftp://ftp.lip6.fr/pub/sgml-tools/

3. Votre premier document

3.1 Depuis un document au format texte

   Si vous possdez un document au format texte que vous dsirez formater
   en SGML pour ensuite le transformer en divers formats, voici la marche
    suivre :

    1. Ajoutez au tout dbut du fichier les lignes suivantes :
        <!doctype linuxdoc system>
        <article>
        <title>le titre ici</title>
        <author>
        le nom de l'auteur, son email
        </author>
        <date>
        la version et la date du document
        </date>

    2. S'il y a au tout dbut du document un court paragraphe qui dcrit
       brivement le contenu de ce document, encadrez ce paragraphe avec
       les balises <abstract> et </abstract>.
    3. Ajoutez juste  la suite la balise <toc>, qui insre
       automatiquement la table des matires.
    4. Au dbut de chaque nouveau chapitre, remplacez la ligne contenant
       le numro et le titre du chapitre par :
       <sect>le titre du chapitre

       et rajoutez la balise </sect>  la fin du chapitre.
       _Note :_ Il n'est pas ncessaire d'indiquer le numro du chapitre,
       car ils sont numrots automatiquement.
    5. Faites la mme chose pour les sections, en remplaant le numro et
       le titre par <sect1> et en rajoutant </sect1>  la fin de la
       section.
    6. Il est possible de crer des sous-sections jusqu'au niveau 4 (avec
       <sect4> et </sect4>) en oprant de la mme manire.
    7.  chaque dbut de paragraphe, ajoutez la balise <p>.
    8. Si vous dsirez mettre en valeur certains mots ou certaines
       phrases, entourez-les des balises <it> et </it> (_italique_), ou
       <bf> et </bf> (_gras_), ou encore <tt> et </tt> (caractres de
       machine  crire d'antan).
    9. Lorsqu'une liste apparat dans le texte, comme celle-ci par
       exemple :
        Voici une liste :

        - d'une ligne,
        - ah non, deux,
        - tiens, trois,
        - c'est tout.

        de quatre lignes !

       il faut la remplacer par :
        Voici une liste :
       <itemize>
       <item>d'une ligne,
       <item>ah non, deux,
       <item>tiens, trois,
       <item>c'est tout.
        </itemize>
        de quatre lignes !

   10. Lorsqu'un bloc reprsente une partie de programme, ou autre chose
       que l'on veut faire ressortir :
       <verb>
        10 REM Tiens qu'est-ce que c'est ?
        20 REM Je croyais que ca n'existait plus !
        30 PRINT "Je suis de retour ";
        40 PRINT "pour sauver le monde."
        50 INPUT "Des mains de qui d'aprs toi ?",M$
        60 IF M$="Bill" THEN PRINT "Tu es un sage":GOTO AUPARADIS
        70 ELSE PRINT "Tu n'as rien compris...":GOTO AUPAYSDUDOLLAR
        </verb>

   11. Arriv  ce point, vous avez dj bien avanc votre formatage en
       SGML. Vous pourrez, si vous voulez affiner votre document, jeter
       un oeil sur le guide d'utilisation des _SGML-Tools_, qui dcrit
       plus en dtail le type de document _LinuxDoc_.

4. Configurer Emacs

4.1 Les caractres accentus

   Si vous dsirez crire des documents en franais ou dans une autre
   langue europenne, vous aurez besoin de caractres accentus. Voici
   comment configurer Emacs pour qu'il accepte ces caractres.

  L'affichage des caractres 8 bits

   Pour qu'Emacs soit capable d'afficher des caractres 8 bits, ajoutez
   les lignes suivantes  votre .emacs :
       (standard-display-european 1)
       (load-library "iso-syntax")

   Si vous utilisez Emacs sur un terminal qui ne supporte pas l'affichage
   des caractres 8 bits, vous pouvez utiliser la bibliothque iso-ascii
   ((load-library "iso-ascii")), qui permet  Emacs d'afficher les
   caractres 8 bits d'une faon approche.

  La saisie des caractres accentus

   Si votre clavier permet de taper les caractres accentus, aucun
   problme ne devrait se poser. En revanche, s'il ne le permet pas,
   voici quelques moyens d'y remdier :

  La bibliothque iso-acc

   La bibliothque iso-acc d'Emacs permet d'entrer des caractres
   accentus malgr que l'on ait un clavier qui ne le permette a priori
   pas.

   Pour utiliser cette bibliothque, ajoutez la ligne suivante  votre
   .emacs :
        (load-library "iso-acc")

   Puis, une fois avoir relanc Emacs et ouvert le fichier que vous
   voulez diter, tapez Meta-x iso-accents-mode.

   Vous pouvez alors entrer un caractre __ en tapant _'_ puis e. De
   manire gnrale, on peut entrer un caractre accentu en tapant
   d'abord l'accent, puis la lettre  accentuer (aussi bien minuscule que
   majuscule). Voici les diffrents accents utilisables :

     ' : Un accent aigu

     ` : Un accent grave

     ^ : Un accent circonflexe

     " : Un trma

     ~ : Un tilde au dessus de la lettre, une cdille lorsqu'il prcde
   un c, et d'autres encore (voir fichier iso-acc.el),

     / : Pour barrer une lettre, ...

   Si vous avez besoin d'entrer un de ces caractres et non pas une
   lettre accentue, tapez un espace  la suite de l'accent. Par exemple,
   pour taper _l'lphant_, tapez l ' spc ' e l ' e ...

   Vous pouvez trouver l'ensemble des combinaisons dans le fichier
   iso-acc.el.

  La touche Meta

   Il est possible avec certains terminaux de saisir des caractres
   accentus grce  la touche Meta (ou Alt). Par exemple, la frappe de
   _Meta-i_ permet d'entrer le caractre __.

   Mais Emacs prvoit la touche Meta pour d'autres utilisations. Il faut
   donc taper la squence _Ctrl-q_ (commande quoted-insert) avant de
   taper _Meta-i_.

   Cette commande permet aussi d'entrer un caractre selon son code en
   octal. Tapez _Ctrl-q_ suivi du code en octal du caractre que vous
   dsirez entrer.

  Afficher les caractres SGML en 8 bits

   En SGML, les caractres accentus peuvent tre taps grce  des
   macros. Par exemple, le caractre __ s'crit _&eacute;_. En gnral,
   les applications qui lisent du SGML arrivent  lire les caractres 8
   bits et il n'est donc pas ncessaire d'utiliser ces macros. Mais il
   est possible que certaines ne le puissent pas. En sachant qu'il existe
   un moyen facile de remdier  a, ce serait dommage de faire "planter"
   ces dernires applications.

   En effet, la bibliothque iso-sgml vous permet d'entrer sous Emacs des
   caractres accentus, comme d'habitude, mais lorsqu'il enregistre
   votre fichier, il transforme tous ces caractres 8 bits par leur
   quivalent SGML.

   Il est donc trs facile, grce  cette bibliothque, de saisir et
   relire votre document sous Emacs, et vous tes sr que votre document
   ne sera pas rejet par une application qui ne comprend pas les
   caractres 8 bits.

   Pour utiliser cette bibliothque, il suffit de rajouter ces lignes 
   votre .emacs :

       (setq sgml-mode-hook
       '(lambda () "Dfauts pour le mode SGML."
       (load-library "iso-sgml")))

4.2 Le mode SGML

   Lorsque vous ouvrez un fichier avec une extension _.sgml_, Emacs lance
   normalement le _mode sgml_. S'il ne le fait pas, vous pouvez soit le
   faire manuellement avec Meta-x sgml-mode, soit le lancer
   automatiquement en rajoutant ces lignes  votre .emacs :

      (setq auto-mode-alist
      (append '(("\.sgml$"  . sgml-mode))
                auto-mode-alist))

   Ce mode permet par exemple de choisir comment insrer les caractres 8
   bits. En utilisant Meta-x sgml-name-8bit-mode (ou dans le menu
   _SGML/Toggle 8 bit insertion_), vous pouvez choisir d'insrer les
   caractres 8 bits soit tels quels, soit sous leur forme SGML,
   c'est--dire sous la forme _&...;_.

   Il permet aussi de cacher ou non les balises SGML, avec Meta-x
   sgml-tags-invisible ou le menu _SGML/Toggle Tag Visibility_.

4.3 Le mode PSGML

   Le mode PSGML donne de grandes facilits pour diter des documents
   SGML sous Emacs.

   La documentation psgml-linuxdoc explique comment installer et utiliser
   ce mode conjointement avec _LinuxDoc_.

4.4 Divers

  Le mode auto-fill

   En mode normal, lorsque vous tapez un paragraphe et que vous arrivez
   en bout de ligne, vous devez vous-mme utiliser la touche Entre pour
   revenir  la ligne, ou bien votre ligne continue indfiniment tout le
   long du paragraphe. Il en rsulte, si vous utilisez Entre pour
   revenir  la ligne, un paragraphe dont les fins de lignes ne sont pas
   alignes, et en gnral ces lignes rallongent ou raccourcissent au fur
   et  mesure. De mme si vous laissez des lignes dpasser une longueur
   raisonnable, vous ne pourrez pas les voir sous certains diteurs.

   Le mode _auto-fill_ permet d'automatiser cette tche ingrate : lorsque
   vous dpassez une certaine colonne (la 70e par dfaut), il vous place
   automatiquement  la ligne suivante.

   Voici comment utiliser ce mode, et fixer la largeur de vos lignes 
   80 :

       (setq sgml-mode-hook
       '(lambda () "Dfauts pour le mode SGML."
       (auto-fill-mode)
       (setq fill-column 80)))

5. Ispell

   Si vous dsirez vrifier l'orthographe de votre document directement
   depuis Emacs, vous pouvez utiliser la distribution _Ispell_ et son
   mode associ sous Emacs.

5.1 Configuration initiale

   Tout d'abord, ajoutez ces lignes  votre .emacs pour configurer
   Emacs :

      (autoload 'ispell-word "ispell"
         "Check the spelling of word in buffer." t)
      (global-set-key "\e$" 'ispell-word)
      (autoload 'ispell-region "ispell"
         "Check the spelling of region." t)
      (autoload 'ispell-buffer "ispell"
         "Check the spelling of buffer." t)
      (autoload 'ispell-complete-word "ispell"
         "Look up current word in dictionary and try to complete it." t)
      (autoload 'ispell-change-dictionary "ispell"
         "Change ispell dictionary." t)
      (autoload 'ispell-message "ispell"
         "Check spelling of mail message or news post.")
      (autoload 'ispell-minor-mode "ispell"
         "Toggle mode to automatically spell check words as they are typed in."
)

5.2 Le choix de vos dictionnaires par dfaut

   Vous pouvez configurer Emacs pour qu' l'ouverture d'un fichier,
   celui-ci choisisse automatiquement quels dictionnaires utiliser. Vous
   pouvez en effet utiliser plusieurs dictionnaires. Le premier et
   srement le plus important est le dictionnaire principal, distribu
   avec Ispell. Vous avez le choix entre plusieurs langues. Le deuxime
   est votre dictionnaire personnel, celui o Ispell ajoutera les mots
   qu'il n'aura pas trouv dans le premier dictionnaire mais que vous lui
   aurez indiqu de garder.

   Voici les lignes  insrer  votre .emacs si vous dsirez utiliser par
   dfaut le dictionnaire franais distribu avec Ispell, et placer votre
   dictionnaire personnel dans un fichier .ispell-dico-perso dans votre
   rpertoire racine.

       (setq sgml-mode-hook
      '(lambda () "Dfauts pour le mode SGML."
      (setq ispell-personal-dictionary "~/.ispell-dico-perso")
      (ispell-change-dictionary "francais")
       ))

5.3 Choix des dictionnaires pour un certain fichier

   Un petit problme se pose si vous ne vrifiez pas toujours des textes
   dans la mme langue. Et si vous traduisez des documents, il est
   probable que vous passiez d'une langue  l'autre assez souvent.

   Je ne connais pas de moyen en Lisp de choisir, soit automatiquement,
   soit en un _click_ de souris, les dictionnaires principaux et
   personnels associs  la langue utilise dans le fichier en cours. (Si
   vous en connaissez un, faites-moi signe !)

   Mais il est possible d'indiquer quels dictionnaires vous voulez
   utiliser pour ce fichier (et seulement celui-l). Il suffit de les
   rajouter en commentaire,  la fin du fichier, pour qu'Ispell puisse
   les lire en lanant une vrification :

      <!-- Local IspellDict: english -->
      <!-- Local IspellPersDict: ~/emacs/.ispell-english -->

   Si vous avez dfini dans votre .emacs que vos dictionnaires par dfaut
   seront franais, vous pouvez alors ajouter ces lignes  chaque fin de
   fichier dont le texte est en anglais.

5.4 Vrifier votre document

   Pour lancer la vrification de votre document en intgralit,
   utilisez, depuis n'importe o dans votre document Meta-x
   ispell-buffer. Vous pouvez aussi lancer la vrification sur une rgion
   seulement du document :

     * Indiquez le dbut de la rgion avec Ctrl-Spc (mark-set-command),
     * Placez-vous  la fin de la rgion  vrifier,
     * tapez Meta-x ispell-region.

   Emacs lance alors Ispell. Si ce dernier trouve un mot qu'il ne connait
   pas, il vous indique ce mot (normalement en surbrillance) et vous
   demande de presser une touche :

     * _spc _accepte ce mot, uniquement pour cette fois,
     * _i _accepte ce mot et l'insre dans votre dictionnaire personnel,
     * _a _accepte ce mot pour cette session,
     * _A _accepte ce mot pour ce fichier, en l'insrant dans le
       dictionnaire local au fichier,
     * _r _permet de corriger le mot mal orthographi,
     * _R _permet de corriger toutes les occurrences du mot mal
       orthographi,
     * _x _arrte la vrification, et replace le curseur  sa position
       initiale,
     * _X _arrte la vrification en laissant le curseur sur le mot mal
       orthographi, vous permettant de modifier votre fichier ; vous
       pouvez continuer la vrification en tapant Meta-x ispell-continue,
     * _? _affiche une aide en ligne.

   Si Ispell trouve un ou plusieurs mots ressemblant  celui qu'il ne
   connait pas, il vous les indique dans une petite fentre, chacun
   prcd d'un chiffre. Il suffit de presser un de ces chiffres pour
   corriger le mot mal orthographi par le mot correspondant.

5.5 Dictionnaire personnel contre dictionnaire local au fichier

   La touche _i_ permet d'insrer un mot dans le dictionnaire personnel,
   alors que la touche _A_ permet d'insrer un mot dans le dictionnaire
   local au fichier.

   Le dictionnaire local au fichier est une suite de mots insrs  la
   fin du fichier, sous forme de commentaires, et qui est relu par Ispell
   chaque fois que vous le lancez sur ce fichier. Cela permet d'accepter
   certains mots, valables dans ce fichier, mais qui ne le seraient pas
   dans d'autres.

   A mon avis, il est prfrable que le dictionnaire personnel soit
   rserv aux mots que le dictionnaire principal ne connait pas mais qui
   font vraiment partie de la langue (comme les mots composs), plus
   certains mots n'appartenant pas  la langue ou noms propres qui
   reviennent dans un grand nombre de fichiers (comme _Linux_) et ne
   ressemblant pas trop  un mot du dictionnaire principal : l'ajout par
   exemple de certains noms et prnoms de personnes dans le dictionnaire
   personnel peut tre dangereux, car ils ressemblent parfois  un mot de
   la langue (imaginez qu'il ne trouve pas de fautes dans la phrase :
   `_Ted en est l'effet au phil du temps.'_ !).

5.6 La vrification ` la vole'

   Ispell peut aussi vrifier l'orthographe au fur et  mesure que vous
   tapez votre document. Il faut utiliser pour cela le mode
   _ispell-minor-mode_. Lorsque vous dsirez lancer ou arrter ce mode de
   vrification, tapez Meta-x ispell-minor-mode. Ispell vous envoie alors
   un _bip_ chaque fois que vous tapez un mot qu'il ne connait pas.

   Si ces _bip_  rptition vous ennuient (ou si votre voisin de palier
   dort !), vous pouvez les remplacer par un flash de l'cran, en tapant
   Meta-x set-variable RET visible-bell RET t RET. Ou ajoutez cette ligne
    votre .emacs pour faire taire Emacs  tout jamais :

       (setq visible-bell t)

5.7 Saut de rgions

   Il est possible de ne pas vrifier votre document en intgralit, en
   sautant quelques rgions bien spcifiques. En effet, vous voudrez
   srement ne pas vrifier l'orthographe de vos balises SGML. Pour cela,
   ajoutez la ligne suivante  votre .emacs :

      (setq ispell-skip-sgml t)

   Une version Beta du 20 Mars 98 du fichier ispell.el est disponible 
   l'adresse http://kdstevens.com/~stevens/ispell-page.html. Cette
   version tend les rgions SGML  sauter. En effet, la version
   d'ispell.el fournie avec Emacs permet seulement de sauter les tags
   SGML, de la forme _<tt>_ ou _</tt>_.

   Cette version Beta permet de sauter galement les rgions entre :

     * <author> et la fin de la ligne,
     * < et / (pour les tags SGML de la forme _<em/.../_,
     * <code> et </code>,
     * <verb> et </verb>,
     * <tt> et </tt>.

6. Pour aller plus loin

6.1 Insertion automatique d'une entte

   Sous Emacs, il est possible d'_accrocher_ des actions  chaque
   vnement (ouverture d'un fichier, sauvegarde, lancement d'un mode,
   etc).

   La bibliothque _autoinsert_ utilise cette fonctionnalit : lorsque
   vous ouvrez un nouveau fichier sous Emacs, cette bibliothque insre,
   selon le type de ce fichier, une entte _standard_.

   Dans notre cas, cette entte _standard_ pourrait bien tre la partie
   qui dclare le type de document (LinuxDoc), le titre, l'auteur et la
   date.

   Je vais dcrire ici deux faons d'insrer une telle entte. Soit en
   insrant un fichier que vous aurez pralablement crit, soit en
   lanant une routine crite en _elisp_.

  par l'insertion d'un fichier

   Il faut tout d'abord prciser  Emacs d'excuter la commande
   auto-insert  l'ouverture d'un fichier, puis lire la bibliothque
   _autoinsert_ qui dclare la liste auto-insert-alist qu'il nous faut
   modifier, cette dernire dfinissant pour chaque type de fichier
   l'entte  insrer. Le fichier  insrer doit par dfaut se trouver
   dans le rpertoire ~/insert/, mais il est possible de redfinir la
   variable auto-insert-directory si l'on veut le placer ailleurs.

   Voici les lignes  rajouter  votre .emacs pour insrer le fichier
   ~/emacs/sgml-insert.sgml  l'ouverture d'un nouveau fichier SGML :

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

   Vous pouvez alors crire dans le fichier ~/emacs/sgml-insert.sgml
   votre entte personnalise, puis relancer Emacs et ouvrir un fichier
   toto.sgml. Emacs devrait alors vous demander de confirmer l'insertion
   automatique, et dans l'affirmative insrer votre entte.

  par l'excution d'une routine

   Cela fonctionne un peu comme prcdemment, mais au lieu de prciser
   dans la variable auto-insert-alist un fichier  insrer, il faut
   prciser une fonction  excuter. Voici comment procder, en supposant
   que l'on crive cette fonction dans un fichier ~/emacs/sgml-header.el
   (inutile d'encombrer votre .emacs avec cette fonction qui peut se
   rvler assez longue) :

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

   Vous pourrez trouver en appendice un exemple de cette fonction
   insert-sgml-header.

7. Une fonction insert-sgml-header

   Cette fonction permet  l'utilisateur d'insrer une entte
   personnalise pour un document du Projet de Documentation Linux dans
   un fichier. Elle peut soit tre appele automatiquement lorsque l'on
   ouvre un nouveau fichier SGML, soit tre appele explicitement par
   l'utilisateur.

   Cette fonction demande  l'utilisateur,  travers le _mini-buffer_,
   divers renseignements, certains ncessaires, d'autres facultatifs.

   Tout d'abord le titre. Si l'utilisateur n'entre aucun titre, la
   fonction retourne immdiatement, et rien n'est insr. Vient ensuite
   la date, l'auteur, son email et sa home page (ces deux derniers tant
   facultatifs).

   Il demande ensuite le nom du traducteur. S'il n'y a pas de traducteur
   pour ce document, il suffit de presser _Entre_, et les renseignements
   sur le traducteur ne seront pas demands. Dans le cas contraire, la
   fonction demande l'email et la home page du traducteur (aussi
   facultatifs).

   Cette fonction affiche alors dans le buffer courant votre entte,
   comportant bien sr tous les renseignements que vous avez cits mis en
   forme, mais aussi les balises ncessaires au paragraphe d'introduction
   et au premier chapitre, puis place le curseur  l'endroit o vous
   pourrez saisir le paragraphe d'introduction.

(defun insert-sgml-header ()
  "Insre l'entte d'un document LinuxDoc"
  (interactive)
  (let (titre auteur email home traducteur email-traducteur home-traducteur dat
e
              point-debut)
    (setq titre (read-from-minibuffer "Titre : "))
    (if (> (length titre) 0)
        (progn
          (setq date (read-from-minibuffer "Date : ")
                auteur (read-from-minibuffer "Auteur : ")
                email (read-from-minibuffer "Email auteur : ")
                home (read-from-minibuffer "Home page auteur : http://")
                traducteur (read-from-minibuffer "Traducteur : "))
          (insert "<!doctype linuxdoc system>\n<article>\n<title>")
          (insert titre)
          (insert "</title>\n<author>\nAuteur : ") (insert auteur) (insert "<ne
wline>\n")
          (if (> (length email) 0)
              (progn
                (insert "<htmlurl url=\"mailto:")
                (insert email) (insert "\" name=\"") (insert email)
                (insert "\"><newline>\n")))
          (if (> (length home) 0)
              (progn
                (insert "<htmlurl url=\"http://")
                (insert home) (insert "\" name=\"") (insert home)
                (insert "\">\n<newline>")))
          (if (> (length traducteur) 0)
              (progn
                (setq email-traducteur (read-from-minibuffer "Email traducteur
: ")
                      home-traducteur (read-from-minibuffer "Home page traducte
ur : http://"))
                (insert "Traducteur : ")
                (insert traducteur)
                (insert "<newline>\n")
                (if (> (length email-traducteur) 0)
                    (progn
                      (insert "<htmlurl url=\"mailto:")
                      (insert email-traducteur) (insert "\" name=\"")
                      (insert email-traducteur)
                      (insert "\"><newline>\n")))
                (if (> (length home-traducteur) 0)
                    (progn
                      (insert "<htmlurl url=\"http://")
                      (insert home-traducteur) (insert "\" name=\"")
                      (insert home-traducteur)
                      (insert "\"><newline>\n")))))
          (insert "</author>\n<date>\n")
          (insert date)
          (insert "\n</date>\n\n<abstract>\n")
          (setq point-debut (point))
          (insert "\n</abstract>\n<toc>\n\n<sect>\n<p>\n\n\n</sect>\n\n</articl
e>\n")
          (goto-char point-debut)
          ))))
