  LinuxDoc+Emacs+Ispell-HOWTO
  Auteur : Philippe MARTIN (feloy@wanadoo.fr)

  v0.5, 28 Avril 1998

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

  11..

  PPrreeaammbbuullee

  11..11..

  CCooppyyrriigghhtt

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

  11..22..

  RReemmeerrcciieemmeennttss

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

  11..33..

  RReemmaarrqquueess

  N'hesitez pas a me faire parvenir toute remarque et/ou critique sur ce
  document, je  les  examinerai  afin  de  faire  evoluer  au  mieux  ce
  document.
  N'hesitez  pas  non  plus  a me poser des questions relatives au sujet
  traite dans cet HOWTO, j'y repondrai avec un interet tout particulier.

  11..44..

  VVeerrssiioonnss

  Ce document traite des versions suivantes :

  +o  Sgml-tools version 0.99,

  +o  Emacs version 19.34,

  +o  Ispell version 3.1,

  +o  Toutes  les  bibliotheques  Emacs auxquelles je fais reference sont
     celles distribuees avec la version d'Emacs precitee, sauf  iso-sgml
     distribuee avec XEmacs et psgml distribuee seule.

  22..

  IInnttrroodduuccttiioonn

  22..11..

  LLee llaannggaaggee SSGGMMLL

  Le  langage SSGGMMLL (_S_t_a_n_d_a_r_d _G_e_n_e_r_a_l_i_z_e_d _M_a_r_k_u_p _L_a_n_g_u_a_g_e) est un langage
  qui permet de definir des types de documents.

  On peut par exemple definir grace a lui un type de document _r_e_c_e_t_t_e _d_e
  _c_u_i_s_i_n_e, qui precisera qu'il faudra y inclure une premiere partie avec
  les differents ingredients, puis une deuxieme  avec  les  accessoires,
  une  troisieme  donnant  la  facon de faire votre gateau pas a pas, et
  enfin une belle photo qui montre le resultat final.

  Cette definition d'un type de document est appele DDTTDD  (_D_o_c_u_m_e_n_t  _T_y_p_e
  _D_e_f_i_n_i_t_i_o_n).  Elle  ne  permet  pas de definir quelle sera l'allure du
  document final, mais seulement ce qu'il contiendra ou pourra contenir.

  Pour  reprendre  l'exemple  precedent, je suis sur qu'en lisant l'idee
  que je me fais d'une recette de cuisine, vous avez reconnu celles  que
  vous  ou  votre  cuistot  attitre utilisez. Et pourtant, elles ont une
  allure completement differente : les miennes  ont  une  photo  qui  se
  trouve  en  haut  a gauche du placard de la salle de bain, et la liste
  des ingredients se trouve entre les bouteilles de lait et  de  gaz  au
  fond du jardin. Et les votres ?

  Grace  a  cette  definition  type, quelqu'un peut ecrire son document,
  sans tenir compte de la forme qu'il aura quand il arrivera devant  les
  yeux du lecteur.

  22..22..

  LLaa ddeeffiinniittiioonn dduu ttyyppee LLiinnuuxxDDoocc

  Ce  type  permet  d'ecrire,  vous  l'aviez  devine,  des  documents se
  reportant a Linux.

  Ces documents sont en general 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  apres  un  court  paragraphe  qui  explique
  brievement  ce  que  contient  ce document (ce qui evite 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  matieres qui montre plus en
  detail son contenu et permet aux plus presses d'aller voir directement
  ce qu'ils cherchent.

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

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

  22..33..

  LLeess SSGGMMLL--TToooollss

  Les  SSGGMMLL--TToooollss  permettent,  a  partir  de  cette  specification   du
  document,  d'obtenir  le  document  final  dans  le  format  que  vous
  preferez. Si vous voulez l'ajouter a votre  bibliotheque  personnelle,
  ce  sera  surement  du _P_o_s_t_S_c_r_i_p_t, si vous voulez le faire partager au
  reste de la planete a travers le Web,  pourquoi pas  du  _H_T_M_L,  ou  si
  vous  craquez  et  voulez  le  lire sous Windows, vous pouvez toujours
  l'avoir en _R_T_F pour pouvoir le lire sous  n'importe  quel  editeur  de
  texte.  Ou  peut-etre  sous  chacun  de  ces formats, si vous avez des
  humeurs changeantes.

  La distribution SGML-Tools peut etre recuperee via FTP anonyme dans le
  repertoire ftp://ftp.lip6.fr/pub/sgml-tools/

  33..

  VVoottrree pprreemmiieerr ddooccuummeenntt

  33..11..

  DDeeppuuiiss uunn ddooccuummeenntt aauu ffoorrmmaatt tteexxttee

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

  1. Ajoutez au tout debut 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 debut du document un court paragraphe qui decrit
     brievement le contenu de ce document, encadrez ce  paragraphe  avec
     les balises <abstract> et </abstract>.

  3. Ajoutez   juste   a   la   suite   la   balise  <toc>,  qui  insere
     automatiquement la table des matieres.

  4. Au debut de chaque nouveau chapitre, remplacez la  ligne  contenant
     le numero et le titre du chapitre par :

            <sect>le titre du chapitre

  et rajoutez la balise </sect> a la fin du chapitre.

  NNoottee  ::  Il n'est pas necessaire d'indiquer le numero du chapitre, car
  ils sont numerotes automatiquement.

  5. Faites la meme chose pour les sections, en remplacant le numero  et
     le  titre  par  <sect1>  et  en  rajoutant  </sect1> a la fin de la
     section.

  6. Il est possible de creer des sous-sections jusqu'au niveau 4  (avec
     <sect4> et </sect4>) en operant de la meme maniere.

  7. A chaque debut de paragraphe, ajoutez la balise <p>.

  8. Si  vous  desirez  mettre  en  valeur  certains  mots  ou certaines
     phrases, entourez-les des balises <it> et </it> (_i_t_a_l_i_q_u_e), ou <bf>
     et  </bf>  (ggrraass), ou encore <tt> et </tt> (caracteres de machine a
     ecrire d'antan).

  9. Lorsqu'une  liste  apparait  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  represente 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'apres 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.
     Arrive a ce point, vous avez deja bien avance  votre  formatage  en
     SGML. Vous pourrez, si vous voulez affiner votre document, jeter un
     oeil sur le guide d'utilisation des SSGGMMLL--TToooollss, qui decrit plus  en
     detail le type de document LLiinnuuxxDDoocc.

  44..

  CCoonnffiigguurreerr EEmmaaccss

  44..11..

  LLeess ccaarraacctteerreess aacccceennttuueess

  Si  vous  desirez  ecrire  des documents en francais ou dans une autre
  langue europeenne, vous aurez besoin de  caracteres  accentues.  Voici
  comment configurer Emacs pour qu'il accepte ces caracteres.

  44..11..11..

  LL''aaffffiicchhaaggee ddeess ccaarraacctteerreess 88 bbiittss

  Pour  qu'Emacs  soit capable d'afficher des caracteres 8 bits, ajoutez
  les lignes suivantes a votre .emacs :

         (standard-display-european 1)
         (load-library "iso-syntax")

  Si vous utilisez Emacs sur un terminal qui ne supporte pas l'affichage
  des  caracteres 8 bits, vous pouvez utiliser la bibliotheque iso-ascii
  ((load-library  "iso-ascii")),  qui  permet  a  Emacs  d'afficher  les
  caracteres 8 bits d'une facon approchee.

  44..11..22..

  LLaa ssaaiissiiee ddeess ccaarraacctteerreess aacccceennttuueess

  Si  votre  clavier  permet  de  taper  les caracteres accentues, aucun
  probleme ne devrait se poser. En revanche,  s'il  ne  le  permet  pas,
  voici quelques moyens d'y remedier :

  44..11..22..11..

  LLaa bbiibblliiootthheeqquuee iissoo--aacccc

  La   bibliotheque  iso-acc  d'Emacs  permet  d'entrer  des  caracteres
  accentues malgre que l'on ait un clavier qui ne le permette  a  priori
  pas.

  Pour utiliser cette bibliotheque, ajoutez la ligne suivante a votre

          (load-library "iso-acc")

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

  Vous pouvez alors entrer un caractere ee en tapant '' puis e. De maniere
  generale,  on  peut  entrer  un  caractere  accentue en tapant d'abord
  l'accent, puis  la  lettre  a  accentuer  (aussi  bien  minuscule  que
  majuscule). Voici les differents accents utilisables :

  ` : Un accent grave

  ^ : Un accent circonflexe

  " : Un trema

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

  / : Pour barrer une lettre, ...

  Si vous avez besoin d'entrer un de  ces  caracteres  et  non  pas  une
  lettre accentuee, tapez un espace a la suite de l'accent. Par exemple,
  pour taper _l_'_e_l_e_p_h_a_n_t, tapez l ' _<_s_p_c_> ' e l ' e ...

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

  44..11..22..22..

  LLaa ttoouucchhee _<_M_e_t_a_>

  Il  est  possible  avec  certains  terminaux  de saisir des caracteres
  accentues grace a la touche _<_M_e_t_a_> (ou _<_A_l_t_>). Par exemple, la  frappe
  de _<_M_e_t_a_>-i permet d'entrer le caractere ee.

  Mais  Emacs  prevoit  la touche _<_M_e_t_a_> pour d'autres utilisations.  Il
  faut donc taper la sequence CCttrrll--qq (commande quoted-insert)  avant  de
  taper _<_M_e_t_a_>-i.

  Cette  commande  permet  aussi d'entrer un caractere selon son code en
  octal. Tapez CCttrrll--qq suivi du code  en  octal  du  caractere  que  vous
  desirez entrer.

  44..11..33..

  AAffffiicchheerr lleess ccaarraacctteerreess SSGGMMLL eenn 88 bbiittss

  En  SGML,  les  caracteres  accentues  peuvent  etre tapes grace a des
  macros. Par exemple, le caractere ee s'ecrit &&eeaaccuuttee;;. En general,  les
  applications  qui lisent du SGML arrivent a lire les caracteres 8 bits
  et il n'est donc pas necessaire d'utiliser ces  macros.  Mais  il  est
  possible  que certaines ne le puissent pas. En sachant qu'il existe un
  moyen facile de remedier a ca, ce serait dommage  de  faire  "planter"
  ces dernieres applications.

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

  Il est donc tres facile, grace a  cette  bibliotheque,  de  saisir  et
  relire  votre document sous Emacs, et vous etes sur que votre document
  ne sera pas rejete  par  une  application  qui  ne  comprend  pas  les
  caracteres 8 bits.

  Pour  utiliser  cette bibliotheque, il suffit de rajouter ces lignes a
  votre

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

  44..22..

  LLee mmooddee SSGGMMLL

  Lorsque vous ouvrez un fichier avec une extension ..ssggmmll,  Emacs  lance
  normalement  le  mmooddee  ssggmmll.  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 a votre .emacs :

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

  Ce mode permet par exemple de choisir comment inserer les caracteres 8
  bits.  En  utilisant  Meta-x  sgml-name-8bit-mode  (ou  dans  le  menu
  _S_G_M_L_/_T_o_g_g_l_e  _8  _b_i_t  _i_n_s_e_r_t_i_o_n),  vous  pouvez  choisir  d'inserer les
  caracteres 8 bits soit tels quels, soit sous leur forme SGML, c'est-a-
  dire sous la forme &&......;;.

  Il  permet  aussi de cacher ou non les balises SGML, avec Meta-x sgml-
  tags-invisible ou le menu _S_G_M_L_/_T_o_g_g_l_e _T_a_g _V_i_s_i_b_i_l_i_t_y.

  44..33..

  LLee mmooddee PPSSGGMMLL

  Le mode PSGML donne de grandes facilites  pour  editer  des  documents
  SGML sous Emacs.

  La documentation psgml-linuxdoc explique comment installer et utiliser
  ce mode conjointement avec _L_i_n_u_x_D_o_c.

  44..44..

  DDiivveerrss

  44..44..11..

  LLee mmooddee aauuttoo--ffiillll

  En mode normal, lorsque vous tapez un paragraphe et que  vous  arrivez
  en  bout  de  ligne,  vous devez vous-meme utiliser la touche _<_E_n_t_r_e_e_>
  pour revenir a la ligne, ou bien  votre  ligne  continue  indefiniment
  tout  le  long du paragraphe. Il en resulte, si vous utilisez _<_E_n_t_r_e_e_>
  pour revenir a la ligne, un paragraphe dont les fins de lignes ne sont
  pas alignees, et en general ces lignes rallongent ou raccourcissent au
  fur et a mesure. De meme si  vous  laissez  des  lignes  depasser  une
  longueur  raisonnable,  vous  ne  pourrez  pas  les voir sous certains
  editeurs.

  Le mode aauuttoo--ffiillll permet d'automatiser cette tache ingrate  :  lorsque
  vous  depassez une certaine colonne (la 70e par defaut), il vous place
  automatiquement a la ligne suivante.

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

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

  55..

  IIssppeellll

  Si  vous  desirez verifier l'orthographe de votre document directement
  depuis Emacs, vous pouvez utiliser la distribution IIssppeellll et son  mode
  associe sous Emacs.

  55..11..

  CCoonnffiigguurraattiioonn iinniittiiaallee

  Tout  d'abord,  ajoutez  ces  lignes  a  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5..22..

  LLee cchhooiixx ddee vvooss ddiiccttiioonnnnaaiirreess ppaarr ddeeffaauutt

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

  Voici les lignes a inserer a votre .emacs si vous desirez utiliser par
  defaut le dictionnaire francais distribue avec Ispell, et placer votre
  dictionnaire  personnel  dans un fichier .ispell-dico-perso dans votre
  repertoire racine.

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

  55..33..

  CChhooiixx ddeess ddiiccttiioonnnnaaiirreess ppoouurr uunn cceerrttaaiinn ffiicchhiieerr

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

  Je ne connais pas de moyen en Lisp de choisir,  soit  automatiquement,
  soit en un _c_l_i_c_k de souris, les dictionnaires principaux et personnels
  associes a la langue utilisee 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-la).  Il  suffit  de  les
  rajouter  en  commentaire,  a la fin du fichier, pour qu'Ispell puisse
  les lire en lancant une verification :

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

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

  55..44..

  VVeerriiffiieerr vvoottrree ddooccuummeenntt

  Pour  lancer  la  verification  de  votre  document  en   integralite,
  utilisez,  depuis  n'importe  ou  dans  votre  document Meta-x ispell-
  buffer. Vous pouvez  aussi  lancer  la  verification  sur  une  region
  seulement du document :

  +o  Indiquez le debut de la region avec Ctrl-Spc (mark-set-command),

  +o  Placez-vous a la fin de la region a verifier,

  +o  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 :

  +o  ssppcc accepte ce mot, uniquement pour cette fois,

  +o  ii accepte ce mot et l'insere dans votre dictionnaire personnel,

  +o  aa accepte ce mot pour cette session,

  +o  AA   accepte   ce  mot  pour  ce  fichier,  en  l'inserant  dans  le
     dictionnaire local au fichier,

  +o  rr permet de corriger le mot mal orthographie,

  +o  RR  permet  de  corriger  toutes  les   occurrences   du   mot   mal
     orthographie,

  +o  xx  arrete  la  verification,  et  replace  le curseur a sa position
     initiale,

  +o  XX arrete la verification en laissant le  curseur  sur  le  mot  mal
     orthographie,  vous  permettant  de  modifier  votre fichier ; vous
     pouvez continuer la verification en tapant Meta-x ispell-continue,

  +o  ?? affiche une aide en ligne.

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

  55..55..

  DDiiccttiioonnnnaaiirree ppeerrssoonnnneell ccoonnttrree ddiiccttiioonnnnaaiirree llooccaall aauu ffiicchhiieerr

  La touche ii permet d'inserer un mot dans  le  dictionnaire  personnel,
  alors  que  la  touche  AA permet d'inserer un mot dans le dictionnaire
  local au fichier.

  Le dictionnaire local au fichier est une suite de mots  inseres  a  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  preferable  que  le  dictionnaire  personnel  soit
  reserve aux mots que le dictionnaire principal ne connait pas mais qui
  font vraiment partie de la langue  (comme  les  mots  composes),  plus
  certains  mots  n'appartenant  pas  a  la  langue  ou noms propres qui
  reviennent dans un grand  nombre  de  fichiers  (comme  _L_i_n_u_x)  et  ne
  ressemblant  pas trop a un mot du dictionnaire principal : l'ajout par
  exemple de certains noms et prenoms de personnes dans le  dictionnaire
  personnel peut etre dangereux, car ils ressemblent parfois a un mot de
  la langue (imaginez qu'il ne trouve pas de fautes  dans  la  phrase  :
  `_T_e_d _e_n _e_s_t _l_'_e_f_f_e_t _a_u _p_h_i_l _d_u _t_e_m_p_s_._' !).

  55..66..

  LLaa vveerriiffiiccaattiioonn ``aa llaa vvoolleeee''

  Ispell  peut  aussi verifier l'orthographe au fur et a mesure que vous
  tapez votre document. Il faut utiliser pour cela le mode iissppeellll--mmiinnoorr--
  mmooddee.  Lorsque vous desirez lancer ou arreter ce mode de verification,
  tapez Meta-x ispell-minor-mode. Ispell vous envoie alors un _b_i_p chaque
  fois que vous tapez un mot qu'il ne connait pas.

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

         (setq visible-bell t)

  55..77..

  SSaauutt ddee rreeggiioonnss

  Il est possible de ne pas verifier votre document en  integralite,  en
  sautant  quelques  regions  bien  specifiques.  En effet, vous voudrez
  surement ne pas verifier l'orthographe de vos balises SGML. Pour cela,
  ajoutez la ligne suivante a votre .emacs :

        (setq ispell-skip-sgml t)

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

  Cette version Beta permet de sauter egalement les regions entre :

  +o  <author> et la fin de la ligne,

  +o  < et / (pour les tags SGML de la forme <<eemm//......//,

  +o  <code> et </code>,

  +o  <verb> et </verb>,

  +o  <tt> et </tt>.

  66..

  PPoouurr aalllleerr pplluuss llooiinn

  66..11..

  IInnsseerrttiioonn aauuttoommaattiiqquuee dd''uunnee eenntteettee

  Sous Emacs, il est possible d'_a_c_c_r_o_c_h_e_r des actions a chaque evenement
  (ouverture d'un fichier, sauvegarde, lancement d'un mode, etc).

  La bibliotheque aauuttooiinnsseerrtt utilise cette fonctionnalite : lorsque vous
  ouvrez un nouveau fichier sous Emacs, cette bibliotheque insere, selon
  le type de ce fichier, une entete _s_t_a_n_d_a_r_d.

  Dans notre cas, cette entete _s_t_a_n_d_a_r_d pourrait bien etre la partie qui
  declare le type de document (LinuxDoc), le titre, l'auteur et la date.

  Je vais decrire ici deux facons d'inserer une telle entete.   Soit  en
  inserant  un  fichier  que  vous  aurez  prealablement  ecrit, soit en
  lancant une routine ecrite en eelliisspp.

  66..11..11..

  ppaarr ll''iinnsseerrttiioonn dd''uunn ffiicchhiieerr

  Il faut tout d'abord preciser a Emacs  d'executer  la  commande  auto-
  insert   a   l'ouverture  d'un  fichier,  puis  lire  la  bibliotheque
  aauuttooiinnsseerrtt qui declare la  liste  auto-insert-alist  qu'il  nous  faut
  modifier,  cette  derniere  definissant  pour  chaque  type de fichier
  l'entete a inserer. Le fichier a inserer doit par  defaut  se  trouver
  dans  le  repertoire  ~/insert/,  mais il est possible de redefinir la
  variable auto-insert-directory si l'on veut le placer ailleurs.

  Voici les lignes a rajouter a votre .emacs  pour  inserer  le  fichier
  ~/emacs/sgml-insert.sgml a 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  ecrire  dans  le fichier ~/emacs/sgml-insert.sgml
  votre entete personnalisee, puis relancer Emacs et ouvrir  un  fichier
  toto.sgml.  Emacs devrait alors vous demander de confirmer l'insertion
  automatique, et dans l'affirmative inserer votre entete.

  66..11..22..

  ppaarr ll''eexxeeccuuttiioonn dd''uunnee rroouuttiinnee

  Cela fonctionne un peu comme precedemment, mais au  lieu  de  preciser
  dans  la  variable  auto-insert-alist  un  fichier  a inserer, il faut
  preciser une fonction a executer. Voici comment proceder, en supposant
  que  l'on ecrive cette fonction dans un fichier ~/emacs/sgml-header.el
  (inutile d'encombrer votre .emacs avec  cette  fonction  qui  peut  se
  reveler 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.

  GG..

  UUnnee ffoonnccttiioonn iinnsseerrtt--ssggmmll--hheeaaddeerr

  Cette  fonction  permet   a   l'utilisateur   d'inserer   une   entete
  personnalisee  pour  un document du Projet de Documentation Linux dans
  un fichier. Elle peut soit etre appelee automatiquement  lorsque  l'on
  ouvre  un  nouveau  fichier  SGML, soit etre appelee explicitement par
  l'utilisateur.

  Cette fonction demande a  l'utilisateur,  a  travers  le  _m_i_n_i_-_b_u_f_f_e_r,
  divers renseignements, certains necessaires, d'autres facultatifs.

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

  Il demande ensuite le nom du traducteur. S'il n'y a pas de  traducteur
  pour  ce  document, il suffit de presser _E_n_t_r_e_e, et les renseignements
  sur le traducteur ne seront pas demandes. 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  entete,
  comportant bien sur tous les renseignements que vous avez cites mis en
  forme, mais aussi les balises necessaires au paragraphe d'introduction
  et  au  premier  chapitre,  puis  place le curseur a l'endroit ou vous
  pourrez saisir le paragraphe d'introduction.

  (defun insert-sgml-header ()
    "Insere l'entete d'un document LinuxDoc"
    (interactive)
    (let (titre auteur email home traducteur email-traducteur home-traducteur date
                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 "<newline>\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 traducteur : 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</article>\n")
            (goto-char point-debut)
            ))))

