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.
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
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...
Il manque en fait à psgml deux types d'information distincts :
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.
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.
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.
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 !
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 :
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
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).