Contenu | Rechercher | Menus

groff

Comme l'indique son logo, Groff est le logiciel de typographie de GNU, et permet de mettre en forme des textes. C'est un logiciel de type WYSIWYM: la mise en forme du texte s'effectue à l'aide de balises (ou requêtes) placées avec adresse dans un fichier d'entrée, celles-ci sont exécutées ensuite par la commande groff et le texte mis en forme apparaît alors dans un fichier de sortie. Groff s'utilise donc de manière analogue à latex.

Le fichier de sortie peut avoir différents formats: .ps, .pdf, .html, .dvi.

Groff tourne essentiellement sur les systèmes UNIX, mais on trouve sur le site officiel une version installable sur Windows.

Groff, qu'on appelle aussi GNU-Troff, a une longue histoire que vous pouvez lire ici

Pré-requis

Pour l'installer:

Installation

Même si vous ne l'avez pas encore installé, groff est déjà présent sur votre machine de manière rudimentaire (groff-base). Vous pouvez vous en convaincre en copiant-collant la commande suivante dans votre terminal.

echo un petit texte de votre choix | groff > petitexte.ps

La commande echo édite le texte qui la suit.
Le "pipe" | redirige le texte sur groff.
Groff fait de votre texte un fichier au format .ps (qui est l'ancêtre de .pdf). Vous pourrez alors récupérer petitexte.ps dans votre répertoire personnel.

Pourquoi cette présence discrète de groff sur votre machine? Tous ceux/celles qui utilisent les commandes Unix connaissent bien les pages man. Bon nombre d'entre elles ont été rédigées à l'aide de groff, et c'est donc lui qui nous permet de les lire.

Cette installation rudimentaire ne permet pas encore de vraiment mettre des textes en forme. Si vous voulez profiter de toutes ses fonctionnalités,

* Installez le paquet groff.

Une fois installé, groff n'apparaît dans aucun menu déroulant et c'est normal. C'est en l'utilisant en ligne de commande avec ses options que vous pourrez vérifier que l'installation a eu lieu.

Groff pas à pas

Groff demande à son utilisateur une bonne dose de "prise en main". Faciliter cette prise en main est le but de cette page de doc. Elle devrait permettre à un utilisateur moyen, formé à la ligne de commande, de faire ses premiers vols d'essai dans ce logi-ciel :-) .

Ce chapitre vous montre les différentes manières de l'utiliser:

  • dans un terminal,
  • dans un éditeur de texte en console
  • dans un éditeur de texte sur interface graphique

Le terminal

Revenons à notre premier exemple et modifions-le un peu:

echo un petit poème | groff > poem.ps

Si vous avez utilisé des caractères accentués ou spéciaux tels que le "ç", vous aller retrouver dans votre fichier de sortie poem.ps des signes kabalistiques! Ne vous en faites pas: il suffit d'ajouter l'option -k.

echo un petit poème | groff -k > poem.ps

L'option -k fait appel à preconv, un logiciel qui préconvertit les caractères spéciaux en quelque chose que groff peut comprendre. (Pour en savoir plus: man preconv).

À l'aide de la commande printf, nous pouvons à présent formater un petit texte de plusieurs lignes. Ici un élément fondamental: par défaut, groff ne tient pas compte des changements de ligne, \n permet de spécifier que vous voulez un changement de ligne à tel endroit. Supprimez les \n, et groff écrira les 4 vers bout à bout sur une ligne.

printf ' \n \n \n 
la jument de Michao\n 
et son petit poulain\n 
a passé dans le pré\n 
et mangé tout le foin' | groff -k > Michao.ps

Au lieu de .ps, vous pouvez demander un autre format.: .pdf, .html ou .dvi

Au lieu de l'envoyer sur un fichier .ps (ou autre), nous pouvons aussi en avoir un aperçu avec l'option -X (gxditview).

printf ' \n \n \n 
la jument de Michao\n 
et son petit poulain\n 
a passé dans le pré\n 
et mangé tout le foin' | groff -k -X

En cliquant gauche sur l'aperçu, nous pouvons diriger le fichier sur l'imprimante (choisir "print" puis "grops | lpr").

Nous pouvons aussi le diriger directement sur l'imprimante.

printf ' \n \n \n 
la jument de Michao\n 
et son petit poulain\n 
a passé dans le pré\n 
et mangé tout le foin' | groff -k | lp 

lp redirige le fichier sur l'imprimante.

Le terminal permet de faire des petits essais sur des textes courts, mais, comme il y est impossible de revenir à la ligne précédente, il ne permet pas de modifier un texte après coup. Pour formater des textes plus longs nous avons besoin d'un éditeur de texte.

L' éditeur de texte

en console

Ce que nous venons de faire dans le terminal vous à peut-être mis la puce à l'oreille: avec groff nous sommes à même de formater des documents sans interface graphique 8-) 8-) 8-).

Comment? Ça ne vous tente pas de faire du traitement de texte en console :-O ?
Passez dans ce cas directement au chapitre 3.3.

Si ça vous tente, choisissez un des deux éditeurs de texte qui fonctionnent en console: nano ou vim.

nano

En principe, nano est déjà installé sur Ubuntu. Un apprentissage rapide est possible en lisant la doc nano, ou en regardant la 2e moitié de cette vidéo.

Si vous êtes prêt(e), vous pouvez imprimer ce sous-chapitre, et rendez-vous en console par Ctrl+Alt+F1.

Après avoir renseigné les informations de login, lancer nano avec la commande

nano

Se déplacer dans nano à l'aide des flèches.

Vous pouvez entrer par exemple les 4 petites lignes dans l'encadré ci-dessous:
(Commencer par 3-4 lignes vides, pour que le texte soit bien cadré.)

Dans un éditeur de texte, \n n'est plus de mise pour changer de ligne. Si vous voulez rédiger quelques vers, commencez chaque ligne par un signe "espace", groff mettra alors le texte sur 4 lignes.

 


 l'hiver viendra et quand
 l'hiver viendra
 la jument de Michao
 elle s'en repentira

Ressortez de nano avec ctrl+x .

Enregistrez le fichier, comme demandé.

Nommez-le, comme demandé, par ex. "hiver".

Vous retrouvez le prompt où vous pouvez lancer la commande

groff -k hiver | lp 

L' aperçu gxditview (par l'option -X) ne fonctionne évidemment pas en console. Le seul moyen de voir votre fichier de sortie est donc de l'imprimer.

Retour sur la session graphique par Ctrl+Alt+F7.

vim

Vim n'est pas installé par défaut sur Ubuntu. Pour l'installer et apprendre à l'utiliser, lisez la doc vim, ou le chapitre 16 de http://formation-debian.via.ecp.fr/.

Si vous êtes prêt(e). Imprimez ce sous-chapitre et rendez-vous en console par Ctrl+Alt +F1.

Après avoir renseigné les informations de login, lancez vim avec la commande

vim

Par la touche "Insert" de votre clavier, vous accédez au mode INSERTION (confirmation en bas à gauche de l'écran). Vous pouvez alors entrer votre texte. Si vous cherchez un exemple; reprenez les 4 lignes proposées pour nano ci-dessus.

Une fois le texte entré, retournez en mode commande par "Échap" (ou "Esc").

Enregistrez votre texte et nommez le avec :w nom_de_fichier. Par ex. "hiver".

Quittez vim avec :q. Vous retrouvez le prompt où vous pouvez entrer la commande groff:

groff -k hiver | lp 

L'aperçu gxditview (par l'option -X) ne fonctionne évidemment pas en console. Le seul moyen de voir votre fichier de sortie est donc de l'imprimer.

Retour sur la session graphique par Ctrl+Alt+F7

en mode graphique

C'est certainement la manière classique d'utiliser groff. Pour garder une certaine clarté, répartir le travail sur 3 bureaux virtuels. Sur le premier bureau, votre éditeur de texte ( gedit, mousepad, leafpad…) où vous pouvez taper votre texte d'entrée. N'oubliez pas d'enregistrer le texte d'entrée et de nommer le fichier d'entrée. Le plus pratique est de placer votre fichier d'entrée dans votre répertoire utilisateur.

Sur un deuxième bureau virtuel, ouvrez un terminal où vous transformez votre fichier d'entrée avec la commande groff.

groff votre_fichier > votre_fichier.ps

Sur le troisième bureau virtuel, allez dans votre répertoire personnel, vous y trouverez votre_fichier.ps, que vous pouvez lire avec le visionneur de documents.

Le tout en image. Ici, le fichier s'appelle "michao".

Si vous avez des corrections à apporter, retournez sur le premier bureau virtuel, apportez vos corrections, enregistrez. Sur le deuxième bureau, repassez la commande groff. Vos corrections passent sur le fichier de sortie sans qu'il soit nécessaire de fermer et de réouvrir celui-ci 8-).

Si vous avez commis des erreurs, groff vous le signalera en indiquant le No de la ligne concernée. Il convient donc d'activer la numérotaiton des lignes dans l'éditeur de texte que vous utilisez. Groff n' indique bien sûr que les erreurs de commandes, pas les erreurs d'orthographe ou de grammaire. En cas de pépin dans le terminal, Ctrl+c donne un nouveau prompt.

où placer le fichier?

Par défaut, groff travaille dans le répertoire courant. Il est donc pratique de placer les fichiers sur lesquels vous travaillez dans votre dossier personnel, plus précisément à la racine de celui-ci et non dans un sous-répertoire.

Si vous voulez placer vos fichier destinés à groff ailleurs, par exemple dans le sous-répertoire "Documents", deux solutions se présentent:

1. Indiquer à groff le chemin complet du fichier, par ex.

groff /home/utilisateur/Documents/votre_fichier > /home/utilisateur/Documents/votre_fichier.ps

Ce qui fait quand même de longues commandes à taper :-\ .

2. Se placer dans le sous-répertoire voulu avec la commande cd.

cd /home/utilisateur/Documents
groff votre_fichier > votre_fichier.ps

Ayant achevé votre travail, quitter le sous répertoire avec

cd

gedit

L'avantage de gedit est qu'il offre une console intégrée en-dessous de la fenêtre d'édition. Cela vous permet de travailler sur deux bureaux virtuels seulement au lieu de trois.

Pour avoir la console intégrée, installez tout d'abord gedit-plugins
Puis ouvrez gedit:
Edition > Préférences > Greffons, cochez "Terminal intégré"
Ensuite allez à "affichage" et cochez "panneau inférieur".

Gedit avec console intégrée:

Une fois la console installée, il est possible de copier-coller les commandes par clic droit sur celle-ci. Cela peut être pratique quand on effectue des corrections et que l'on répète une commande plusieurs fois d'affilée.

Il est possible que votre terminal intégré écrive blanc sur blanc, ce qui n'est pas très lisible. Il y a de quoi réparer ce bug ici: http://askubuntu.com/questions/67593/make-gedit-embedded-terminal-colours-the-same-as-the-default-terminal. Veillez à faire rigoureusement ce qui est décrit. Abstenez-vous si vous n'êtes pas tout à fait sûr(e) d'avoir compris.

Un autre avantage de gedit est qu'il peut vérifier l'orthographe: Outils > Vérification orthographique.

emacs

Sur emacs, la situation ressemble à celle de gedit. Taper simplement le texte d'entrée sur un nouveau fichier, enregistrez et nommez le fichier. Ensuite par Tool > shell command, il est possible, sans rien avoir installé, d'avoir une console intégrée sous la fenêtre de l'éditeur de texte. Là, vous pouvez taper votre commande groff et récupérer le fichier de sortie dans votre dossier personnel.

Par "Tool > shell command on Region" il est même possible d'appliquer la commande groff à une sélection seulement. Il n'est même pas nécessaire de mettre la sélection en argument de la commande groff, entrez simplement

groff  > sel.ps

et récupérez le fichier sel.ps dans votre dossier personnel.

Requêtes générales

Nous sommes prêts maintenant à formater des textes. Pour commencer, il sera très utile de connaître les requêtes générales, qui sont valalbles quelque soit la "boîte à outils" que vous choisirez (Voir cap, 5). Ces requêtes générales permettront déjà entre autre de

  • varier la taille ou la police de caractère
  • sauter une ou plusieurs lignes
  • justifier ou non les lignes
  • indenter le texte
  • changer l'espacement des lignes

Elles sont décrites au chapitre 4 de cet ouvrage:
UTP [en]
Comme groff est un troff (GNU-troff), vous pouvez sauter tous les passages relatifs à nroff, ditroff…

A partir d'ici, les balises (requêtes) seront indiquées en caractères machines comme ceci

.

Polices

Comment changer la police de caractères dans groff? Cette question mérite d'être développée un peu. Tout d'abord, il existe une dizaine de familles de polices. Par famille de police (font-family), on entend: une police normale (Roman), sa variante en gras (Bold), sa variante italique (Oblique) et bien sûr sa variante gras-oblique (BoldOblique). Si vous choisissez la famille Palatino, la famille est consitiuée de :

  • PR: Palatino-Roman
  • PB: Palatino-Bold
  • PI: Palatino-Italic
  • PBI: Palatino_BoldItalic

Vous trouverez la description complète des polices disponibles dans:
usr/share/doc/groff/examples/hdtbl/fonts_x.ps.gz

Dans votre texte, vous pouvez à tout moment changer de police avec la balise .ft.

Changer de famille de polices

Si vous voulez par exemple, passer en helvetica, entrez la balise .ft HR. Pour retourner à la police par défaut entrez .ft p.

Changer de variante en restant dans la même famille

À l'intérieur d'un mot ou d'une phrase, vous pouvez changer à l'intérieur d'une famille à l'aide d'une séquence d'échappement . Pour passer en carctères gras \fB et pour retourner sur "roman" \fP

Choisir sa boîte à outils

Ce chapitre présente les "outils" qui vont vous rendre véritablement capable de donner forme à un texte: faire des titres, des chapitres, des sous-chapitres, faire des notes en bas de pages, des en-têtes, des références, etc..

Il y a 5 "boîtes à outils" à choix: -me, -ms, -mm, -mom ou -man. On les appelle aussi "paquets de macros". Les macros sont des macro-instructions indiquant au système comment formater un texte. Un paquet de macros est un ensemble de macro-instructions cohérent, permettant de formater des textes.

Maîtriser une de ces 5 "boîte à outils" vous suffira amplement. Deux d'entre-elles sont bien documentées en français, d'autres malheureusement ne le sont pas encore…Choisissez celle qui vous correspond le mieux!

-me

Paquet classique, bien documenté, conçu pour rédiger des documents universitaires.

Le document suivant vous permettra d'apprendre les principaux outils de -me: http://git.savannah.gnu.org/cgit/groff.git/tree/doc/meintro_fr.me/ [fr]
Pour obtenir ce document, copiez-en les lignes 1 à 2268. Collez-les dans votre éditeur de texte. Nommez-le meintro_fr.me. Appliquez la commande

groff -me -k -t meintro_fr.me > meintro_fr.ps

Récupérez meintro_fr.ps dans votre dossier personnel et imprimez-le si vous le désirez.

À partir de la version 1.22 de groff, meintro_fr.ps sera livré avec le paquet groff. Vous le trouverez sur votre machine sous
/usr/share/doc/groff
ou, si vous êtes sur une autre distribution, avec la fonction de recherche.

Ajouter l'option -me à votre commande groff:

groff -me foo > foo.ps

À partir d' ici, votre fichier s'appelle simplement "foo".

Pour aller plus loin avec -me, vous trouverez au même endroit meref.ps, qui est la reférence de -me [en].

-ms

Lettres, livres, rapports techniques. Les requêtes -ms sont décrites au chapitre 5 de
UTP [en].

Ajouter l'option -ms à votre commande groff:

groff -ms -k foo > foo.ps

-mm

Lettres, mémos, rapports techniques. Les requêtes -mm soint décrites au chapitre 6 de
UTP [en].

Ajouter l'option -mm à votre commande groff:

groff -mm -k foo > foo.ps

-mom

Très général, largement configurable, conçu entre autres dans le but de rédiger un roman, -mom est un bon choix pour tout ceux qui trouvent les paquets de macros traditionnels trop austères.

On en trouve une courte présentation en français ici .

Pour apprendre à travailler vraiment avec -mom, c'est ici [en].

Ajouter l'option -mom à votre commande groff

groff -mom -k foo > foo.ps

-man

Est spécialement conçu pour créer des pages man. Quelques liens utiles [fr]:

Ajouter l'option -man à votre commande groff

groff -man -k foo > foo.ps

Intégrer des éléments graphiques

tableaux

Vous pouvez inclure des tableaux à l'aide du logiciel tbl. Vous trouverez la documentation sur eqn à cette adresse
www.cs.bell-labs.com/10thEdMan/tbl.pdf [en]

ou au chapitre 8 de UTP [en]

Pour séparer les colonnes, on utilise un caractère spécial tel que @, |, &… pourvu qu'il ne soit pas utilisé à l'intérieur des cellules. Notez bien que c'est à vous de définir, en début de fichier, quel caractère va fonctionner comme tabulateur. Si par exemple, vous avez choisi @ , entrez
tab (@);
au début du fichier d'entrée, tout de suite après .TS.

Si vous avez utlisé tbl, ajoutez l'option -t à votre commande groff.

groff -me -k -t foo > foo.ps

Vous pouvez bien sûr remplacer -me par un autre paquet de macros.

formules de maths

Vous pouvez inclure des formules mathémathiques dans votre texte grâce au pré-processeur eqn. Son fonctionnement est expliqué dans ce document
www.kohala.com/start/troff/v7man/eqn/eqn2e.ps [en],
ou au chapitre 9 deUTP [en]

Si vous avez utlisé eqn, ajoutez l'option -e à votre commande groff.

groff -me -k -e foo > foo.ps

images

produire des images: pic

Vous pouvez produire vous-même des images à l'aide du logiciel pic. La doc se trouve sur votre machine dans le document pic.ps.gz sous /usr/share/doc/groff ou encore au chap. 10 de UTP [en]

Intégrer une image

Pour intégrer une image dans votre texte, il faudra tout d'abord la convertir au format .eps.

En ligne de commande

Sans rien installer:

convert image.png image.eps

vous pouvez remplacer .png par tout autre format d'image. Placez l'image dans votre dossier personnel.

Méthode graphique
  1. Installer ImageMagick.
  2. Clic droit sur l'image. "Ouvrir votre image avec ImageMagick".
  3. Une fois l'image ouverte, cliquer dessus: Commands > Enhance > Map.
  4. Choisir un nom pour l'image ainsi que le nouveau format (.eps).

Intégrez ensuite votre image au texte grâce à la requête .PSPIC:
 .PSPIC image.eps.

Pour que groff tienne compte de votre image, le fichier image.eps devra être situé dans le répertoire personnel.

Souvent, il sera pratique d'inclure l'image dans un clos (keep) ou un bloc pour pouvoir la placer dans le texte avec précision.

Si vous avez eu recours à pic ou à la requête .PSPIC, ajoutez l'option -p à la commande groff:

groff -me -k -p foo > foo.ps

formules chimiques

Vous pouvez aussi intégrer à votre texte des formules chimiques. Vous trouverez la documentation à cette adresse
http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz [en]

Sur votre machine dans /usr/share/doc/groff/examples/chem, vous trouverez un tas d'exemples de fichiers d'entrée pour chem.

Si vous avez eu recours à chem, ajoutez l' option -j à la commande groff:

groff -me -k -j foo > foo.ps

gremlin

Ce logiciel sert surtout à dessiner des schémas électroniques. La seule documentation disponible à son sujet: man grn, ou alors ici

Vous trouverez un exemple de fichier d'entrée et de sortie sous /usr/share/doc/groff/examples

Si vous avez eu recours à grn, ajoutez l' option -g à la commande groff

groff -me -k -g foo > foo.ps

Astuces groff

Grouper les options

Les logiciels décrits au chapitre précédent sont des préprocesseurs. Les options de la commande qui s'y rapportent peuvent être regroupées. Vous pouvez simplifier

groff -me -k -p -t foo > foo.ps

en

groff -me -kpt foo > foo.ps

Par contre, pas question d' y mêler en plus l'option principale (ici: -me).

Identifier un fichier d'entrée: grog

Si vous êtes en possession d'un fichier d'entrée et que vous ignorez les options permettant de le convertir en fichier de sortie, passez-le par la commande grog:

grog foo

Grog vous indique alors quelles options sont nécessaires à sa conversion.

Conversion automatique: groffer

La commande groffer convertit votre fichier d'entrée directement en .pdf:

groffer foo

Toutefois il n'active pas automatiquement l'option -k. Donc, pour un texte contenant des accents et des signes particuliers:

groffer -k foo

Groffer ne tient pas compte de certaines séquences d'échappement (par exemple \f I). Utilisez-le avec des fichiers d'entrée ne contenant que des balises ordinaires (par exemple .ft I), et en contrôlant avec soin le fichier de sortie. Groffer ne produit que du pdf, inutile d'exiger un autre format de sortie. Le pdf que vous obtenez n'est pas encore enregistré dans votre répertoire personnel.

pdf

Vous pouvez transformer votre fichier d'entrée directement en pdf.

groff -me -kpt foo > foo.pdf

Il faut simplement savoir que Adobe Reader ne lit pas ce genre de pdf, donc votre pdf ne pourra pas être lu sur un système Windows 8-O.
Il y a naturellement une astuce pour régler ce problème: commencez toujours par produire un fichier de sortie au fomat .ps. Vous le transformerez par la suite à l'aide de la commande ps2pdf14. Donc si votre fichier .ps s'appelle foo.ps

ps2pdf14 foo.ps 

Et vous récupérez le .pdf dans votre répertoire personnel.

Pour aller plus loin

Les utilisateurs de groff se retrouvent et s'entraident sur la liste de distribution.

Sans être abonné à la liste de distribution, on y trouvera de l'aide en fouillant ses archives.

Pour apprendre à définir ses propres macros dans groff, lire le chapitre 14 de UTP [en]

Désinstallation

Pour supprimer le paquet groff, voir supprimer un paquet.
Ne touchez pas à groff-base, qui vous permet le lire les pages man.

Groff l'ent

Comme vous avez pu le voir, groff est un logiciel qui se développe dans le long terme. Il est enraciné dans des logiciels plus anciens (RUNOFF, roff, troff…), mais aussi très ramifié, touffu, avec ses variantes -me, -ms, -mm, -mom, -man, ses préprocesseurs (tbl, eqn …) et ses logiciels auxiliaires (grog, groffer…) .

Il est accessible seulement à ceux qui sont prêts à lui consacrer assez de temps.

D'une très grande discrétion, n'apparaissant dans aucun menu déroulant, il se confond avec le paysage, et se contente de très peu de ressources. Néanmoins, d'après ses utilisateurs, c'est un outil très puissant.

Il y en a assez pour nous faire penser aux ents de Tolkien.
On pourrait donc qualifier groff de logiciel entique ;-) .

Liens



Le contenu de ce wiki est sous licence : CC BY-SA v3.0