« Utiliser groff » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (mise en page)
 
(8 versions intermédiaires par 6 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Introduction ==
== Introduction ==
Comme Monsieur Jourdain fait de la prose, la plupart des nouveaux utilisateurs et utilisatrices de notre OS libre préféré utilisent un puissant outil de formatage et génération de documents. Cet outil a tendance à se faire oublier, tellement il est discrêt malgré sa participation vitale au quotidien de tout utilisateur ou utilisatrice, et cela concerne même les plus chevronné(e)s. Cet outil, c'est <code>groff</code>
Comme Monsieur Jourdain fait de la prose, la plupart des nouveaux utilisateurs et utilisatrices de notre OS libre préféré utilisent un puissant outil de formatage et génération de documents. Cet outil a tendance à se faire oublier, tellement il est discret malgré sa participation vitale au quotidien de tout utilisateur ou utilisatrice, et cela concerne même les plus chevronné(e)s. Cet outil, c'est <code>groff</code>


== Que peut-on faire avec groff ? ==
== Que peut-on faire avec groff ? ==
Ligne 13 : Ligne 13 :
Au départ, cet environnement de formatage de documents appelé '''troff''' a été développé en assembleur par Joe Ossanna vers 1973, pour piloter une imprimante graphique (Graphic System CAT Typesetter) branchée sur un bon vieux PDP-11. Il fut porté en C vers 1975, mais malheureusement, Joe Ossanna décède en 1977.
Au départ, cet environnement de formatage de documents appelé '''troff''' a été développé en assembleur par Joe Ossanna vers 1973, pour piloter une imprimante graphique (Graphic System CAT Typesetter) branchée sur un bon vieux PDP-11. Il fut porté en C vers 1975, mais malheureusement, Joe Ossanna décède en 1977.


C'est le célèbre Brian Kernighan qui reprend le flambeau en 1979 et modifie '''troff''' afin de le rendre compatible avec d'autres formats de sortie. de 1979 à 1989, les sources de '''troff''' ont été modestement retouchées de manière à laisser la quasie totalité du code intacte en mémoire de Joe Ossanna.  
C'est le célèbre Brian Kernighan qui reprend le flambeau en 1979 et modifie '''troff''' afin de le rendre compatible avec d'autres formats de sortie. de 1979 à 1989, les sources de '''troff''' ont été modestement retouchées de manière à laisser la quasi totalité du code intacte en mémoire de Joe Ossanna.  


'''groff''' est donc en quelque sorte une oeuvre postume  trouvant ses d'origines à quelques pas de l'OS '''UNIX'''. Cet utilitaire extrèmement efficace est aujourd'hui porté sur les systèmes d'exploitations les plus novateurs tels que '''plan 9''', '''inferno''' ou encore '''Amoeba'''.
'''groff''' est donc en quelque sorte une oeuvre postume  trouvant ses d'origines à quelques pas de l'OS '''UNIX'''. Cet utilitaire extrèmement efficace est aujourd'hui porté sur les systèmes d'exploitations les plus novateurs tels que '''plan 9''', '''inferno''' ou encore '''Amoeba'''.
Dans ces différents portages, il se fait parfois appeler '''roff''', '''nroff''', '''troff''', mais est toujours présent sur tout système de philosophie UNIX.
Dans ces différents portages, il se fait parfois appeler '''roff''', '''nroff''', '''troff''', mais est toujours présent sur tout système de philosophie UNIX.


Il présente parfois de légères différences selon les spécificités des plateformes afin d'en tirer le meilleur parti, mais semble toujours compatible car les développeurs d'environnement ont prévu des équivalences afin de toujours pourvoir générer des documents propores.
Il présente parfois de légères différences selon les spécificités des plateformes afin d'en tirer le meilleur parti, mais semble toujours compatible car les développeurs d'environnement ont prévu des équivalences afin de toujours pourvoir générer des documents propres.
Même '''MINIX''' célèbre petit OS didactique développé par Andrew Tenenbaum (MINIX mais il fait le maximum...) dispose de cette commande !
Même '''MINIX''' célèbre petit OS didactique développé par Andrew Tenenbaum (MINIX mais il fait le maximum...) dispose de cette commande !


Ligne 28 : Ligne 28 :
*Très léger, il permet un traitement rapide des informations même sur des petites configurations ne *disposant pas d'une interface X-Windows.
*Très léger, il permet un traitement rapide des informations même sur des petites configurations ne *disposant pas d'une interface X-Windows.
*Personnalisable
*Personnalisable
'''Faiblesses :'''(il en faut bien pour rester objectif)
'''Faiblesses : '''(il en faut bien pour rester objectif)
*Son langage macro est un peu rébarbatif (mais après un petit effort, il devient vite familier).
*Son langage macro est un peu rébarbatif (mais après un petit effort, il devient vite familier).
*Un peut plus rigide que '''L<sup>A</sup>T<sub>E</sub>X''' losque l'on souhaite personnaliser un document.
*Un peu plus rigide que '''L<sup>A</sup>T<sub>E</sub>X''' losque l'on souhaite personnaliser un document.
*Peu de documentations sont disponibles étant donné son grand age.
*Peu de documentations sont disponibles étant donné son grand âge.


== Un exemple ! un example ! un exemple... ==
== Un exemple ! un exemple ! un exemple... ==


Comme mentionné précédemment, '''groff''' est présent sur votre ordinateur, et vous disposez déjà d'exemples sources ! Il vous suffit par exemple d'ouvrir un fichier de type man, pour cela, il vous suffit de choisir un petit exemple parmis les centaines de documentations man.
Comme mentionné précédemment, '''groff''' est présent sur votre ordinateur, et vous disposez déjà d'exemples sources ! Il vous suffit par exemple d'ouvrir un fichier de type man, pour cela, il vous suffit de choisir un petit exemple parmi les centaines de documentations man.


=== Comment procéder ? ===
=== Comment procéder ? ===
Ligne 41 : Ligne 41 :
# Copier une commande dans votre répertoire de travail habituel.
# Copier une commande dans votre répertoire de travail habituel.
# Décompresser le fichier.
# Décompresser le fichier.
# Ouvrir le fichier dans votre édteur de texte habituel.
# Ouvrir le fichier dans votre éditeur de texte habituel.
# Contempler...
# Contempler...


==== En pratique ====
==== En pratique ====
Bien que je sois persuadé que la plupart d'entre-vous ont directement "switché" en mode console et sont déjà en train de tripatouiller un fichier juste pour voir, je vous donne ici les grandes directions qui vous permettrons de trouver ces fichiers.
Bien que je sois persuadé que la plupart d'entre-vous ont directement "switché" en mode console et sont déjà en train de tripatouiller un fichier juste pour voir, je vous donne ici les grandes directions qui vous permettront de trouver ces fichiers.
==== Trouver les fichiers sources man ====
==== Trouver les fichiers sources man ====
Vous pouvez les chercher à la main, en changeant de répertoire. Généralement, on les trouve dans les parages de <tt>/usr/man</tt> ou encore <tt>/usr/share/man</tt> ou encore <tt>/usr/local/man</tt> et bien d'autres endroits.  
Vous pouvez les chercher à la main, en changeant de répertoire. Généralement, on les trouve dans les parages de <tt>/usr/man</tt> ou encore <tt>/usr/share/man</tt> ou encore <tt>/usr/local/man</tt> et bien d'autres endroits.  
Ligne 76 : Ligne 76 :
</code>
</code>


En listant le répertoire désiré on obtient donc la liste des commades :
En listant le répertoire désiré on obtient donc la liste des commandes :


<code multi>
<code multi>
Ligne 140 : Ligne 140 :
Avant de réellement comprendre la signification des codes étranges et barbares parfois situés en début de ligne, je vous invite maintenant à quitter votre éditeur pour rejoindre votre console.
Avant de réellement comprendre la signification des codes étranges et barbares parfois situés en début de ligne, je vous invite maintenant à quitter votre éditeur pour rejoindre votre console.


Nous allons maintenant faire quelques manipulations pratique sur le fichier ls.1 que nous avons recopier tout dernièrement dans notre répertoire de travail habituel.
Nous allons maintenant faire quelques manipulations pratique sur le fichier ls.1 que nous avons recopié tout dernièrement dans notre répertoire de travail habituel.


Tapez la commande suivante :
Tapez la commande suivante :
Ligne 158 : Ligne 158 :
En fait, groff est un préprocesseur. Il permet de générer les formats suivants à partir d'une seule source :
En fait, groff est un préprocesseur. Il permet de générer les formats suivants à partir d'une seule source :


'''dvi'''  
; '''dvi''' Pour ceux qui connaissent, c'est le format TeX/LaTeX DVI.
* Pour ceux qui connaissent, c'est le format TeX/LaTeX DVI.
; '''html''' : c'est le format bien connu dont le nom signifie Hyper Text Markup Language et non, contrairement à ce que certains sous entendent parfois Hautes Technologies Mais Limitées.
'''html'''
; '''lbp''' : Format CAPSL pour les imprimantes laser Canon de type lbp-4 ou lpb-8.
* c'est le format bien connu dont le nom signifie Hyper Text Markup Language et non, contrairement à ce que certains sous entendent parfois Hautes Technologies Mais Limitées.
; '''lj4''' : Format PCL5 pour imprimantes HP et compatibles.
'''lbp'''
; '''ps''' : Du vrai postscript bien de chez nous !
* Format CAPSL pour les imprimantes laser Canon de type lbp-4 ou lpb-8.
; '''ascii''' : C'est le format ASCII 7-Bits, je le testerai peut-être cet hiver s'il y a de la neige.
'''lj4'''
; '''cp1047''' : Historiquement destiné à certains serveurs internet et autres mainframes qui n'ont toujours pas étés concurrencés par un certain Bill G. qui impose au monde le cp1250 dans les clicodrômes vitrés depuis la version nonante cinq , mais aussi langage natif de l'imprimante qui vous sert peut-être aujourd'hui de bac à fleurs, ce format implémente le jeux de caractères latin-1 en EBCDIC.
* Format PCL5 pour imprimantes HP et compatibles.
; '''latin1''' : C'est le jeu de caractères ISO 8859-1 utilisé par exemple pour afficher des symboles mystérieux appartenant à l'obscur langage qu'étaient le François et le Français. On notera au passage qu'il offre aussi l'avantage d'afficher des messages en "verlan" et en "nique ta m..." ou encore "nique ta r..." dialectes évolués de notre époque concurrençant le "slang" parlé dans les prisons anglo-saxonnes.
'''ps'''
; '''utf8''' : C'est le jeu de caractères Unicode UTF-8, similaire à celui du bios de votre machine.
* Du vrai postscript bien de chez nous !
'''ascii'''
* C'est le format ASCII 7-Bits, je le testerai peut-être cet hiver s'il y a de la neige.
'''cp1047'''
* Historiquement destiné à certains serveurs internet et autres mainframes qui n'ont toujours pas étés concurrencés par un certain Bill G. qui impose au monde le cp1250 dans les clicodrômes vitrés depuis la version nonante cinq , mais aussi langage natif de l'imprimante qui vous sert peut-être aujourd'hui de bac à fleurs, ce format implémente le jeux de caractères latin-1 en EBCDIC.
'''latin1'''
* C'est le jeu de caractères ISO 8859-1 utilisé par exemple pour afficher des symboles mystérieux appartenant à l'obscur langage qu'étaient le François et le Français. On notera au passage qu'il offre aussi l'avantage d'afficher des messages en "verlan" et en "nique ta m..." ou encore "nique ta r..." dialectes évolués de notre époque concurrençant le "slang" parlé dans les prisons anglo-saxonnes.
'''utf8'''
* C'est le jeu de caractères Unicode UTF-8, similaire à celui du bios de votre machine.


== groff et ses environnements ==
== groff et ses environnements ==
Ligne 211 : Ligne 202 :
== Où peut-on trouver des informations sur groff ==
== Où peut-on trouver des informations sur groff ==


Les sites suivants vous apporterons diverses ressources pour '''groff''':
Les sites suivants vous apporteront diverses ressources pour '''groff''':
* http://www.gnu.org/software/groff/groff.html
* http://www.gnu.org/software/groff/groff.html
* http://www.troff.org/
* http://www.troff.org/

Dernière version du 6 mars 2006 à 20:04

Introduction

Comme Monsieur Jourdain fait de la prose, la plupart des nouveaux utilisateurs et utilisatrices de notre OS libre préféré utilisent un puissant outil de formatage et génération de documents. Cet outil a tendance à se faire oublier, tellement il est discret malgré sa participation vitale au quotidien de tout utilisateur ou utilisatrice, et cela concerne même les plus chevronné(e)s. Cet outil, c'est groff

Que peut-on faire avec groff ?

La commande groff permet à partir d'une même source de :

  • générer des documents mis en page : livre, lettre, documentation, rapport...etc.
  • créer des images de ces documents en format : postscript, man (Latin 1 formatés), html, dvi, Textes (Latin1 formatés)...

Quelles sont ses origines ?

Au départ, cet environnement de formatage de documents appelé troff a été développé en assembleur par Joe Ossanna vers 1973, pour piloter une imprimante graphique (Graphic System CAT Typesetter) branchée sur un bon vieux PDP-11. Il fut porté en C vers 1975, mais malheureusement, Joe Ossanna décède en 1977.

C'est le célèbre Brian Kernighan qui reprend le flambeau en 1979 et modifie troff afin de le rendre compatible avec d'autres formats de sortie. de 1979 à 1989, les sources de troff ont été modestement retouchées de manière à laisser la quasi totalité du code intacte en mémoire de Joe Ossanna.

groff est donc en quelque sorte une oeuvre postume trouvant ses d'origines à quelques pas de l'OS UNIX. Cet utilitaire extrèmement efficace est aujourd'hui porté sur les systèmes d'exploitations les plus novateurs tels que plan 9, inferno ou encore Amoeba. Dans ces différents portages, il se fait parfois appeler roff, nroff, troff, mais est toujours présent sur tout système de philosophie UNIX.

Il présente parfois de légères différences selon les spécificités des plateformes afin d'en tirer le meilleur parti, mais semble toujours compatible car les développeurs d'environnement ont prévu des équivalences afin de toujours pourvoir générer des documents propres. Même MINIX célèbre petit OS didactique développé par Andrew Tenenbaum (MINIX mais il fait le maximum...) dispose de cette commande !

Les forces et faiblesses de groff

Forces :

  • Très rapide à assimiler comparé a son 'grand frêre' LATEX.
  • Grande robustesse et génération toujours fidèle aux attentes de l'utilisateur.
  • Très léger, il permet un traitement rapide des informations même sur des petites configurations ne *disposant pas d'une interface X-Windows.
  • Personnalisable

Faiblesses : (il en faut bien pour rester objectif)

  • Son langage macro est un peu rébarbatif (mais après un petit effort, il devient vite familier).
  • Un peu plus rigide que LATEX losque l'on souhaite personnaliser un document.
  • Peu de documentations sont disponibles étant donné son grand âge.

Un exemple ! un exemple ! un exemple...

Comme mentionné précédemment, groff est présent sur votre ordinateur, et vous disposez déjà d'exemples sources ! Il vous suffit par exemple d'ouvrir un fichier de type man, pour cela, il vous suffit de choisir un petit exemple parmi les centaines de documentations man.

Comment procéder ?

  1. Trouver l'emplacement des sources des fichiers de documentations du système.
  2. Copier une commande dans votre répertoire de travail habituel.
  3. Décompresser le fichier.
  4. Ouvrir le fichier dans votre éditeur de texte habituel.
  5. Contempler...

En pratique

Bien que je sois persuadé que la plupart d'entre-vous ont directement "switché" en mode console et sont déjà en train de tripatouiller un fichier juste pour voir, je vous donne ici les grandes directions qui vous permettront de trouver ces fichiers.

Trouver les fichiers sources man

Vous pouvez les chercher à la main, en changeant de répertoire. Généralement, on les trouve dans les parages de /usr/man ou encore /usr/share/man ou encore /usr/local/man et bien d'autres endroits.

Choisissez un répertoire parmi man1,man2,...,mann situés dans le répertoire /.../man/ ou /.../man/fr/. [mujma@localhost]#ls -l /usr/share/man total 300 drwxr-xr-x 4 root root 4096 aoû 17 20:12 bg drwxr-xr-x 2 root root 4096 aoû 17 20:26 cat1 drwxr-xr-x 2 root root 4096 aoû 17 20:26 cat5 drwxr-xr-x 5 root root 4096 aoû 17 20:12 cs ... drwxr-xr-x 11 root man 4096 aoû 17 20:16 fr ... drwxr-xr-x 2 root root 40960 nov 16 22:51 man1 drwxr-xr-x 2 root root 4096 jan 5 2004 man2 drwxr-xr-x 2 root root 114688 nov 8 08:47 man3 drwxr-xr-x 2 root root 4096 aoû 18 14:23 man4 drwxr-xr-x 2 root root 8192 nov 16 22:51 man5 drwxr-xr-x 2 root root 4096 aoû 17 20:20 man6 drwxr-xr-x 2 root root 4096 oct 20 18:20 man7 drwxr-xr-x 2 root root 12288 nov 2 15:07 man8 drwxr-xr-x 2 root root 4096 jan 5 2004 man9 drwxr-xr-x 2 root root 8192 aoû 17 20:29 mann drwxr-xr-x 5 root root 4096 aoû 17 20:12 nl ... drwxr-xr-x 4 root root 4096 aoû 17 20:12 sl drwxr-xr-x 3 root root 4096 aoû 17 20:10 uk

En listant le répertoire désiré on obtient donc la liste des commandes :

[mujma@localhost]#ls -l /usr/share/man/fr/man1/ total 4036 -rw-r--r-- 1 root man 962 jan 31 1999 3ds2m.1.bz2 -rw-r--r-- 1 root man 967 jul 03 1999 3dsdump.1.bz2 -rw-r--r-- 1 root man 1641 jun 13 2001 9wm.1.bz2 ... -rw-r--r-- 1 root man 6531 aoû 10 2003 ls.1.bz2 <-------- On va copier ce fichier dans le répertoire $HOME ... -rw-r--r-- 1 root man 2251 apr 08 1989 zmore.1.bz2 -rw-r--r-- 1 root man 751 apr 08 1989 znew.1.bz2

Enfin on peut copier le fichier et le décompresser :

[mujma@localhost]#cp /usr/share/man/fr/man1/ls.1.bz2 $HOME [mujma@localhost]#bunzip2 ls.1.bz2

Ouvrir un exemple

Enfin, si on ouvre ce fichier dans un éditeur de texte on obtient :

.\" Traduction 19/12/1996 par Christophe Blaess (ccb@club-internet.fr) .\" màj 04/01/1999 - LDP man-pages 1.22 .\" màj 03/01/2000 .\" màj 26/06/2000 - LDP man-pages 1.30 .\" màj 30/05/2001 - LDP man-pages 1.36 .\" màj 22/10/2002 - LDP man-pages 1.53 .\" MàJ 25/07/2003 LDP-1.56 .TH LS 1L "25 juillet 2003" LDP "Manuel de l'utilisateur Linux" .SH NOM ls, dir, vdir \- Afficher le contenu d'un répertoire. .SH SYNOPSIS .BI "ls [" options "] [" fichier... ] .br .BI "dir [" fichier... ] .br .BI "vdir [" fichier... ] .sp Options POSIX : .BI "[\-CFRacdilqrtu1] [\-\-]" .sp Options GNU (forme courte) : .B [\-1abcdfgiklmnopqrstuvwxABCDFGHLNQRSUX] .BI "[\-w " cols ]


 ... 


Cette page documente la version de .B ls du paquetage fileutils-4.0. D'autres versions peuvent diverger légèrement.

.SH TRADUCTION Christophe Blaess, 1996-2003.

Faire un petit tour de groff

Avant de réellement comprendre la signification des codes étranges et barbares parfois situés en début de ligne, je vous invite maintenant à quitter votre éditeur pour rejoindre votre console.

Nous allons maintenant faire quelques manipulations pratique sur le fichier ls.1 que nous avons recopié tout dernièrement dans notre répertoire de travail habituel.

Tapez la commande suivante : [mujma@localhost]#groff -Tps -man ls.1 > ls.1.ps

Si groff est correctement installé (et il y a 99,9% de chances qu'il le soit), vous devriez voir apparaître le fichier ls.1.ps dans le répertoire courant.

Vous pouvez le visualiser avec n'importe quel afficheur postscript.

Maintenant nous allons faire encore plus fort ! Pour cela tapez la commande : [mujma@localhost]#groff -Thtml -man ls.1 > ls.1.html

De manière identique à la commande précédente, vous venez de générer un fichier html. Ouvrez-le vite... Oui, c'est bien la documentation au format html. Vous pouvez procéder ainsi avec toutes les pages de manuel linux ! En fait, groff est un préprocesseur. Il permet de générer les formats suivants à partir d'une seule source :

dvi
Pour ceux qui connaissent, c'est le format TeX/LaTeX DVI.
html
c'est le format bien connu dont le nom signifie Hyper Text Markup Language et non, contrairement à ce que certains sous entendent parfois Hautes Technologies Mais Limitées.
lbp
Format CAPSL pour les imprimantes laser Canon de type lbp-4 ou lpb-8.
lj4
Format PCL5 pour imprimantes HP et compatibles.
ps
Du vrai postscript bien de chez nous !
ascii
C'est le format ASCII 7-Bits, je le testerai peut-être cet hiver s'il y a de la neige.
cp1047
Historiquement destiné à certains serveurs internet et autres mainframes qui n'ont toujours pas étés concurrencés par un certain Bill G. qui impose au monde le cp1250 dans les clicodrômes vitrés depuis la version nonante cinq , mais aussi langage natif de l'imprimante qui vous sert peut-être aujourd'hui de bac à fleurs, ce format implémente le jeux de caractères latin-1 en EBCDIC.
latin1
C'est le jeu de caractères ISO 8859-1 utilisé par exemple pour afficher des symboles mystérieux appartenant à l'obscur langage qu'étaient le François et le Français. On notera au passage qu'il offre aussi l'avantage d'afficher des messages en "verlan" et en "nique ta m..." ou encore "nique ta r..." dialectes évolués de notre époque concurrençant le "slang" parlé dans les prisons anglo-saxonnes.
utf8
C'est le jeu de caractères Unicode UTF-8, similaire à celui du bios de votre machine.

groff et ses environnements

Si l'on se réfère à l'invocation de groff dans l'exemple précédent, groff est invoqué avec 3 paramètres en ligne de commande.

groff -Thtml -m man ls.1 > ls.1.html

de manière plus générale on peut invoquer groff de la manière suivante :

groff -T'<format_sortie>' -m '<format_entrée>' > ls.1.html

'<format_sortie>' correspond aux formats de sorties évoqués précédemment.

'<format_entrée>' correspond au format utilisé pour écrire le source.

Pour groff un format de sortie ou un format d'entrée n'est ni plus ni moins qu'un ensemble de macros correspondant à des environnements.

On trouve généralement les environnements (ou format d'entrée) suivants avec le paquet groff :

Les environnement macro dédiés au système de documentation :

man
format traditionnel des pages de manuel.
mdoc
format BSD des pages de manuel.
mandoc
cet environnement encapsule man et mdoc et permet de reconnaître le format du fichier d'origine automatiquement.

Pour des documents plus courants :

me, mm et ms
des environnements de génération de documents plus classiques (livres, rapports...).

Pour générer des pages Web :

www
pour générer des documents 'HTML'.

Où peut-on trouver des informations sur groff

Les sites suivants vous apporteront diverses ressources pour groff:

Copyright

© 2005 Marc UJMA

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/