Traitement de documents avec groff et mom

Gazette Linux n°107 — Octobre 2004

Peter Schaffter

Article paru dans le n°107 de la Gazette Linux d'octobre 2004.

Traduction française par Joëlle Cornavin .

Relecture de la traduction française par Encolpe Degoute .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières
1. Traitement de documents
2. groff
3. mom
4. Tutoriel : création d'un document avec mom
5. Comment obtenir mom ?

1. Traitement de documents

Quand vous utilisez un traitement de texte moderne, le moniteur de l'ordinateur vous montre une représentation permanente de ce que vous écrivez dans sa forme imprimée finale. Chaque fois que vous voulez changer une police ou augmenter la taille du type ou resserrer une ligne, vous mettez généralement en surbrillance une portion de texte, pointez votre souris sur un élément de menu, sélectionnez l'opération à effectuer, puis vous spécifiez le changement dans un autre menu. La modification apparaît aussitôt.

Le traitement de documents diffère du traitement de texte en ce sens que quand vous écrivez, vous utilisez un éditeur de texte, un programme qui fournit de puissants outils pour éditer le texte lui-même — ces outils n'entrent pas dans le cadre des traitements de texte — mais ne vous montre pas de représentation du document imprimé. Le formatage et la composition sont réalisés non par pointer-cliquer, mais en imbriquant des commandes écrites dans le texte. Lorsque vous avez fini d'écrire, vous pouvez voir un aperçu du document avec un petit programme (comme gv ou ghostview) dont la seule fonction est d'afficher ce à quoi ressemble la version imprimée.


2. groff

Pour de nombreux Linuxiens — programmeurs et utilisateurs finaux — groff commence et finit avec les pages de man. Il est est alors surprenant de découvrir que groff est vraiment un moteur de formatage et de composition puissant, capable de produire des sorties PostScript, TeX DVI et HTML en plus de la copie formatée du terminal (c'est-à-dire les pages de man).

groff a une très longue histoire, qui remonte au tout début d'Unix. Par comparaison, TeX — l'autre acteur majeur du traitement de documents sous Linux — est un nouveau venu. TeX et groff sont deux réalisations monumentales, qui se chevauchent considérablement dans tout leur fonctionnement, mais elles sont une différence majeure : leur taille. Une installation de TeX même minime est énorme comparée à groff.

Nombreuses sont les personnes qui acceptent la taille de TeX parce qu'elles croient de manière erronée qu'il produit une composition de qualité supérieure à groff. Bien que cela ait pu être vrai autrefois, ce n'est tout simplement plus le cas à présent et ce, depuis un certain temps. En tant que moteur de composition, groff est superbe.

groff a un handicap, cependant : son extrême complexité. En raison de sa longue histoire et de ses utilisateurs chevronnés, il semble bloqué hors du temps. Les ensembles de macros classiques de groff (les ensembles de macros sont l'interface primaire de l'utilisateur final à groff) ressemblent toujours à ce qu'elles étaient dans ces décennies où la mémoire coûtait un prix exorbitant et où chaque octet comptait. Leurs commandes laconiques à deux lettres ont tendance à effrayer les utilisateurs, de même que la somme de connaissances sur groff lui-même exigée pour pouvoir l'employer efficacement.

C'est alors que mom entre en scène.


3. mom

mom est présent depuis deux ans environ. Sa mission est simple : mettre la composition et le traitement de documents avec groff à la portée de tous, les experts comme les novices. La tâche a été facilitée :


4. Tutoriel : création d'un document avec mom

mom est en fait deux ensembles de macros en un. Pour le typographe, il fournit une suite d'outils modelées sur les commandes utilisée par les machine de photocomposition « dédiés ». Pour le rédacteur, il offre des « balises » de traitement de documents qui génèrent automatiquement des en-têtes, sous-entêtes, paragraphes, citations, notes de bas de page et de fin, tables des matières, etc. formatés avec élégance. Dans ce tutoriel, comme nous configurerons un essai universitaire, l'accent sera mis sur le traitement de documents, non la composition.

En tout premier lieu, les « règles » :

Commencez votre document mom en saisissant quelques informations de référence : titre, sous-titre, auteur(s), etc. que mom utilise pour créer des pages de couverture (si vous le souhaitez), définir des titres de document et générer des en-têtes ou des pieds de page.


.TITLE    "Stretched to the Breaking Point"
.SUBTITLE "Cadential Ambiguity in Wagner, Mahler and Strauss"
.AUTHOR   "Jane Dearborne"

Indiquez ensuite à mom quel type de document vous créezn si c'est un brouillon ou une copie finale, et si vous voulez que le document soit composé ou « dactylographié ».


.DOCTYPE    DEFAULT
.COPYSTYLE  FINAL
.PRINTSTYLE TYPESET

.DOCTYPE DEFAULTet .COPYSTYLE FINAL sont optionnels (parce que ce sont des paramètres par défaut de mom). Cependant, .PRINTSTYLE TYPESET ne l'est pas. Tous les documents mom qui doivent être formatés avec les balises de traitement de documents doivent contenir une directive .PRINTSTYLE.

Démarrez ensuite le traitement du document avec la seule macro requise, .START.

Vous êtes sur la bonne voie. Commencez chaque paragraphe par .PP, sur une ligne propre, suivie du texte du paragraphe, comme suit :


.PP
Lorem ipsum dolor sit amet...

Si vous avez besoin d'un titre principal, saisissez .HEAD, suivi du texte du titre, sur la même ligne et entouré de guillemets :


.HEAD "Wagner: Lohengrin to The Ring"

Les sous-titres sont réalisés d'une manière similaire :


.SUBHEAD "The Pull Toward Flat Six"

Si vous devez insérer un passage cité dans les travaux d'un autre auteur, entourez simplement le passage en question à l'aide de la macro .BLOCKQUOTE.


.BLOCKQUOTE
At vero eos et accusam et justo duo dolores...
.BLOCKQUOTE OFF

S'il vous faut des notes de bas de page, imbriquez-les dans le corps du document, comme suit :


In 1890, Alma\c
.FOOTNOTE
Mahler's wife; later married to Walter Gropius of Bauhaus fame,
then again to writer, Franz Werfel.
.FOOTNOTE OFF
is reported to have...

Notez l'emploi de \c dans la première ligne, ci-dessus. Les notes de bas de page (et les notes de fin de texte) exigent un \c pour pouvoir attacher des marqueurs (astérisques, croix, nombres élevés à une puissance, etc.) aux fins de mots.

Continuez de cette façon jusqu'à la fin du document, qui, si vous utilisez des notes de fin de texte, se termine par la macro unique .ENDNOTES.

mom est conçu pour produire une sortie PostScript (pour envoyer directement à une imprimante ou enregistrer dans un fichier .ps) ; le « périphérique » par défaut de groff étant PostScript, vous devrez traiter le fichier, sur la ligne de commande, avec :



groff -mom -l <nom_de_fichier>

ou :



groff -mom <nom_de_fichier> | lpr

pour envoyer le fichier vers une imprimante, ou :



groff -mom <nom_de_fichier> > <nom_de_fichier>.ps

pour l'enregistrer dans un fichier. D'une façon ou de l'autre, vous finirez par obtenir un document A4 d'aspect professionnel, justifié en Times Roman à 12,5 sur 16 (les valeurs par défaut de mom).

Ce que ce petit tutoriel ne montre pas, c'est le degré de contrôle que permet mom sur la conception des documents. Toutes les balises de traitemnet du document comportent des macros de « contrôle » globales qui permettent, au minimum, de changer la famille, la police, le corps et la couleur de n'importe quelle balise. Là où c'est approprié, mom fournit des macros de contrôle additionnelles pour les aspects concernant la direction des cadratins, l'espacement des lignes, le soulignement, l'emploi des majuscules, l'indentation, le style de numérotation, etc. Utilisé conjointement avec les macros de composition de mom, les macros de contrôle vous permettent de concevoir virtuellement chaque partie d'un document selon des spécifications et préférences précises.


5. Comment obtenir mom ?

Du fait que mom fait partie de groff depuis ces deux dernières années, vous l'avez déjà si vous avez une version récente de groff (1.18 ou ultérieure).

Toutefois, mom étant développé indépendamment de groff, vous aurez probablement besoin d'une version plus aboutie que celle que vous avez obtenue la dernière fois que vous avez mis à jour groff.

Il y a deux manières d'obtenir un mom à jour : soit aller directement sur la page d'accueil de mom pour télécharger la dernière version, soit récupérer le tout dernier groff dans le référentiel CVS de groff (voir les instructions ici) et compiler groff à partir du source. Comme les correctifs et améliorations de mom sont toujours appliqués au référentiel de groff avant toute nouvelle version, l'une de ces méthodes vous garantit la version la plus récente. Au moment de l'écriture de cet article, il s'agit de la version 1.2. Pour vérifier le numéro de version de votre mom actuel, cherchez le fichier de macro, om.tmac, puis descendez à la ligne 26.

Notez que mom nécessite que vous exécutiez au moins la version 1.18 de groff et, pour une utilisation optimale, la version 1.19.2 ou supérieure.

Les mots « groff » ou « mom » doivent apparaître sur la ligne Sujet de tout message électronique envoyé à cette adresse, sinon il sera rejeté.

Peter Schaffter est pianiste classique, auteur-compositeur régional et typographe professionnel reconverti en écrivain dont le roman, « The Schumann Proof » (publié par RendezVous Press, au Canada), sortira fin 2004.

Ardent défenseur du Logiciel libre, il est également le créateur de l'ensemble de macros mom pour groff. mom est la manière de Peter de dire merci à la communauté des développeurs open source qui ont permis, en dépit de son état perpétuellement pauvre, de mettre les mains dans quelques-uns des outils informatiques les plus puissants de la planète. mom reflète également son intérêt pour la documentation logicielle, un sujet qu'il considère de première importance dans le développement de l'open source. Inversant la procédure normale de développement, il a écrit une grande partie de la documentation de mom avant d'implémenter le code. « Une première vulnérabilité de l'utilisateur à un programme est habituellement la documentation », dit-il, « donc pourquoi ne pas se la procurer d'abord ? En outre, créer un programme conforme aux documents préécrits est un très bon moyen de s'assurer qu'il se comporte comme prévu. »