Man page HOWTO
Auteur : Jens Schweikhardt
[email protected]
www.shuttle.de/schweikh/home.html
Mars 1998
(Adaptation fran�aise par Alexandre Devaure
[email protected], 2
juin 1999). Ce HOWTO explique ce que vous devrez avoir en t�te quand
vous pr�voyez d'�crire une documentation en ligne (plus connue sous le
nom de page de manuel) que vous voulez rendre accessible via la com�
mande man(1). Tout au long de ce HOWTO, une entr�e du manuel sera sim�
plement appel�e page de manuel, quelque soit sa longueur r�elle et
sans intention sexiste.
______________________________________________________________________
Table des mati�res
1. Quelques �vidences � propos de la documentation
2. Comment acc�de-t-on aux pages de manuel ?
3. A quoi ressemble une page de manuel format�e ?
4. Comment documenter plusieurs choses dans une seule page de manuel ?
5. Quel ensemble de macros utiliser ?
6. Quels pr�processeurs puis-je utiliser ?
7. Dois-je distribuer les sources et/ou la documentation d�j� format�e ?
8. Quelles sont les conventions pour les fontes ?
9. Comment dois-je pr�senter ma page de manuel ?
10. Comment puis-je avoir un texte en pur ASCII sans tous ces fichus ^H^ de contr�le ?
11. Comment avoir une belle page de manuel en PostScript ?
12. Comment faire fonctionner les programmes
13. La langue fran�aise
14. Les conditions de copie
______________________________________________________________________
11..
QQuueellqquueess ��vviiddeenncceess �� pprrooppooss ddee llaa ddooccuummeennttaattiioonn
Pourquoi �crivons-nous une documentation ? C'est une question b�te.
Parce que nous voulons que d'autres personnes puissent utiliser notre
programme, notre fonction dans une librairie ou quoi que ce soit que
nous avons �crit et rendu disponible. Mais �crire une documentation
n'est pas suffisant :
� la documentation doit �tre accessible. Si elle est cach�e � un
endroit non standard o� les outils de recherche relatifs � la
documentation ne la trouveront pas, comment peut-elle remplir son
r�le ?
� la documentation doit �tre fiable et pr�cise. Il n'y a rien de plus
irritant qu'un programme se comportant diff�remment de ce qui est
�crit dans sa documentation. Les utilisateurs vous maudiront, vous
enverront des courriers d'insulte, puis rejetteront � jamais tout
autre travail venant de vous.
La m�thode traditionnelle pour acc�der � la documentation sous UNIX
fait appel � la commande man(1). Ce HOWTO d�crit ce que vous devez
faire pour �crire une page de manuel qui sera correctement trait�e
par les outils pr�vus � cet effet, dont les plus importants sont
man(1), xman(1x), apropos(1), makewhatis(8) et catman(8).
La qualit� et la v�racit� des informations sont, bien s�r, de votre
ressort. Malgr� tout, vous trouverez dans ce guide quelques id�es qui
vous permettront d'�viter certains pi�ges courants.
22..
CCoommmmeenntt aacccc��ddee--tt--oonn aauuxx ppaaggeess ddee mmaannuueell ??
Vous devez conna�tre avec pr�cision le m�canisme d'acc�s aux pages de
manuel afin de savoir donner un nom correct � vos documents, et d'�tre
capable de les installer au bon endroit. Chaque page de manuel
appartient � une section sp�cifique, d�not�e par un simple chiffre.
Les sections les plus courantes rencontr�es sous Linux sont :
� 1 : commandes utilisateurs pouvant �tre ex�cut�es par tout le
monde ;
� 2 : appels syst�mes, c'est-�-dire les fonctions fournies par le
noyau ;
� 3 : fonctions des biblioth�ques ;
� 4 : p�riph�riques, c'est-�-dire les fichiers sp�ciaux que l'on
trouve dans le r�pertoire /dev ;
� 5 : descriptions des formats de fichiers (comme par exemple
/etc/passwd ;
� 6 : les jeux, sans commentaire...
� 7 : divers (macros, conventions particuli�res, ...) ;
� 8 : outils d'administration ex�cutables uniquement par le super
utilisateur ;
� 9 : un autre endroit (sp�cifique � Linux) destin� � la
documentation des services offerts par le noyau ;
� n : nouvelle documentation, qui pourra �tre d�plac�e vers un
endroit appropri� ;
� o : ancienne documentation, qui peut �tre conserv�e encore un
certain temps ;
� l : documentation locale, propre � ce syst�me particulier.
Le nom du fichier source d'une page de manuel (le fichier d'entr�e
du syst�me de formatage) est le nom de la commande d�crite (ou de
la fonction, du fichier, etc.), suivi d'un point et du num�ro de
section. Si, par exemple, vous documentez le format du fichier
"_p_a_s_s_w_d", vous devez appeler le fichier source "_p_a_s_s_w_d_._5". Nous
avons ici un exemple d'un fichier qui porte le m�me nom qu'une
commande ; nous aurions tout aussi bien avoir une fonction de
biblioth�que appel�e "_p_a_s_s_w_d". L'organisation en sections constitue
la m�thode habituelle pour r�soudre ces ambigu�t�s : la description
de la commande se trouvera dans le fichier "_p_a_s_s_w_d_._1" et notre
hypoth�tique fonction de biblioth�que dans "_p_a_s_s_w_d_._3".
Quelquefois, une lettre est ajout�e au num�ro de section comme par
exemple "_x_t_e_r_m_._1_x" ou "_w_i_s_h_._1_t_k". Le but de cette notation est
d'indiquer qu'il s'agit respectivement d'une documentation d'un
programme X Window ou d'une application Tk. Certains programmes
d'affichage du manuel peuvent exploiter cette particularit� ; xman,
par exemple affichera "_x_t_e_r_m_(_x_)" et "_w_i_s_h_(_t_k_)" dans la liste des
documents disponibles.
S'il vous pla�t, n'utilisez pas les sections n, o et l : selon le
standard du syst�me de fichiers (File System Standard), ces sections
sont d�conseill�es, utilisez plut�t les sections num�riques.
Attention aux �ventuels conflits de noms avec des programmes,
fonctions ou fichiers d�j� existants. Ce serait certainement une
mauvaise id�e d'�crire un autre �diteur de texte et de le nommer ed,
sed (pour super ed) ou red (pour Roger edition). En vous assurant que
le nom de votre programme est unique, vous �viterez que quelqu'un
ex�cute votre programme et qu'il lise la page de manuel d'un autre ou
_v_i_c_e _v_e_r_c_a. Vous pouvez �ventuellement vous aider de la base de
donn�es "lsm" qui recense beaucoup de programmes disponibles pour
Linux.
Maintenant que nous savons quel nom donner � notre fichier, la
prochaine d�cision est de choisir le r�pertoire dans lequel nous
l'installerons (quand l'utilisateur lancera la commande "make
install"). Sous Linux, toutes les pages de manuel sont dans des sous-
r�pertoires � partir d'une racine m�moris�e dans la variable
d'environnement MANPATH. Les outils de traitement de la documentation
l'utilisent de la m�me mani�re que le shell utilise la variable PATH
pour trouver les ex�cutables. En fait, MANPATH a le m�me format que
PATH : toutes les deux sont une liste de r�pertoires s�par�s par des
":" (mais MANPATH n'autorise pas de champs vides ou des chemins
relatifs, seulement des chemins absolus). Si MANPATH n'existe pas ou
si elle n'est pas export�e, /usr/man est utilis�e comme valeur par
d�faut. Dans le but d'acc�lerer la recherche et pour garder les
r�pertoires de taille raisonable, les r�pertoires point�s dans MANPATH
(aussi appel�s r�pertoires de base) contiennent une multitude de sous-
r�pertoires nomm�s "_m_a_n_<_s_>" o� <s> d�signe le caract�re correspondant
� la section pr�sent� plus haut. Toutes les sections ne sont pas
repr�sent�es, il n'y a pas, par exemple de raison de garder une entr�e
"_m_a_n_o". Vous pourrez y trouver �galement des sous-r�pertoires appel�s
"_c_a_t_<_s_>", "_d_v_i_<_s_>" et "_p_s_<_s_>", qui contiennent toute la documentation
format�e, pr�te � �tre affich�e ou imprim�e : nous reviendrons sur ce
sujet plus loin. Le seul fichier � �tre pr�sent � c�t� de ces sous-
r�pertoires du r�pertoire de base s'appelle "_w_h_a_t_i_s". Le but et la
cr�ation de ce fichier sera d�crit dans la section 11. La m�thode la
plus s�re pour installer au bon endroit une page de manuel de la
section "s" est de mettre le fichier dans le r�pertoire
"_/_u_s_r_/_m_a_n_/_m_a_n_<_s_>". Toutefois, un bon Makefile devra autoriser
l'utilisateur de choisir un autre r�pertoire de base, disons par
exemple par le biais d'une variable d'environnement que l'on pourrait
nommer MANDIR. La plupart des distributions GNU peuvent �tre
configur�es � l'aide de l'option --prefix=/nom/option. Les pages de
manuels correspondantes seront alors install�es � partir du r�pertoire
de base _/_m_o_n_/_o_p_t_i_o_n_/_m_a_n. Je vous sugg�re d'utiliser une m�thode
similaire pour vos r�alisations personnelles.
Depuis l'av�nement du "_S_y_s_t_�_m_e _d_e _f_i_c_h_i_e_r_s _s_t_a_n_d_a_r_d" pour Linux (FS-
STnd), les choses se sont compliqu�es. Le FS-STnd 1.2 stipule que :
des am�nagements doivent �tre faits dans la structure de
_/_u_s_r_/_m_a_n pour supporter des pages de manuel �crites dans
diff�rentes (ou mutiples) langues.
Ceci est fait en introduisant un niveau de r�pertoires suppl�mentaire
qui distingue les diff�rentes langues. Citant encore le FS-Stnd 1.2 :
Le nommage des sous-r�pertoires correspondants aux langues
de _/_u_s_r_/_m_a_n est bas� sur l'appendice E du standard POSIX
1003.1 qui d�crit la cha�ne de caract�res d'authentification
_l_o_c_a_l_e (qui est la m�thode la mieux accept�e pour d�crire un
environement culturel). La cha�ne _l_o_c_a_l_e se pr�sente sous la
forme
<langage>[_<pays>][.<jeu-de-caracteres>][,<version>]
(Reportez vous au FS-Stnd pour voir quelques cha�nes _l_o_c_a_l_ecourantes.)
D'apr�s ces recommandations, nous avons nos pages de manuel dans
_/_u_s_r_/_m_a_n_/_<_l_o_c_a_l_e_>_/_m_a_n_[_1_-_9_l_n_o_]. Les versions format�es se trouveraient
alors bien entendu dans _/_u_s_r_/_m_a_n_/_<_l_o_c_a_l_e_>_/_c_a_t_[_1_-_9_l_n_o_] : nous pourrions
ne les fournir que pour une seule langue.
TOUTEFOIS, je (l'auteur du document, pas le traducteur) ne peut pas
recommander de passer a cette structure en l'�tat actuel des choses.
Le FS-Stnd 1.2 autorise aussi que
les syst�mes qui n'utilisent qu'une seule langue et jeu de
caract�res pour toutes les pages de manuel peuvent omettre
la sous-cha�ne _<_l_o_c_a_l_e_> et stocker toutes ces pages dans le
r�pertoire _m_a_n_d_i_r. Par exemple, les machines �quip�es seule�
ment de pages de manuel en anglais cod�es en ASCII peuvent
mettre les pages de manuel (les r�pertoires _m_a_n_[_1_-_9_])
directement dans _/_u_s_r_/_m_a_n_/. Il s'agit en fait de l'arrange�
ment habituel.
Je (l'auteur du document, pas le traducteur) ne changerai pas ma
configuration tant que tous les outils (comme xman, info, tkman et
beaucoup d'autres) ne seront pas tous adapt�s � cette nouvelle
structure.
33..
AA qquuooii rreesssseemmbbllee uunnee ppaaggee ddee mmaannuueell ffoorrmmaatt��ee ??
Laissez-moi vous pr�senter un exemple que j'expliquerai plus tard. En
raison de la nature et du mode de r�alisation de ce document, nous ne
pouvons pas reproduire les caract�res accentu�s, ni les diff�rents
enrichissements du texte (gras et italiques principalement) ;
consultez la section traitant des polices de caract�res pour obtenir
des d�tails sur ces possibilit�s.
Voici comment se pr�sente la page de manuel de notre programme
hyphoth�tique "prout" :
PROUT(1) Manuel utilisateur PROUT(1)
NAME
prout - proutibule la bibliotheque plaf
SYNOPSIS
prout [-plaf] [-c fichier-config ] fichier ...
DESCRIPTION
prout proutibule la bibliotheque plaf en mouglifiant la
table des symboles. Par defaut, la commande recherche
tous les segments glurb et les trie par ordre betagonique
decroissant afin que le gloupeur gloup(1) les trouve.
L'entree symdef est alors compactee selon l'algorithme
NABOB. Les fichiers sont traites dans leur ordre
d'apparition sur la ligne de commandes.
OPTIONS
-b N'affiche pas `bidouille en cours' sur la sortie
standard pendant le traitement.
-c fichier-config
Utilise le fichier de configuration fichier-config
au lieu du fichier global /etc/prout.conf. Cela
supprime aussi l'effet de la variable
d'environnement PROUTCONF.
-a Traite egalement les en-tetes froutz en plus des
segments glurb.
-r Mode recursif. Fonctionne a la vitesse de la
lumiere, mais necessite plusieurs megaoctets de
memoire virtuelle.
FICHIERS
/etc/prout.conf
Fichier de configuration general, pour tout le
systeme. Voir prout(5) pour plus de details.
~/.proutrc
Fichier de configuration propre a chaque utilisa
teur. Voir prout(5) pour plus de details.
ENVIRONNEMENT
PROUTCONF
Si elle existe, cette variable peut contenir le
chemin d'acces complet a un autre fichier de con
figuration global prout.conf. L'option -c rend
cette variable inoperante.
DIAGNOSTICS
Les messages suivants peuvent etre affiches sur la sortie
standard d'erreurs :
Mauvais nombre magique.
Le fichier d'entree ne semble pas etre un fichier
archive.
Segments glurb ancien style.
prout ne peut traiter que le nouveau style de seg
ments glurb. Les bibliotheques GROBOL ne sont pas
supportees dans cette version.
BOGUES
Le nom de cette commande aurait du etre choisi de maniere
a mieux refleter sa fonction.
AUTEUR
Marcel Dugenou <
[email protected]>
VOIR AUSSI
gloup(1), plaf(1), prout(5).
Linux JANVIER 1996 1
Et voici les explications promises :
LLaa sseeccttiioonn NNAAMMEE ::
C'est la seule section requise. Les pages de manuel sans une
section "NAME" sont aussi utiles que des r�frigerateurs au P�le
Nord. Cette section a aussi un format standardis� constitu�
d'une liste de programmes ou noms de fonctions s�par�s par des
virgules suivie d'un tiret et d'une courte description
(habituellement une ligne) de la fonctionnalit� que le programme
(fonction ou fichier) est suppos� dispenser. A l'aide de
makewhatis(8) les sections NAME sont incluses dans les fichiers
de la base de donn�es de whatis. makewhatis est la raison pour
laquelle la section NAME doit exister et pourquoi elle doit
adh�rer au format que j'ai d�crit. Dans le source groff, elle
doit ressembler � :
.SH NAME prout \- proutibule de la bibliotheque plaf
Le \- est important ici : le backslash sert a faire la diff�rence
entre le tiret et une marque de c�sure qui peut appara�tre �
l'int�rieur du nom de la commande ou dans la ligne de description.
AAtttteennttiioonn : en l'�tat actuel des choses, vous ne pouvez pas
traduire NAME par NOM en fran�ais, � moins de modifier la plupart
des programmes makewhatis existants. C'est bien dommage.
LLaa sseeccttiioonn SSYYNNOOPPSSYYSS
... est cens�e donner un aper�u sur les options du programme.
Pour les fonctions, cette section fait la liste des fichiers �
inclure et son prototype pour que le programmeur connaisse le
type et le nombre d'arguments ainsi que le type de retour.
LLaa sseeccttiioonn DDEESSCCRRIIPPTTIIOONN
Elle explique en d�tail pourquoi votre s�quence de 0 et de 1 est
la meilleure de toutes. C'est ici que vous �talez tout votre
savoir ! Gagnez l'estime des autres programmeurs et des
utilisateurs en faisant de cette section une source
d'information s�re et d�taill�e. Expliquez � quoi servent les
arguments, le format de fichier, les algorithmes qui effectuent
le plus dur du travail.
LLaa sseeccttiioonn OOPPTTIIOONNSS
Elle donne une description pour chaque option, comment elle
affecte le fonctionnement du programme. Vous le saviez, n'est-ce
pas ?
LLaa sseeccttiioonn FFIICCHHIIEERRSS
Elle indique les fichiers utilis�s par le programme ou la
fonction. Par exemple, les fichiers de configuration, les
fichiers de d�marrage, les fichiers sur lesquels le programme
agit. Ce serait une bonne id�e de donner les chemins absolus de
ces fichiers et d'avoir un processus d'installation qui modifie
la partie r�pertoire selon les pr�f�rences de l'utilisateur :
les manuels de groff ont comme pr�fixe par d�faut _/_u_s_r_/_l_o_c_a_l,
donc ils r�f�rencent _/_u_s_r_l_/_l_o_c_a_l_/_l_i_b_/_g_r_o_f_f_/_* par d�faut.
Cependant, si vous installez en utilisant "make
prefix=/opt/gnu", les r�f�rences dans la page de manuel change
en _/_o_p_t_/_g_n_u_/_l_i_b_/_g_r_o_f_f_/_*.
LLaa sseeccttiioonn EENNVVIIRROONNNNEEMMEENNTT
fait la liste de toutes les variables d'environnement qui
affectent votre programme ou fonction et, bien s�r, explique
comment. La plupart du temps, les variables contiendront les
chemins, nom de fichiers, options par d�faut.
LLaa sseeccttiioonn DDIIAAGGNNOOSSTTIIQQUUEESS
Elle doit donner une vue d'ensemble des messages d'erreurs les
plus courants de votre programme et des �ventuelles solutions �
ces probl�mes. Il n'est pas n�cessaire d'expliquer les messages
d'erreurs du syst�me (de perror(3)) ou des signaux fatals (de
psignal(3)) qui peuvent appara�tre pendant l'ex�cution de tout
programme.
LLaa sseeccttiioonn BBOOGGUUEESS
Devrait id�alement ne pas exister. Si vous �tes brave, vous
pouvez d�crire ici les limitations, les inconv�nients, les
caract�ristiques que certains pourraient prendre pour des
d�fauts. Si vous n'�tes pas brave, renommez-la en section "A
FAIRE".
LLaa sseeccttiioonn AAUUTTEEUURR
Il est appr�ciable de l'avoir quand il y a des erreurs
grossi�res dans la documentation ou dans le comportement du
programme et que vous voulez envoyer un rapport de bogue.
LLaa sseeccttiioonn VVOOIIRR AAUUSSSSII
C'est une liste de pages de manuel relatives � l'application
cit�es par ordre alphab�tique. Par convention, c'est la derni�re
section.
Vous �tes libres d'en inventer d'autres si elles n'empietent pas sur
celles d�crites au-dessus. Nous avons volontairement d�crit une ver�
sion francis�e de page de manuel, puisque ce document est destin� aux
pays francophones. N�anmoins, vous devez avoir conscience que si vous
devez diffuser une application dans le monde entier, il vous faudra
fournir un manuel en langue anglaise (ce qui est la version standard,
traditionnelle), et que les noms "officiels" de ces sections sont en
r�alit�, dans l'ordre : NAME, SYNOPSIS, DESCRIPTION, OPTIONS, FILES,
ENVIRONMENT, DIAGNOSTICS, BUGS, AUTHOR et SEE ALSO.
Donc comment g�n�rer cette page de manuel ? J'attendais cette
question, voici le source :
.\" Formater ce fichier par la commande :
.\" groff -man -Tlatin1 prout.1 (si vous avez saisi des accents Iso-8859-1)
.\" groff -man -Tascii prout.1 (cas general )
.\"
.TH PROUT 1 "JANVIER 1996" Linux "Manuel utilisateur"
.SH NAME
prout \- proutibule la bibliotheque plaf
.SH SYNOPSIS
.B prout [-plaf] [-c
.I fichier-config
.B ]
.I fichier
.B ...
.SH DESCRIPTION
.B prout
proutibule la bibliotheque plaf en mouglifiant la table des symboles.
Par defaut, la commande recherche tous les segments glurb et les trie
par ordre betagonique decroissant afin que le gloupeur
.BR gloup (1)
les trouve. L'entree symdef est alors compactee selon l'algorithme NABOB.
Les fichiers sont traites dans leur ordre d'apparition sur la ligne
de commandes.
.SH OPTIONS
.IP -b
N'affiche pas `bidouille en cours' sur la sortie standard pendant
le traitement.
.IP "-c fichier-config"
Utilise le fichier de configuration
.I fichier-config
au lieu du fichier global
.IR /etc/prout.conf .
Cela supprime aussi l'effet de la variable d'environnement
.B PROUTCONF.
.IP -a
Traite egalement les en-tetes froutz en plus des segments glurb.
.IP -r
Mode recursif. Fonctionne a la vitesse de la lumiere, mais necessite
plusieurs megaoctets de memoire virtuelle.
.SH FICHIERS
.I /etc/prout.conf
.RS
Fichier de configuration general, pour tout le systeme. Voir
.BR prout (5)
pour plus de details.
.RE
.I ~/.proutrc
.RS
Fichier de configuration propre a chaque utilisateur. Voir
.BR prout (5)
pour plus de details.
.SH ENVIRONNEMENT
.IP PROUTCONF
Si elle existe, cette variable peut contenir le chemin d'acces complet
a un autre fichier de configuration global
.IR prout.conf .
L'option
.B -c
rend cette variable inoperante.
.SH DIAGNOSTICS
Les messages suivants peuvent etre affiches sur la sortie standard d'erreurs :
Mauvais nombre magique.
.RS
Le fichier d'entree ne semble pas etre un fichier archive.
.RE
Segments glurb ancien style.
.RS
.B prout
ne peut traiter que le nouveau style de segments glurb. Les bibliotheques
GROBOL ne sont pas supportees dans cette version.
.SH BOGUES
Le nom de cette commande aurait du etre choisi de maniere a mieux
refleter sa fonction.
.SH AUTEUR
Marcel Dugenou <
[email protected]>
.SH "VOIR AUSSI"
.BR gloup (1),
.BR plaf (1),
.BR prout (5).
44..
CCoommmmeenntt ddooccuummeenntteerr pplluussiieeuurrss cchhoosseess ddaannss uunnee sseeuullee ppaaggee ddee mmaannuueell ??
De nombreux programmes (grep, egrep) et fonctions (printf,
fprintf,...) sont document�es dans une seule page de manuel.
Cependant, ces pages seraient inutilisables si elles n'�taient
accessibles que par un seul nom. Nous ne pouvous nous attendre � ce
qu'un utilisateur se souviennent que la page de manuel de egrep est en
fait celle de grep. Il est par cons�quent indispensable que la page
soit accessible sous diff�rents noms. Vous avez plusieurs possibilit�s
pour y arriver :
1. avoir des copies identiques pour chaque nom ;
2. connecter toutes les pages de manuels en utilisant des liens
physiques ;
3. utiliser les liens symboliques pointant la page de manuel ;
4. utiliser le m�canisme de "source" de groff fournie par la macro
".SO".
La premi�re possibilit� est une perte de place. La deuxi�me n'est
pas recommand�e parce que les versions intelligentes du programme
catman peuvent gagner beaucoup de temps en regardant le type du
fichier et son contenu. Les liens physiques r�duiraient
l'efficacit� de cet outil (dont le but est de formater toutes les
pages de manuel pour qu'elles soient affich�es plus rapidement). La
troisi�me alternative comporte un pi�ge si vous �tes concern� par
la portabilit�, vous devez savoir qu'il existe des syst�mes de
fichiers qui ne supportent pas les liens symboliques. En bref, la
Meilleure Chose (TM) est d'utiliser le m�canisme source de groff.
Voila comment l'utiliser : si vous voulez que votre page soit
accessible sous les noms truc et bidule dans la section 1, alors
mettez la page de manuel dans truc.1 et r�alisez le fichier bidule.1
contenant :
.SO man1/truc.1
Il est important de sp�cifier le r�pertoire _m_a_n_1_/ aussi bien que le
nom du fichier truc.1 car lors de l'ex�cution de groff, celui-ci aura
comme r�pertoire courant le r�pertoire de base des pages de manuel, et
il interpr�tera les arguments de .SO comme �tant relatifs � cet
emplacement.
55..
QQuueell eennsseemmbbllee ddee mmaaccrrooss uuttiilliisseerr ??
Il y a de nombreux ensembles de macros �tudi�s sp�cialement pour
�crire des pages de manuel. Ils sont habituellement dans le r�pertoire
de macro de groff _/_u_s_r_/_l_i_b_/_g_r_o_f_f_/_t_m_a_c. Les noms de fichiers sont du
genre _t_m_a_c_._<_q_u_e_l_q_u_e _c_h_o_s_e_>, o� _<_q_u_e_l_q_u_e_-_c_h_o_s_e_> est l'argument de
l'option -m de groff. groff utilisera _t_m_a_c_._<_q_u_e_l_q_u_e_-_c_h_o_s_e_> quand
l'option -m <quelque-chose> sera donn�e. Souvent, l'espace entre "-m"
et <quelque-chose> est oubli�, on �crira donc groff -man pour
formater des pages de manuel en utilisant l'ensemble de macro tman.an.
Voil� la raison de ce nom bizarre "_t_m_a_n_._a_n".
En plus de _t_m_a_n_._a_n, il existe un autre ensemble de macro populaire,
_t_m_a_n_._d_o_c, originaire de l'universit� de Californie � Berkeley (UCB).
De nombreuses pages de manuels de BSD l'utilisent et il semble que UCB
en a fait son standard pour la documentation. Les macros de _t_m_a_n_._d_o_c
sont plus souples mais, h�las, il y a des lecteurs de pages de manuels
qui ne les utilisent pas mais qui appellent toujours groff -man. Par
exemple, toutes les versions du programme xman que j'ai rencontr�es
faisaient la t�te devant les pages de manuels requ�rant _t_m_a_n_._d_o_c. Donc
fa�tes-vous une faveur : utilisez _t_m_a_c_._a_n, utiliser un autre ensemble
de macros est consid�r� comme hasardeux. _t_m_a_c_._a_n_d_o_c est un pseudo
ensemble de macros qui regarde le source et charge soit _t_m_a_c_._a_n ou
_t_m_a_c_._d_o_c. En fait, tous les programmes de lecture du manuel devraient
l'utiliser mais jusqu'� pr�sent, peu le font, aussi il vaut mieux
assurer le coup en se cantonnant au bon vieux _t_m_a_c_._a_n. Tout ce que je
dirais � partir de maintenant concernant les macros est valable
seulement pour _t_m_a_c_._a_n. Si vous voulez quand m�me utiliser les macros
de _t_m_a_c_._d_o_c, voici un pointeur vers leur documentation et un mode
d'emploi tr�s d�taill� : www.bsdi.com/bsdi-man. Vous trouverez un
formulaire de recherche sur cette page. Entrez mdoc et il vous
trouvera mdoc(7) et mdoc.samples(7), un didacticiel sur la r�alisation
des pages de manuel BSD.
66..
QQuueellss pprr��pprroocceesssseeuurrss ppuuiiss--jjee uuttiilliisseerr ??
groff est fourni avec au moins 3 pr�processeurs, tbl, eqn et pic
(certains syst�mes les nomment gtbl, geqn et gpic). Ils sont destin�s
� traduire leurs macros et leurs donn�es en code source troff
standard. tbl est un pr�processeur de tableaux, eqn en est un
d'�quation et de math�matiques et pic g�re les images. Consultez leurs
pages de manuel pour d�couvrir les fonctionalit�s qu'ils proposent.
Mais autant �tre clair : n'�crivez pas de pages de manuel qui
utilisent des pr�processeurs.
eqn produira g�n�ralement un r�sultat catastrophique sur des
p�riph�riques du genre t�l�type, qui malheureusement repr�sentent 99%
des visualtions de pages de manuel. Par exemple _X_A_l_l_o_c_C_o_l_o_r_._3_x
contient des formules avec des exposants. A cause de la nature de ces
terminaux, l'exposant sera sur la m�me ligne que la base. �_N _p_u_i_s_s_a_n_c_e
_d_e_u_x� s'affichera "N2".
Il vaut mieux �viter tbl aussi, car je n'ai jamais vu aucun xman qui
fonctionne avec lui. xman 3.1.6 utilise la ligne de commande suivante
pour formater les pages de manuel, par exemple _s_i_g_n_a_l_(_7_) :
gtbl /usr/man/man7/signal.7 | geqn | gtbl | groff -Tascii -man \
/tmp/xmana01760 2> /dev/null
qui coince sur toutes les sources utilisant gtbl, car sa sortie est
redirig�e encore une fois vers gtbl. Le r�sultat donne une page de
manuel sans votre tableau. Je ne sais pas si c'est un bogue ou une
particularit� de gtbl qui s'�trangle sur sa propre sortie ou si xman
devrait �tre un peu plus gentil et ne pas utiliser gtbl deux fois...
De toute fa�on, si vous voulez un tableau, formatez-le vous-m�me et
mettez-le entre les lignes .nf et .fi ce qui permettra de ne pas le
formater. Vous ne pourrez pas avoir de gras ou d'italique par cette
m�thode mais elle permettra d'avoir votre tableau dans tous les cas.
Je n'ai jamais vu une page de manuel n�cessitant le pr�processeur pic
mais je n'aimerais pas �a. Comme vous pouvez le voir plus haut, xman
ne l'utilise pas et groff ferait s�rement la danse de Saint-Guy en
voyant les donn�es en entr�e.
77..
DDooiiss--jjee ddiissttrriibbuueerr lleess ssoouurrcceess eett//oouu llaa ddooccuummeennttaattiioonn dd��jj�� ffoorrmmaatt��ee ??
Voyons les avantages (+) et les inconv�nients (-) de quelques
possibilit�s choisies :
1. code source uniquement :
� (+) distribution plus petite ;
� (-) inutilisable sur les syst�mes ne disposant pas de groff.
2. verison format�e non compact�e uniquement :
� (+) utilisable m�me sur des syst�mes d�pourvus de groff ;
� (-) l'utilisateur ne peut pas g�n�rer un fichier dvi ou
PostScript ;
� (-) g�chis de l'espace disque sur les syst�mes sachant g�rer aussi
les pages compress�es.
3. version format�e et compact�e seulement :
� (+) utilisables m�me sur des syst�mes d�pourvus de groff ;
� (-) l'utilisateur ne peut pas g�n�rer de fichier dvi ou
PostScript ;
� (-) quel format de compactage utiliser ? .Z ? .z ? .gz ? Tous ?.
4. code source et la version format�e non compact�e :
� (+) accessible m�me sur les syst�mes ne disposant pas de groff ;
� (-) taille de la distribution plus grande ;
� (-) certains syst�mes peuvent n�cessiter des pages de manuels
formatt�es et compact�es ;
� (-) informations redondantes sur les syst�mes �quip�s de groff.
A mon avis, la meilleure solution est de distribuer uniquement le code
source. L'argument selon lequel la documentation ne pourra pas �tre
accessible sur les syst�mes sans groff n'a aucune importance. Plus de
500 pages de manuel du Projet de Documentation de Linux ne sont que
sous forme de code source. Les pages de manuel de XFree86 ne sont
disponibles que sous forme de code source. Les pages de manuel de la
FSF n'existent que sous forme de code source. En fait, j'ai rarement
vu des logiciels distribu�s avec les pages de manuels format�es. Si un
administrateur a besoin que les pages de manuel soient accessibles, il
aura forc�ment install� groff.
88..
QQuueelllleess ssoonntt lleess ccoonnvveennttiioonnss ppoouurr lleess ffoonntteess ??
Avant tout, n'utilisez pas les op�rateurs directs de fonte comme \fB
\fP, etc. Employez des macros avec des arguments. Cette m�thode vous
�vitera une erreur classique : oublier un changement de fonte � la fin
d'un mot ce qui provoque la continuation du gras ou de l'italique
jusqu'au prochain changement de fonte. Croyez-moi, �a arrive plus
souvent qu'on ne le pense !
Les macros _t_m_a_c_._a_n offrent les possibilit�s suivantes :
� .B caract�res gras
� .BI gras et italiques en alternance
� .BR gras et romain en alternance
� .I italiques
� .IB italiques et gras en alternance
� .IR italiques et romain en alternance
� .RB romain et gras en alternance
� .RI romain et italiques en alternance
� .SM taille r�duite (9/10 du corps normal)
� .SB gras, taille r�duite (NON petit et gras en alternance)
X et Y en alternance signifie que les arguments impairs seront
imprim�s en X et les pairs en Y. Par exemple :
.BI "Arg 1 est gras, " "arg2 est en italiques, " "arg3 en gras"
Les guillemets sont n�cessaires pour placer des espaces dans un
argument.
Voil� donc pour ce qui est possible. Voyons maintenant comment il faut
utiliser ces possibilit�s (des parties ont �t� honteusement copi�es de
man(7)) :
Bien qu'il existe de nombreuses conventions typographiques pour les
pages de manuel dans le monde UNIX, l'existence de plusieurs centaines
de pages de manuel sp�cifiques � Linux d�finit nos standards :
Pour les fonctions, les arguments sont toujours en italiques, m�me
dans la section SYNOPSYS, alors que le reste est en gras. Vous
�crirez donc :
.BI "mafonction(int " argc ", char **" argv );
Les noms de fichiers sont toujours en italiques, hormis dans la
section SYNOPSYS o� les fichiers � inclure sont en gras. Vous �crirez
alors :
.I /usr/include/stdio.h
et
.B #include <stdio.h>
Les noms des macros, qui sont habituellement en majuscules, sont en
gras :
.B MAXINT
Lors de l'�num�ration d'une liste de codes d'erreurs, ces codes sont
en gras. Cette liste fait g�n�ralement appel � la macro .TP
(paragraphe avec titre) comme ci-dessous :
.TP
.B EBADF
.I fd n'est pas un descripteur de fichier valide
.TP
.B EINVAL
.I fd ne convient pas pour �tre lu
Toute r�f�rence � une autre page de manuel (ou � la page courante) est
en gras. Si le num�ro de la section du manuel est indiqu�, il s'�crit
en roman, sans espace :
.BR man (7)
Les acronymes sont plus �l�gants lorsqu'ils apparaissent dans un corps
plus petit. Je recommande donc :
.SM UNIX
.SM ASCII
.SM TAB
.SM NFS
.SM LALR(1)
99..
CCoommmmeenntt ddooiiss--jjee pprr��sseenntteerr mmaa ppaaggee ddee mmaannuueell ??
Voil� quelques conseils pour rendre votre documentation plus s�re,
plus lisible et plus �formatable� :
� Les exemples doivent fonctionner : testez-les (utilisez le copier-
coller pour passer � votre shell ce que contient votre page de
manuel) et redirigez la sortie de votre commande dans votre page,
ne tapez pas ce que vous PENSEZ que votre programme affichera.
� relisez-vous, corrigez toutes les �ventuelles fautes de frappe ou
d'orthographe, fa�tes-vous relire par un tiers (surtout si vous ne
r�digez pas le texte dans votre langue natale) . (d'ailleurs ce
HOWTO n'a pas �t� relu... Y a-t-il un volontaire ?)
� testez votre page de manuel : est-ce que groff trouve des erreurs
lors du formatage ? C'est agr�able de trouver dans un commentaire
la ligne de commande qu'il faut taper pour le formatage. Est-ce que
la commande man(1) affiche des erreurs ou des avertissements
lorsqu'on appelle "man votre_programme" ? Est-ce que la fa�on dont
man(1) utilise le syst�me de formatage produit le r�sultat
escompt� ? Est-ce que cela fonctionne aussi bien avec xman(1x) et
tkman(1tk) ? XFree86 3.1 contient la version 3.1.6 de xman qui
d�compacte les pages avec :
gzip -c -d < %s > %s
zcat < %s > %s
� Est-ce que makewhatis(8) pourra extraire la ligne de description de
la section NAME ?
1100..
CCoommmmeenntt ppuuiiss--jjee aavvooiirr uunn tteexxttee eenn ppuurr AASSCCIIII ssaannss ttoouuss cceess ffiicchhuuss ^^HH^^
ddee ccoonnttrr��llee ??
Jetez un oeuil � la commande col(1), col peut enlever ces caract�res
d'effacement. Pour les impatients, voici la commande :
$ groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt
Les options -t et -e disent � groff d'utiliser les pr�processeurs tbl
et eqn. C'est inutile pour les pages de manuel ne n�cessitant pas de
pr�processeur mais cela ne g�ne pas, si ce n'est une surcharge du
processeur. D'un autre c�t�, ne pas utiliser -t alors qu'il est n�ces�
saire fera que les tableaux seront tr�s mal format�s. Vous pourrez
m�me trouver ("deviner" serait un terme plus exact) la commande n�ces�
saire pour traiter tel ou tel document groff (pas uniquement des pages
de manuel) par le biais de grog :
$ grog /usr/man/man7/signal.7
groff -t -man /usr/man/man7/signal.7
En fait, grog signifie "_G_R_O_f_f _G_u_e_s_s", et cet outil fait bien ce qu'il
dit (en anglais, guess = deviner...) : il tente de deviner la commande
n�cessaire pour formater un document groff en fonction de son contenu.
S'il �tait parfait, nous n'aurions jamais plus besoin d'options. Mais
s'il arrive qu'il d�termine un mauvais jeu de macros, je ne l'ai par
contre jamais vu se tromper sur les pr�processeurs � employer.
Voici un petit script Perl r�alis� par l'auteur de ce document, qui
peut supprimer les en-t�tes et les pieds de page, ce qui permet de
gagner quelques longueurs de papier lorsque l'on imprime de longues et
complexes pages de manuel. Sauvez-le dans un fichier nomm� _s_t_r_i_p_-
_h_e_a_d_e_r et mettez-le en mode 755.
#!/usr/bin/perl -n
# pour qu'il avale tout le fichier en une seule fois:
undef $/;
# on enleve les sauts de page:
s/\n{4}\S.{50,}\n{6}\S.{50,}\n{3}/\n/g;
# le premier en-tete et le dernier pied de page:
s/\n\S.{50,}\n//g;
# transorme deux ou plus lignes vides consecutives en une seule:
s/\n{3,}/\n\n/g;
# et voila ce qui reste...
print;
Il faut appeler ce programme en tant que premier filtre apr�s la
comande man, car il se base sur le nombre de sauts de ligne issus de
groff. Par exemple :
$ man bash | strip-headers | col -bx > bash.txt
1111..
CCoommmmeenntt aavvooiirr uunnee bbeellllee ppaaggee ddee mmaannuueell eenn PPoossttSSccrriipptt ??
$ groff -t -e -mandoc -Tps manpage.1 > manpage.ps
Imprimez-la � l'aide de votre imprimante PostScript pr�f�r�e ou d'un
interpr�teur. Voir la section pr�c�dente pour les options.
1122..
CCoommmmeenntt ffaaiirree ffoonnccttiioonnnneerr lleess pprrooggrraammmmeess aapprrooppooss eett wwhhaattiiss ??
Supposons que vous recherchiez les compilateurs install�s sur votre
syst�me et comment les invoquer (nous consid�rons le cas courant, o�
tout le manuel est en langue anglaise). Pour r�pondre � cette question
(fr�quemment pos�e), il faut faire :
$ apropos compiler
f77 (1) - Fortran 77 compiler
gcc (1) - GNU C and C++ compiler
pc (1) - Pascal compiler
apropos et whatis sont utilis�es pour obtenir une r�ponse rapide sur
les pages de manuels qui contiennent des informations sur un certain
sujet. Les deux programmes cherchent dans des fichiers nomm�s _w_h_a_t_i_s
qui sont dans chaque r�pertoire de base du manuel. Comme je l'ai d�j�
dit, les fichiers de la base de donn�es _w_h_a_t_i_s contiennent une entr�e
d'une ligne pour chaque page de manuel dans l'arborescence des
r�pertoires successifs. En fait, cette ligne est exactement celle de
la section NAME (pour �tre pr�cis : tout est r�duit � une seule ligne
et le tiret est supprim�, la section �tant plac�e entre parenth�ses).
Ces fichiers sont cr��s � l'aide du programme makewhatis(8). Il en
existe plusieurs versions, donc r�f�rez-vous � la page de manuel du
programme pour conna�tre les options possibles. Afin que makefile
puisse extraire les sections NAME correctement, il est important que
vous, le r�dacteur du manuel, respectiez le format de cette section
d�crit dans la partie 2. La diff�rence entre apropos et whatis est ce
qu'ils recherchent et o�. apropos (qui est l'�quivalent de man -k)
cherche la cha�ne de caract�res qui lui est pass�e en argument
n'importe o� dans la ligne alors que whatis (�quivalent de man -f)
recherche dans la partie avant le tiret un nom de commande complet.
Par cons�quence, whatis dira s'il y a un manuel de cc mais restera
muet pour gcc.
1133..
LLaa llaanngguuee ffrraann��aaiissee
C'est bien s�r � vous de d�cider si vous allez r�diger votre manuel en
fran�ais, en anglais ou dans ces deux langues. Le fran�ais poss�de des
r�gles typographiques tr�s diff�rentes de l'anglais : n'esp�rez pas
pouvoir les respecter avec les outils de formatage du manuel.
Consultez la documentation de groff si vous d�sirez lui faire prendre
en compte les motifs de c�sure de la langue de Moli�re, mais en ayant
conscience que ce ne sera sans doute pas possible sur tous les
syst�mes sur lesquels votre documentation est susceptible d'�tre
exploit�e.
Vous pouvez utiliser les caract�res accentu�s, pourvu qu'ils soient
saisis selon la norme ISO-8859-1 (standard sous Linux). Les pages
devront alors �tre format�es avec l'option -Tlatin1 . Mais il faudra
que toute la cha�ne de visualisation soit capable de g�rer les
caract�res ISO sur 8 bits, ce qui est rarement le cas sans une
configuration particuli�re des utilitaires more ou less g�n�ralement
employ�s.
Vous voil� pr�venu !
1144..
LLeess ccoonnddiittiioonnss ddee ccooppiiee
Copyright 1995, 96, 97 Jens Schweikardt
[email protected]
T�l�phone : ++49 7151 909516
Sauf mention contraire, les documents Linux _H_O_W_T_O portent le copyright
de leurs auteurs respectifs. Ils peuvent �tre reproduits et distribu�s
en tout ou partie, sur n'importe quel support physique ou
�lectronique, � condition que cette notice soit incluse dans chaque
copie. La redistribution est autoris�e et encourag�e ; toutefois,
l'auteur voudrait en �tre pr�venu.
Toutes les traductions, travaux d�riv�s ou compilation de travaux
incluant des documents Linux _H_O_W_T_O doivent �tre couverts par ce
copyright. C'est-�-dire que vous ne pouvez pas produire un travail
d�riv� d'un HOWTO et imposer des restrictions suppl�mentaires sur sa
distribution. Des d�rogations � ces r�gles peuvent �tre accord�es sous
certaines conditions : contactez le coordinateur des Linux _H_O_W_T_O dont
l'adresse est donn�e plus loin.
En r�sum�, nous d�sirons promouvoir la diffusion de ces informations �
travers tous les canaux de communication possibles. Cependant, nous
voulons conserver la propri�t� des _H_O_W_T_O et aimerions �tre tenu au
courant de tout projet de redistribution.
Si vous avez des questions, contactez Greg Hankins, le coordinateur,
par courrier �lectronique � l'adresse
[email protected].