Ceci est un guide utilisateur au système de traitement de document Linuxdoc-SGML, pour une utilisation dans le cadre de la documentation Linux. Linuxdoc-SGML est une DTD (Document Type Definition) SGML et un ensemble de ``fichiers de remplacements'' qui convertissent un source SGML vers un source groff, LateX, HTML, GNU info, LyX et RTF.
Linuxdoc-SGML est fortement basé sur la DTD QWERTZ de Tom Gordon, thomas.gordon@gmd.de. J'ai seulement effectué quelques révisions à sa DTD et ses fichiers de remplacements pour l'utiliser dans le cadre de la documentation Linux.
Linuxdoc-SGML n'est pas censé être un système général de traitement de document. Bien qu'il puisse être utilisé pour des documents de nombreux types, je l'ai conçu pour être utilisé par les auteurs de la documentation Linux tels que les HOWTOs, FAQs, et (ultérieurement) les manuels du Linux Documentation Project. Par conséquent, j'ai arrangé les caractéristiques du système dans cette intention. Si vous voyez un manque de généralité dans le système, ceci en est la raison. Cependant, il n'y a rien qui lie Linuxdoc-SGML à la documentation Linux, mais tous les documents produits par le système se ressembleront d'une certaine façon. Si vous voulez des choses qui semblent différentes je suggère que vous utilisiez un système plus généralisé tel que la DTD QWERTZ, en combinaison avec les outils Linuxdoc-SGML.
Un des buts de ce système est de faire des documents faciles à produire dans de nombreux formats. Jusqu'à maintenant, la plupart de la documentation Linux a été produite en pur texte à travers une édition manuelle. Un système comme groff peut s'occuper du formatage de pur texte, mais cela ne vous donne pourtant pas du HTML (pour utiliser sur le World Wide Web), du LaTeX (pour des documents imprimés correctement), ou d'autres formats de sortie. Aussi, si il y a des caractéristiques manquantes dans ce système dont vous aimeriez disposer, s'il vous plaît, faites-le moi savoir!. L'idée est que l'auteur devrait avoir à faire aussi peu que possible pour produire des documents de qualité dans de multiples formats.
Ce document est écrit en utilisant la DTD Linuxdoc-SGML. Il contient plus ou moins tout ce que vous avez besoin de savoir pour écrire des documents SGML avec cette DTD. Voir example.sgml pour un exemple d'un document SGML que vous pouvez utiliser comme un modèle pour vos propres documents.
J'ai choisi SGML pour ce système parce que SGML est spécifiquement fait pour la traduction vers d'autres formats. SGML, qui signifie Standard Generalized Markup Language, vous permet de spécifier la structure d'un document---qui est, quelles sortes de choses constituent le document. Vous spécifiez la structure d'un document avec une DTD (Document Type Definition). Linuxdoc-SGML est une DTD qui spécifie la structure pour les HOWTO Linux et d'autres types de documents. QWERTZ est une autre DTD; le standard SGML fournit des DTD pour des livres, des articles et d'autres types génériques de documents.
La DTD spécifie les noms des ``éléments'' à l'intérieur du
document. Un élément est juste un morceau de structure---
comme une section, une sous-section, un paragraphe, ou même quelque
chose de plus petit comme du
Ne soyez pas troublé par cette analogie, SGML n'est pas un système de formatage de texte. Il n'y a pas de ``formateur SGML''. Le source SGML est seulement convertit vers d'autres formats. De plus, SGML lui-même est utilisé seulement pour spécifier la structure du document. Il n'y a pas de facilités de formatage de texte ou de ``macros'' intrinsèques à SGML. Toutes ces choses sont définies dans la DTD. Vous ne pouvez utiliser SGML sans une DTD---une DTD définit ce que SGML fait.
Voici comment le traitement d'un document avec SGML et une DTD Linuxdoc-SGML
marche. D'abord, il vous faut une DTD. J'utilise la DTD QWERTZ qui à été
produite, à l'origine, par un groupe de personne qui avaient besoin d'une
DTD qui ressemblait à LATEX. J'ai modifié la DTD QWERTZ pour produire la DTD
Linuxdoc-SGML adaptée à nos besoins. La DTD installe simplement la structure
du document. Une petite portion de celui-ci ressemble a ceci:
Cette partie installe la structure générale d'un "article", qui est comme un ``ocumentstyle'' dans LATEX. L'article est constitué d'un titre (titlepag), d'un en-tête optionnel (header), une table des matières optionnelle (toc), des listes de figures (lof) et de tables (lot) optionnelles, un nombre quelconque de paragraphes (p), un nombre quelconque de sections (sect), des appendices optionnels (appendix), une bibliographie optionnelle (biblio), et des notes de bas de page (footnote).
Comme vous pouvez le voir, la DTD ne dit pas comment le document doit être formaté ni à quoi il doit ressembler. Elle définit juste les parties qui constituent le document. Autre part dans la DTD les structures de titlepag, header, sect, et d'autres éléments sont définies.
Vous n'avez pas besoin de savoir quoi que ce soit à propos de la syntaxe de la DTD pour écrire des documents. Je suis juste en train de vous la présenter afin que vous sachiez à quoi cela ressemble et ce que cela fait. Vous avez besoin de vous familiariser avec la structure du document que la DTD définit. Sinon, vous pourriez violer la structure en essayant d'écrire un document, et être très perplexe devant les messages d'erreur qui en resulteraient. Nous décrirons la structure de documents Linuxdoc-SGML en detail plus tard.
L'étape suivante est d'écrire un document en utilisant la structure définie par la DTD. A nouveau, la DTD Linuxdoc-SGML fait beaucoup ressembler les documents à LATEX---c'est tres simple a suivre. Dans le jargon SGML un simple document écrit en utilisant une DTD particulière est connu comme une ``instance'' de cette DTD.
Afin de traduire le source SGML dans un autre format (comme LaTeX ou groff) pour le traitement, le source SGML (le document que vous avez écrit) est analysé avec la DTD par (vous avez deviné) l'analyseur SGML. J'utilise l'analyseur sgmls de James Clark, jjc@jclark.com, qui est aussi l'auteur de groff. Nous sommes entre de bonnes mains. L'analyseur (sgmls) parcourt simplement votre document et vérifie qu'il suit la structure mise en avant par la DTD. Il sort aussi une forme plus explicite de votre document, avec toutes les ``macros'' substituées, ce qui est compris par sgmlsasp, l'étape suivante du processus.
sgmlsasp est responsable de la convertion de la sortie de sgmls en un autre format (comme LaTeX). Il le fait en utilisant des fichiers de remplacement, qui décrivent comment convertir des éléments du document SGML original dans le source correspondant du format ``cible'' (comme LaTeX ou groff).
Par exemple, une partie des fichiers de remplacement pour LaTeX ressemblent à:
Donc, pour convertir du SGML dans un autre format, tout ce que vous avez à faire est d'écrire un nouveau fichier de remplacement pour ce format qui donne les analogies apropriees aux éléments SGML dans le nouveau format. En pratique, ce n'est pas aussi simple---par exemple, si vous essayez de convertir en un format qui n'est pas du tout structuré comme votre DTD, vous allez avoir des problèmes. Dans tous les cas, c'est beaucoup plus simple à faire qu'écrire des analyseurs individuels et des traducteurs pour beaucoup de types de format de sortie; SGML offre un système généralisé pour convertir un source dans beaucoup de formats.
Une fois que sgmlsasp a terminé son travail, vous avez un source LaTeX qui correspond à votre document SGML original, que vous pouvez formater en utilisant LaTeX comme vous le feriez normalement. Plus tard dans ce document je vous donnerai des exemples et je vous montrerai les commandes utilisées pour faire la traduction et le formatage. Vous pouvez faire tout ceci sur une ligne de commande.
Mais d'abord, je dois décrire comment installer et configurer le logiciel.
Récupérez le fichier
linuxdoc-sgml-1.5.tar.gzsur l'un des sites ftp suivants:
Des patches pour la version 1.5 peuvent être trouvés à
Vous pouvez également obtenir une information à jour sur
Le fichier linuxdoc-sgml-1.5.tar.gz contient tout ce dont vous
avez besoin pour écrire des documents SGML et les convertir
vers du groff, LaTeX, HTML, GNU info, LyX et RTF. En plus de ce
logiciel, vous aurez besoin des outils suivants - ceux-ci ne sont pas
requis par le système SGML, mais je suggère que vous
les obteniez afin de formatter vos documents et de vérifier ainsi leur
aspect avant de les distribuer.
Les étapes nécessaires pour installer et configurer
Linuxdoc-SGML sont les suivantes:
Si tout se passe bien, vous êtes alors prêt à utiliser le système.
Nous supposons que vous disposez d'un document SGML foo.sgml que vous voulez formatter. Voici une vue d'ensemble du formatage du document pour différentes sorties. Pour une liste complète des options, consultez les pages de manuel.
Si vous désirez produire une sortie pur ASCII du document,
utiliser la commande:
Note that I have tailored the groff conversion for plain text output. That is, I've removed page headers, page numbers, changed the margins, and so on. Avec quelques modifications vous pouvez produire du PostScript et du DVI à partir de la sortie groff, mais je suggère plutôt d'utiliser LaTeX.
Vous pouvez également créer un source groff pour les pages de manuel,
lequel peut être formaté avec groff -man. Pour faire cela,
exécutez la commande suivante:
Pour créer des documents LaTeX à partir d'un fichier source
SGML, lancez simplement:
Si vous voulez produire une sortie PostScript (via dvips),
utilisez l'option -p:
Ou, vous pouvez produire un fichier DVI en utilisant l'option -d, de la façon suivante:
Si vous voulez produire une sortie HTML, faites ceci:
Si vous utilisez sgml2html sans l'option -img, les documents
HTML auront les labels ``Previous'', ``Next'', et ``Table of
Contents'' pour la navigation. Vous pouvez outrepasser ces valeurs par
défaut en créant un fichier dans
$LINUXDOCLIB/rep/html/<filename>, et en
substituant vos propres mots pour des langages différents. Le fichier
a le format suivant:
Si vous voulez formater votre fichier pour le browser GNU info, lancez
juste la commande suivante:
Pour une sortie LyX, utilisez la commande:
Pour produire une sortie RTF, utilisez la commande:
Si vous voulez juste voir les erreurs de conversion éventuelles dans le source SGML,
utilisez le script sgmlcheck. Par
exemple:
Chacune de ces commandes de conversion possède l'option -h pour afficher les
options disponibles. Par exemple:
L'ensemble de caractères ISO 8859-1 (latin1) peut
être utilisé pour des caractères internationaux
(par exemple les accents français) en sortie pur texte, LaTeX,
HTML, LyX et RTF (le support ISO 8859-1 texinfo peut être possible dans
le futur). Pour utiliser cette caractéristique utilisez
l'option -l avec les scripts SGML, par exemple:
Vous pouvez aussi utiliser les caractères ISO 8859-1 dans le fichier source SGML, ils seront automatiquement traduits vers les codes d'échappements corrects pour le format de sortie correspondant.
Ecrire des documents utilisant la DTD linuxdoc est très simple, et en quelque sorte comme LaTeX. Dans cette section, je donnerai une introduction sur l'écriture de documents SGML. Voir le fichier example.sgml comme document exemple SGML (et tutorial) qui peut être utilisé comme un modèle quand vous écrivez vos propres documents. Ici je vais juste discuter des différentes caractéristiques de SGML, mais le source de ce doucment n'est pas vraiment lisible comme un exemple. Imprimer plutôt le source (ainsi que la sortie formatée) de example.sgml, ainsi vous aurez un cas réel auquel vous référez.
A la lecture du source du document exemple, vous noterez qu'il existe un certain nombre de commandes qui sont inclus entre les caractères < et >. Une commande (ou tag) spécifie le début ou la fin d'un élément. Un élément étant quelque chose comme une section, un paragraphe, un texte en italique, un item dans une liste, etc. Utiliser un tag est comme utiliser une commande LaTeX telle que \item ou \section{...}.
Par exemple, pour produire du
There are other things to watch out with respect to special characters (that's why you'll notice all of these bizarre-looking ampersand expressions if you look at the source; I'll talk about those shortly).
Dans certains cas le tag final pour un élément particulier est optionnel. Par exemple, pour débuter une section on utilise le tag <sect>, le tag final est optionnel et implicite au moment où vous débuter une nouvelle section de même profondeur. En général vous n'avez pas besoin de vous préoccupez de ces détails; suivez juste le modèle utilisé dans le tutorial (example.sgml).
Evidemment les caractères < et > sont eux-mêmes des
caractères spéciaux dans le source SGML. Il y en a d'autres auxquels
il faut faire attention. Par exemple, supposons que vous vouliez taper
une expression avec les crochets angulaires (< et >) qui
l'entourent, tel que: <foo>. Pour obtenir le caractère
<, vous devez utiliser l'élément <, qui est une
``macro'' qui développe le caractère <. Par conséquent, dans le
source, j'ai tapé
Usuellement, vous n'avez pas besoin d'utiliser ces macros pour avoir
un caractère spécial, cependant, en quelques cas c'est nécessaire. Les
macros les plus communéments utilisées sont:
Pour une liste complète des caractères spéciaux, regardez un des fichiers de remplacements. Usuellement LaTeX se plaint le plus au sujet des caractères spéciaux, donc jeter un coup d'oeil au fichier $LINUXDOCLIB/rep/latex/general serait une bonne idée pour commencer. $LINUXDOCLIB est défini au début des scripts de conversion SGML.
Il existent également des entités pour obtenir les accents de la langue française (voir par exemple le fichier /usr/local/lib/linuxdoc-sgml/rep/latin1/general.
Pendant que nous sommes sur le sujet des caractères spéciaux, je fais
mention des ``environnements'' verbatim utilisés pour inclure du texte littéral en sortie
(c'est à dire avec les espaces et indentations
préservées, etc), L'élément verb est utilisé pour cela. Par exemple:
Ceci est un exemple d'environnement code
Vous devriez utiliser l'environnement tscreen autour de chaque
environnement verb, comme ceci:
L'environnement quote est comme tscreen, excepté que
il ne met pas la fonte par défaut à tt. Ainsi, vous pouvez
utiliser quote pour les citations, tel que:
Voici un exemple de texte devant etre indente, comme dans une citation.
Avant d'aller trop loin dans les détails, je vais décrire la structure générale d'un document défini par la DTD Linuxdoc-SGML. Voir example.sgml pour un bon exemple de la façon dont un document est établit.
Dans le ``préambule`` du document, vous établissez des
choses telles que le style de document. Pour un document HOWTO Linux, cela
ressemble à ceci:
Les éléments devraient aller plus ou moins dans cet ordre. La première ligne indique à l'analyseur SGML d'utiliser la DTD Linuxdoc-SGML. Le tag <article> force le document à utiliser le style de document ``article''. (La DTD original QWERTZ définit également ``report'' et ``book'' ; I haven't tweaked these for use with Linuxdoc-SGML).
Les tags title, author et date sont évidents; dans le tag date incluez le numéro de version et la date de dernière modification du document.
Le tag abstract occasionne que le texte soit imprimé au sommet du document, avant la table des matières. Si vous n'incluez pas une table des matières (le tag toc), vous n'avez probablement pas besoin d'un abstract. Je suggère que tous les HOWTO Linux utilisent ce même format pour le préambule, so that the title, abstract, and table of contents are all there and look the same. .
Après le préambule, vous êtes prêts à plonger
dans le document. Cinq niveaux de sections sont disponibles. Les commandes de sectionnement suivantes sont
disponibles:
Après le tag sect (ou sect1, sect2, etc) vient
le nom de la section. Par exemple, au sommet de ce document,
après le préambule, vient le tag:
A la fin du document, vous devez utiliser le tag:
Nous allons maintenant voir d'autres caractéristiques du
système. Les références croisées sont faciles. Par
exemple, si vous voulez faire une référence croisée vers
une certaine section, vous avez besoin d'étiqueter (ou de labéliser) cette
section, avec la commande label, comme suit:
Par exemple, cette section est
Il y a aussi un élément url pour Universal Resource
Locators, ou URLs, utilisées sur le World Wide Web. Cet
élément doit être utilisé pour
référer à d'autres documents, fichiers
disponibles par FTP, etc. Par exemple:
Par exemple, vous pouvez obtenir le package Linuxdoc-SGML sur
Une variante utile de ceci est htmlurl, qui supprime l'affichage de la
partie URL dans chaque contexte excepté HTML. Ce qui est utile
pour des choses comme les adresses email des personnes, vous pouvez
écrire:
Essentiellement, les mêmes fontes supportées par LaTeX sont supportées par linuxdoc-sgml. Note, however, that the conversion to plain text (through groff) does away with the font information. Les fontes n'apparaitront pas dans le texte ASCII. Donc, vous devriez utiliser les fontes autant que possible, pour le bénéfice de la conversion vers LaTeX. But don't depend on the fonts to get a point across in the plain text version.
En particulier, le tag tt décrit ci-dessus peut être
utilisé pour obtenir une fonte ``typewriter'' de largeur
constante qui devrait être utilisé pour toutes les
adresses email, les noms de machines, les noms de fichiers, etc.
Exemple:
D'autres fontes peuvent être obtenues avec bf pour
Il existe plusieurs sortes de listes supportées. Ce sont:
Une liste descrip est légèrement
différente, et légèrement laide, mais vous
voudriez peut-être l'utiliser pour quelques situations:
Linuxdoc-SGMLa été installé au bocal sur la machine droopy. Les binaires se trouvent dans /usr/local/bin, les librairies (valeur de la variable $LINUXDOCLIB) sont dans /usr/local/lib/linuxdoc-sgml, et enfin de la documentation (dont la version originale de ce document) sur Linuxdoc-SGML sont disponibles dans /usr/local/doc/linuxdoc-sgml. Les sources, si vous voulez installer le système chez vous, se trouvent dans /home/mad/public/Sgml/linuxdoc-sgml-1.5.tar.gz (ces sources seront bientôt installées sur le serveur ftp de droopy).