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

2. Installation de PSGML

Cette section décrit l'installation de PSGML 1.0.1, autrement dit une version stable depuis le 20 novembre 1996 à 19 heures 40 minutes et 5 secondes.

2.1 Suivre à peu près les instructions du fichier INSTALL

Dans la section install-info du fichier Makefile.in, commencer par remplacer tous les --infodir par --info-dir, plus conformes à ce qu'attend le programme install-info (en tout cas dans sa version 1.2).

Ensuite seulement, suivre en toute confiance les instructions du fichier INSTALL.

La procédure décrite dans le fichier INSTALL aboutit simplement à la création des quelques fichiers et répertoires indispensables au fonctionnement de psgml, en particulier les fichiers .el, .elc, et .info. Un C-h i d dans Emacs vous confirmera que les fichiers Info ont bien été intégrés à la suite des autres (dans la catégorie Miscellaneous). Pour le reste, il suffit d'aller vérifier qu'un répertoire psgml a été créé dans le site-lisp de votre arborescence Emacs (je parie sur /usr/share/emacs).

2.2 Configurer Emacs

Il s'agit à présent de convaincre Emacs de charger le mode psgml chaque fois qu'un fichier SGML est ouvert. La solution qui me paraît la plus simple consiste à ajouter dans votre fichier ~/.emacs les lignes suivantes (si votre arborescence Emacs ne se trouve pas à cet emplacement, vous devrez bien sûr modifier le chemin ci-dessous en conséquence) :

(add-to-list 'load-path "/usr/share/emacs/site-lisp/psgml")
(autoload 'sgml-mode "psgml" "Mode majeur SGML." t)
          
Si vous voulez immédiatement vérifier que tout se passe comme prévu, rien ne vous empêche de relancer Emacs, et de charger un fichier SGML. Mais vous risquez d'être déçu : hormis l'apparition de nouveaux menus, dont les options sont au mieux inefficaces, vous ne trouverez rien qui vaille la peine d'avoir lu ce document jusqu'ici...

2.3 Configurer psgml

Il manque en fait à psgml deux types d'information distincts :

Le(s) chemins(s) d'accès aux DTD

Information vitale s'il en est. Si psgml ne sait pas accéder à la DTD du document (une des instances de linuxdoc dans le cas qui nous intéresse), il sera bien sûr incapable d'analyser le document, ni d'émettre une quelconque suggestion ou de formater le texte en fonction de l'élément courant.

Les préférences de l'utilisateur

L'utilisateur dispose d'une floppée de variables à initialiser en fonction de ses habitudes de travail. Cela va de l'aspect des balises à l'écran au nom du parseur SGML externe, en passant par le niveau d'indentation requis.

Voyons comment les lui fournir.

Chemins d'accès aux DTD

Il existe quatre moyens différents d'indiquer à psgml où se trouve les informations sur le type de document SGML auquel il a à faire.

La solution recommandée par SGML/Opens est la plus universelle et a apparemment été retenue lors des implémentations de psgml effectuées pour les versions 20.x de XEmacs, ainsi que dans les versions 1.xx du kit sgml-tools. Elle implique que psgml ait accès à un ou plusieurs "catalogues", contenant eux-mêmes des références aux fichiers de définition (dtd, entités, etc.) que psgml doit analyser.

Il suffit pour cela d'affecter à la variable sgml-catalog-files une liste de chemins d'accès aux catalogues. La solution la plus élégante consiste à utiliser la variable d'environnement SGML_CATALOG_FILES. Le mode psgml se charge d'y puiser tout seul la valeur de la variable sgml-catalog-files.

Pour ce faire, on peut par exemple insérer les lignes suivantes dans son fichier ~/.bash_profile :

SLP=/usr/local/lib # Emplacement des bibliothèques sgml-tools
SGML_CATALOG_FILES=$SLP/sgml/iso-entities-8879.1986/iso-entities.cat
SGML_CATALOG_FILES=$SLP/sgml-tools/dtd/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILES
            
Bien sûr, SLP doit correspondre au répertoire à partir duquel les bibliothèques sgml-tools ont été installées.

Chemins d'accès pour le validateur externe nsgmls

Grâce aux chemins d'accès aux catalogues récupérés dans sgml-catalog-files, psgml peut également appeler le célèbre validateur nsgmls, distribué avec les versions 1.xx du kit sgml-tools. Attention, sgmls, le prédécesseur de nsgmls distribué avec les versions précédentes des sgml-tools n'a pas le même comportement par défaut, et ne connaît pas la notion de catalogue !

Variables à initialiser

Quelques variables psgml sont intéressantes à initialiser avant même la première utilisation. Je vous propose donc d'insérer le code ci-dessous dans votre fichier ~/.emacs, après celui donné à la section Configuration d'Emacs :

(setq sgml-validate-command "nsgmls -s %s %s"
      sgml-trace-entity-lookup t
      sgml-set-face t
      sgml-live-element-indicator t
      sgml-indent-data t
      sgml-indent-step 1)
            
Vous disposerez ainsi :
  1. d'un accès direct à l'analyseur nsgmls livré avec le kit sgml-tools, par l'intermédiaire de la combinaison C-c C-v ;
  2. d'un log de parsing un peu plus explicite que celui établi par défaut ;
  3. d'une mise en relief des balises SGML de votre document ;
  4. d'un rappel, sur la ligne de mode d'Emacs, de l'élément dans lequel se trouve votre point d'insertion ;
  5. de la possibilité d'utiliser TAB et C-c C-q pour justifier élégamment le texte ;
  6. d'un niveau d'indentation égal à 1, qui évitera de se retrouver trop vite à droite de l'écran, lorsqu'on se trouve en train d'écrire à un niveau d'imbrication trop profond. Mais vous pouvez garder la valeur 2 par défaut si vous préférez.

Derniers conseils

Le mieux est maintenant de tout sauver, et de quitter carrément Emacs. Avant de le relancer, n'oubliez pas de "sourcer" votre nouveau fichier ~/.bash_profile !

Le plus simple est de commencer vos expérimentations sur une copie du fichier guide.sgml qui documente les sgml-tools, ou sur un HOWTO quelconque. Le mode psgml sera automatiquement invoqué au chargement.

Rien ne se passe ? Normal, vous êtes victime du lazy-lock-mode activé par défaut par psgml. Lancez une commande de parsing quelconque (pourquoi pas C-c C-p ?), et vous verrez enfin les balises s'allumer.

Pour que l'environnement de travail soit complet, mieux vaut disposer également d'un correcteur orthographique. Vous trouverez des indications sur l'utilisation d'ispell dans un contexte fortement psgml-toolisé à l'adresse suivante :
http://perso.wanadoo.fr/feloy/Linux/LinuxDoc/LinuxDoc-Emacs-Ispell-HOWTO.html
Les possesseurs d'arpenteurs WWW modernes y verront d'ailleurs un exemple d'utilisation des feuilles de style, qui ouvrent de nombreuses perspectives aux utilisateurs de SGML (et plus encore de XML).


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