Page suivante Page précédente Table des matières

7. Une fonction insert-sgml-header

Cette fonction permet à l'utilisateur d'insérer une entête personnalisée pour un document du Projet de Documentation Linux dans un fichier. Elle peut soit être appelée automatiquement lorsque l'on ouvre un nouveau fichier SGML, soit être appelée explicitement par l'utilisateur.

Cette fonction demande à l'utilisateur, à travers le mini-buffer, divers renseignements, certains nécessaires, d'autres facultatifs.

Tout d'abord le titre. Si l'utilisateur n'entre aucun titre, la fonction retourne immédiatement, et rien n'est inséré. 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 Entrée, et les renseignements sur le traducteur ne seront pas demandés. 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 entête, comportant bien sûr tous les renseignements que vous avez cités mis en forme, mais aussi les balises nécessaires 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 ()
  "Insère l'entête 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)
          ))))
 

Page suivante Page précédente Table des matières