This file is indexed.

/usr/share/doc/HOWTO/fr-html/Man-Page.html is in doc-linux-fr-html 2013.01-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Man page HOWTO</title>
</head>
<body>
<h1>Man page HOWTO</h1>
<h2>Auteur : Jens Schweikhardt <a href=
"mailto:schweikh@noc.dfn.de">schweikh@noc.dfn.de</a><br>
<a href=
"http://www.shuttle.de/schweikh/home.html">www.shuttle.de/schweikh/home.html</a></h2>
Mars 1998
<hr>
<em>(Adaptation fran&ccedil;aise par Alexandre Devaure <a href=
"mailto:adevaure@mail.dotcom.fr">adevaure@mail.dotcom.fr</a>, 2
juin 1999). Ce HOWTO explique ce que vous devrez avoir en
t&ecirc;te quand vous pr&eacute;voyez d'&eacute;crire une
documentation en ligne (plus connue sous le nom de page de manuel)
que vous voulez rendre accessible via la commande
<code>man(1)</code>. Tout au long de ce HOWTO, une entr&eacute;e du
manuel sera simplement appel&eacute;e page de manuel, quelque soit
sa longueur r&eacute;elle et sans intention sexiste.</em>
<hr>
<h2><a name="s1">1. Quelques &eacute;vidences &agrave; propos de la
documentation</a></h2>
<p>Pourquoi &eacute;crivons-nous une documentation&nbsp;? C'est une
question b&ecirc;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 &eacute;crit et rendu
disponible. Mais &eacute;crire une documentation n'est pas
suffisant&nbsp;:</p>
<ul>
<li>la documentation doit &ecirc;tre accessible. Si elle est
cach&eacute;e &agrave; un endroit non standard o&ugrave; les outils
de recherche relatifs &agrave; la documentation ne la trouveront
pas, comment peut-elle remplir son r&ocirc;le&nbsp;?</li>
<li>la documentation doit &ecirc;tre fiable et pr&eacute;cise. Il
n'y a rien de plus irritant qu'un programme se comportant
diff&eacute;remment de ce qui est &eacute;crit dans sa
documentation. Les utilisateurs vous maudiront, vous enverront des
courriers d'insulte, puis rejetteront &agrave; jamais tout autre
travail venant de vous.</li>
</ul>
La m&eacute;thode traditionnelle pour acc&eacute;der &agrave; la
documentation sous UNIX fait appel &agrave; la commande
<code>man(1)</code>. Ce HOWTO d&eacute;crit ce que vous devez faire
pour &eacute;crire une page de manuel qui sera correctement
trait&eacute;e par les outils pr&eacute;vus &agrave; cet effet,
dont les plus importants sont <code>man(1)</code>,
<code>xman(1x)</code>, <code>apropos(1)</code>,
<code>makewhatis(8)</code> et <code>catman(8)</code>.
<p>La qualit&eacute; et la v&eacute;racit&eacute; des informations
sont, bien s&ucirc;r, de votre ressort. Malgr&eacute; tout, vous
trouverez dans ce guide quelques id&eacute;es qui vous permettront
d'&eacute;viter certains pi&egrave;ges courants.</p>
<h2><a name="s2">2. Comment acc&egrave;de-t-on aux pages de manuel
?</a></h2>
<p>Vous devez conna&icirc;tre avec pr&eacute;cision le
m&eacute;canisme d'acc&egrave;s aux pages de manuel afin de savoir
donner un nom correct &agrave; vos documents, et d'&ecirc;tre
capable de les installer au bon endroit. Chaque page de manuel
appartient &agrave; une section sp&eacute;cifique,
d&eacute;not&eacute;e par un simple chiffre. Les sections les plus
courantes rencontr&eacute;es sous Linux sont :</p>
<ul>
<li>1 : commandes utilisateurs pouvant &ecirc;tre
ex&eacute;cut&eacute;es par tout le monde&nbsp;;</li>
<li>2 : appels syst&egrave;mes, c'est-&agrave;-dire les fonctions
fournies par le noyau&nbsp;;</li>
<li>3 : fonctions des biblioth&egrave;ques&nbsp;;</li>
<li>4 : p&eacute;riph&eacute;riques, c'est-&agrave;-dire les
fichiers sp&eacute;ciaux que l'on trouve dans le r&eacute;pertoire
<code>/dev</code>&nbsp;;</li>
<li>5 : descriptions des formats de fichiers (comme par exemple
<code>/etc/passwd</code>&nbsp;;</li>
<li>6 : les jeux, sans commentaire...</li>
<li>7 : divers (macros, conventions particuli&egrave;res,
...)&nbsp;;</li>
<li>8 : outils d'administration ex&eacute;cutables uniquement par
le super utilisateur&nbsp;;</li>
<li>9 : un autre endroit (sp&eacute;cifique &agrave; Linux)
destin&eacute; &agrave; la documentation des services offerts par
le noyau&nbsp;;</li>
<li>n : nouvelle documentation, qui pourra &ecirc;tre
d&eacute;plac&eacute;e vers un endroit appropri&eacute;&nbsp;;</li>
<li>o : ancienne documentation, qui peut &ecirc;tre
conserv&eacute;e encore un certain temps&nbsp;;</li>
<li>l : documentation locale, propre &agrave; ce syst&egrave;me
particulier.</li>
</ul>
Le nom du fichier source d'une page de manuel (le fichier
d'entr&eacute;e du syst&egrave;me de formatage) est le nom de la
commande d&eacute;crite (ou de la fonction, du fichier, etc.),
suivi d'un point et du num&eacute;ro de section. Si, par exemple,
vous documentez le format du fichier "<i>passwd</i>", vous devez
appeler le fichier source "<i>passwd.5</i>". Nous avons ici un
exemple d'un fichier qui porte le m&ecirc;me nom qu'une
commande&nbsp;; nous aurions tout aussi bien avoir une fonction de
biblioth&egrave;que appel&eacute;e "<i>passwd</i>". L'organisation
en sections constitue la m&eacute;thode habituelle pour
r&eacute;soudre ces ambigu&iuml;t&eacute;s : la description de la
commande se trouvera dans le fichier "<i>passwd.1</i>" et notre
hypoth&eacute;tique fonction de biblioth&egrave;que dans
"<i>passwd.3</i>".
<p>Quelquefois, une lettre est ajout&eacute;e au num&eacute;ro de
section comme par exemple "<i>xterm.1x</i>" ou "<i>wish.1tk</i>".
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&eacute; ; <code>xman</code>, par exemple
affichera "<i>xterm(x)</i>" et "<i>wish(tk)</i>" dans la liste des
documents disponibles.</p>
<p>S'il vous pla&icirc;t, n'utilisez pas les sections n, o et
l&nbsp;: selon le standard du syst&egrave;me de fichiers (File
System Standard), ces sections sont d&eacute;conseill&eacute;es,
utilisez plut&ocirc;t les sections num&eacute;riques.</p>
<p>Attention aux &eacute;ventuels conflits de noms avec des
programmes, fonctions ou fichiers d&eacute;j&agrave; existants. Ce
serait certainement une mauvaise id&eacute;e d'&eacute;crire un
autre &eacute;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 &eacute;viterez que quelqu'un
ex&eacute;cute votre programme et qu'il lise la page de manuel d'un
autre ou <i>vice verca</i>. Vous pouvez &eacute;ventuellement vous
aider de la base de donn&eacute;es "lsm" qui recense beaucoup de
programmes disponibles pour Linux.</p>
<p>Maintenant que nous savons quel nom donner &agrave; notre
fichier, la prochaine d&eacute;cision est de choisir le
r&eacute;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&eacute;pertoires
&agrave; partir d'une racine m&eacute;moris&eacute;e dans la
variable d'environnement MANPATH. Les outils de traitement de la
documentation l'utilisent de la m&ecirc;me mani&egrave;re que le
shell utilise la variable PATH pour trouver les ex&eacute;cutables.
En fait, MANPATH a le m&ecirc;me format que PATH : toutes les deux
sont une liste de r&eacute;pertoires s&eacute;par&eacute;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&eacute;e, /usr/man est utilis&eacute;e
comme valeur par d&eacute;faut. Dans le but d'acc&eacute;lerer la
recherche et pour garder les r&eacute;pertoires de taille
raisonable, les r&eacute;pertoires point&eacute;s dans MANPATH
(aussi appel&eacute;s r&eacute;pertoires de base) contiennent une
multitude de sous-r&eacute;pertoires nomm&eacute;s
"<i>man&lt;s&gt;</i>" o&ugrave; &lt;s&gt; d&eacute;signe le
caract&egrave;re correspondant &agrave; la section
pr&eacute;sent&eacute; plus haut. Toutes les sections ne sont pas
repr&eacute;sent&eacute;es, il n'y a pas, par exemple de raison de
garder une entr&eacute;e "<i>mano</i>". Vous pourrez y trouver
&eacute;galement des sous-r&eacute;pertoires appel&eacute;s
"<i>cat&lt;s&gt;</i>", "<i>dvi&lt;s&gt;</i>" et
"<i>ps&lt;s&gt;</i>", qui contiennent toute la documentation
format&eacute;e, pr&ecirc;te &agrave; &ecirc;tre affich&eacute;e ou
imprim&eacute;e&nbsp;: nous reviendrons sur ce sujet plus loin. Le
seul fichier &agrave; &ecirc;tre pr&eacute;sent &agrave;
c&ocirc;t&eacute; de ces sous-r&eacute;pertoires du
r&eacute;pertoire de base s'appelle "<i>whatis</i>". Le but et la
cr&eacute;ation de ce fichier sera d&eacute;crit dans la section
11. La m&eacute;thode la plus s&ucirc;re pour installer au bon
endroit une page de manuel de la section "s" est de mettre le
fichier dans le r&eacute;pertoire "<i>/usr/man/man&lt;s&gt;</i>".
Toutefois, un bon <code>Makefile</code> devra autoriser
l'utilisateur de choisir un autre r&eacute;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
&ecirc;tre configur&eacute;es &agrave; l'aide de l'option
<code>--prefix=/nom/option</code>. Les pages de manuels
correspondantes seront alors install&eacute;es &agrave; partir du
r&eacute;pertoire de base <i>/mon/option/man</i>. Je vous
sugg&egrave;re d'utiliser une m&eacute;thode similaire pour vos
r&eacute;alisations personnelles.</p>
<p>Depuis l'av&egrave;nement du "<i>Syst&egrave;me de fichiers
standard</i>" pour Linux (FS-STnd), les choses se sont
compliqu&eacute;es. Le FS-STnd 1.2 stipule que&nbsp;:</p>
<blockquote>des am&eacute;nagements doivent &ecirc;tre faits dans
la structure de <i>/usr/man</i> pour supporter des pages de manuel
&eacute;crites dans diff&eacute;rentes (ou mutiples)
langues.</blockquote>
<p>Ceci est fait en introduisant un niveau de r&eacute;pertoires
suppl&eacute;mentaire qui distingue les diff&eacute;rentes langues.
Citant encore le FS-Stnd 1.2&nbsp;:</p>
<blockquote>Le nommage des sous-r&eacute;pertoires correspondants
aux langues de <i>/usr/man</i> est bas&eacute; sur l'appendice E du
standard POSIX 1003.1 qui d&eacute;crit la cha&icirc;ne de
caract&egrave;res d'authentification <i>locale</i> (qui est la
m&eacute;thode la mieux accept&eacute;e pour d&eacute;crire un
environement culturel). La cha&icirc;ne <i>locale</i> se
pr&eacute;sente sous la forme
<pre>
            &lt;langage&gt;[_&lt;pays&gt;][.&lt;jeu-de-caracteres&gt;][,&lt;version&gt;]
          
</pre></blockquote>
(Reportez vous au FS-Stnd pour voir quelques cha&icirc;nes
<i>locale</i>courantes.) D'apr&egrave;s ces recommandations, nous
avons nos pages de manuel dans
<i>/usr/man/&lt;locale&gt;/man[1-9lno]</i>. Les versions
format&eacute;es se trouveraient alors bien entendu dans
<i>/usr/man/&lt;locale&gt;/cat[1-9lno]</i>&nbsp;: nous pourrions ne
les fournir que pour une seule langue.
<p>TOUTEFOIS, je (l'auteur du document, pas le traducteur) ne peut
pas recommander de passer a cette structure en l'&eacute;tat actuel
des choses. Le FS-Stnd 1.2 autorise aussi que</p>
<blockquote>les syst&egrave;mes qui n'utilisent qu'une seule langue
et jeu de caract&egrave;res pour toutes les pages de manuel peuvent
omettre la sous-cha&icirc;ne <i>&lt;locale&gt;</i> et stocker
toutes ces pages dans le r&eacute;pertoire <i>mandir</i>. Par
exemple, les machines &eacute;quip&eacute;es seulement de pages de
manuel en anglais cod&eacute;es en ASCII peuvent mettre les pages
de manuel (les r&eacute;pertoires <i>man[1-9]</i>) directement dans
<i>/usr/man/</i>. Il s'agit en fait de l'arrangement
habituel.</blockquote>
<p>Je (l'auteur du document, pas le traducteur) ne changerai pas ma
configuration tant que tous les outils (comme <code>xman</code>,
<code>info</code>, <code>tkman</code> et beaucoup d'autres) ne
seront pas tous adapt&eacute;s &agrave; cette nouvelle
structure.</p>
<h2><a name="s3">3. A quoi ressemble une page de manuel
format&eacute;e&nbsp;?</a></h2>
<p>Laissez-moi vous pr&eacute;senter un exemple que j'expliquerai
plus tard. En raison de la nature et du mode de r&eacute;alisation
de ce document, nous ne pouvons pas reproduire les
caract&egrave;res accentu&eacute;s, ni les diff&eacute;rents
enrichissements du texte (gras et italiques principalement)&nbsp;;
consultez la section traitant des polices de caract&egrave;res pour
obtenir des d&eacute;tails sur ces possibilit&eacute;s.</p>
<p>Voici comment se pr&eacute;sente la page de manuel de notre
programme hyphoth&eacute;tique "<code>prout</code>"&nbsp;:</p>
<pre>


      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    &lt;dugenou@renux.freenix.fr&gt;

      VOIR AUSSI
             gloup(1), plaf(1), prout(5).

      Linux                      JANVIER 1996                         1
        
</pre>
<p>Et voici les explications promises&nbsp;:</p>
<dl>
<dt><b>La section NAME&nbsp;:</b></dt>
<dd>
<p>C'est la seule section requise. Les pages de manuel sans une
section "NAME" sont aussi utiles que des r&eacute;frigerateurs au
P&ocirc;le Nord. Cette section a aussi un format standardis&eacute;
constitu&eacute; d'une liste de programmes ou noms de fonctions
s&eacute;par&eacute;s par des virgules suivie d'un tiret et d'une
courte description (habituellement une ligne) de la
fonctionnalit&eacute; que le programme (fonction ou fichier) est
suppos&eacute; dispenser. A l'aide de <code>makewhatis(8)</code>
les sections NAME sont incluses dans les fichiers de la base de
donn&eacute;es de <code>whatis</code>. <code>makewhatis</code> est
la raison pour laquelle la section NAME doit exister et pourquoi
elle doit adh&eacute;rer au format que j'ai d&eacute;crit. Dans le
source groff, elle doit ressembler &agrave;&nbsp;:</p>
<blockquote><code>.SH NAME prout \- proutibule de la bibliotheque
plaf</code></blockquote>
Le <code>\-</code> est important ici&nbsp;: le backslash sert a
faire la diff&eacute;rence entre le tiret et une marque de
c&eacute;sure qui peut appara&icirc;tre &agrave; l'int&eacute;rieur
du nom de la commande ou dans la ligne de description.
<p><b>Attention</b>&nbsp;: en l'&eacute;tat actuel des choses, vous
ne pouvez pas traduire NAME par NOM en fran&ccedil;ais, &agrave;
moins de modifier la plupart des programmes <code>makewhatis</code>
existants. C'est bien dommage.</p>
</dd>
<dt><b>La section SYNOPSYS</b></dt>
<dd>
<p>... est cens&eacute;e donner un aper&ccedil;u sur les options du
programme. Pour les fonctions, cette section fait la liste des
fichiers &agrave; inclure et son prototype pour que le programmeur
connaisse le type et le nombre d'arguments ainsi que le type de
retour.</p>
</dd>
<dt><b>La section DESCRIPTION</b></dt>
<dd>
<p>Elle explique en d&eacute;tail pourquoi votre s&eacute;quence de
0 et de 1 est la meilleure de toutes. C'est ici que vous
&eacute;talez tout votre savoir&nbsp;! Gagnez l'estime des autres
programmeurs et des utilisateurs en faisant de cette section une
source d'information s&ucirc;re et d&eacute;taill&eacute;e.
Expliquez &agrave; quoi servent les arguments, le format de
fichier, les algorithmes qui effectuent le plus dur du travail.</p>
</dd>
<dt><b>La section OPTIONS</b></dt>
<dd>
<p>Elle donne une description pour chaque option, comment elle
affecte le fonctionnement du programme. Vous le saviez, n'est-ce
pas&nbsp;?</p>
</dd>
<dt><b>La section FICHIERS</b></dt>
<dd>
<p>Elle indique les fichiers utilis&eacute;s par le programme ou la
fonction. Par exemple, les fichiers de configuration, les fichiers
de d&eacute;marrage, les fichiers sur lesquels le programme agit.
Ce serait une bonne id&eacute;e de donner les chemins absolus de
ces fichiers et d'avoir un processus d'installation qui modifie la
partie r&eacute;pertoire selon les pr&eacute;f&eacute;rences de
l'utilisateur&nbsp;: les manuels de <code>groff</code> ont comme
pr&eacute;fixe par d&eacute;faut <i>/usr/local</i>, donc ils
r&eacute;f&eacute;rencent <i>/usrl/local/lib/groff/*</i> par
d&eacute;faut. Cependant, si vous installez en utilisant
"<code>make prefix=/opt/gnu</code>", les r&eacute;f&eacute;rences
dans la page de manuel change en <i>/opt/gnu/lib/groff/*</i>.</p>
</dd>
<dt><b>La section ENVIRONNEMENT</b></dt>
<dd>
<p>fait la liste de toutes les variables d'environnement qui
affectent votre programme ou fonction et, bien s&ucirc;r, explique
comment. La plupart du temps, les variables contiendront les
chemins, nom de fichiers, options par d&eacute;faut.</p>
</dd>
<dt><b>La section DIAGNOSTIQUES</b></dt>
<dd>
<p>Elle doit donner une vue d'ensemble des messages d'erreurs les
plus courants de votre programme et des &eacute;ventuelles
solutions &agrave; ces probl&egrave;mes. Il n'est pas
n&eacute;cessaire d'expliquer les messages d'erreurs du
syst&egrave;me (de <code>perror(3)</code>) ou des signaux fatals
(de <code>psignal(3)</code>) qui peuvent appara&icirc;tre pendant
l'ex&eacute;cution de tout programme.</p>
</dd>
<dt><b>La section BOGUES</b></dt>
<dd>
<p>Devrait id&eacute;alement ne pas exister. Si vous &ecirc;tes
brave, vous pouvez d&eacute;crire ici les limitations, les
inconv&eacute;nients, les caract&eacute;ristiques que certains
pourraient prendre pour des d&eacute;fauts. Si vous n'&ecirc;tes
pas brave, renommez-la en section "A FAIRE".</p>
</dd>
<dt><b>La section AUTEUR</b></dt>
<dd>
<p>Il est appr&eacute;ciable de l'avoir quand il y a des erreurs
grossi&egrave;res dans la documentation ou dans le comportement du
programme et que vous voulez envoyer un rapport de bogue.</p>
</dd>
<dt><b>La section VOIR AUSSI</b></dt>
<dd>
<p>C'est une liste de pages de manuel relatives &agrave;
l'application cit&eacute;es par ordre alphab&eacute;tique. Par
convention, c'est la derni&egrave;re section.</p>
</dd>
</dl>
Vous &ecirc;tes libres d'en inventer d'autres si elles n'empietent
pas sur celles d&eacute;crites au-dessus. Nous avons volontairement
d&eacute;crit une version francis&eacute;e de page de manuel,
puisque ce document est destin&eacute; aux pays francophones.
N&eacute;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&eacute;alit&eacute;, dans l'ordre : NAME,
SYNOPSIS, DESCRIPTION, OPTIONS, FILES, ENVIRONMENT, DIAGNOSTICS,
BUGS, AUTHOR et SEE ALSO.
<p>Donc comment g&eacute;n&eacute;rer cette page de manuel ?
J'attendais cette question, voici le source&nbsp;:</p>
<pre>
 .\" 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    &lt;dugenou@renux.freenix.fr&gt;
 .SH "VOIR AUSSI"
 .BR gloup (1),
 .BR plaf (1),
 .BR prout (5).
        
</pre>
<h2><a name="s4">4. Comment documenter plusieurs choses dans une
seule page de manuel&nbsp;?</a></h2>
<p>De nombreux programmes (<code>grep</code>, <code>egrep</code>)
et fonctions (<code>printf</code>, <code>fprintf</code>,...) sont
document&eacute;es dans une seule page de manuel. Cependant, ces
pages seraient inutilisables si elles n'&eacute;taient accessibles
que par un seul nom. Nous ne pouvous nous attendre &agrave; ce
qu'un utilisateur se souviennent que la page de manuel de
<code>egrep</code> est en fait celle de <code>grep</code>. Il est
par cons&eacute;quent indispensable que la page soit accessible
sous diff&eacute;rents noms. Vous avez plusieurs
possibilit&eacute;s pour y arriver&nbsp;:</p>
<ol>
<li>avoir des copies identiques pour chaque nom&nbsp;;</li>
<li>connecter toutes les pages de manuels en utilisant des liens
physiques&nbsp;;</li>
<li>utiliser les liens symboliques pointant la page de
manuel&nbsp;;</li>
<li>utiliser le m&eacute;canisme de "source" de <code>groff</code>
fournie par la macro "<code>.SO</code>".</li>
</ol>
La premi&egrave;re possibilit&eacute; est une perte de place. La
deuxi&egrave;me n'est pas recommand&eacute;e parce que les versions
intelligentes du programme <code>catman</code> peuvent gagner
beaucoup de temps en regardant le type du fichier et son contenu.
Les liens physiques r&eacute;duiraient l'efficacit&eacute; de cet
outil (dont le but est de formater toutes les pages de manuel pour
qu'elles soient affich&eacute;es plus rapidement). La
troisi&egrave;me alternative comporte un pi&egrave;ge si vous
&ecirc;tes concern&eacute; par la portabilit&eacute;, vous devez
savoir qu'il existe des syst&egrave;mes de fichiers qui ne
supportent pas les liens symboliques. En bref, la Meilleure Chose
(TM) est d'utiliser le m&eacute;canisme source de
<code>groff</code>.
<p>Voila comment l'utiliser&nbsp;: si vous voulez que votre page
soit accessible sous les noms <code>truc</code> et
<code>bidule</code> dans la section 1, alors mettez la page de
manuel dans <code>truc.1</code> et r&eacute;alisez le fichier
<code>bidule.1</code> contenant&nbsp;:</p>
<blockquote>
<pre>
<code>    .SO man1/truc.1
          
</code>
</pre></blockquote>
Il est important de sp&eacute;cifier le r&eacute;pertoire
<i>man1/</i> aussi bien que le nom du fichier <code>truc.1</code>
car lors de l'ex&eacute;cution de <code>groff</code>, celui-ci aura
comme r&eacute;pertoire courant le r&eacute;pertoire de base des
pages de manuel, et il interpr&egrave;tera les arguments de
<code>.SO</code> comme &eacute;tant relatifs &agrave; cet
emplacement.
<h2><a name="s5">5. Quel ensemble de macros
utiliser&nbsp;?</a></h2>
<p>Il y a de nombreux ensembles de macros &eacute;tudi&eacute;s
sp&eacute;cialement pour &eacute;crire des pages de manuel. Ils
sont habituellement dans le r&eacute;pertoire de macro de
<code>groff</code> <i>/usr/lib/groff/tmac</i>. Les noms de fichiers
sont du genre <i>tmac.&lt;quelque chose&gt;</i>, o&ugrave;
<i>&lt;quelque-chose&gt;</i> est l'argument de l'option -m de
<code>groff</code>. <code>groff</code> utilisera
<i>tmac.&lt;quelque-chose&gt;</i> quand l'option <code>-m
&lt;quelque-chose&gt;</code> sera donn&eacute;e. Souvent, l'espace
entre "-m" et &lt;quelque-chose&gt; est oubli&eacute;, on
&eacute;crira donc <code>groff -man</code> pour formater des pages
de manuel en utilisant l'ensemble de macro tman.an. Voil&agrave; la
raison de ce nom bizarre "<i>tman.an</i>".</p>
<p>En plus de <i>tman.an</i>, il existe un autre ensemble de macro
populaire, <i>tman.doc</i>, originaire de l'universit&eacute; de
Californie &agrave; 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 <i>tman.doc</i> sont plus souples
mais, h&eacute;las, il y a des lecteurs de pages de manuels qui ne
les utilisent pas mais qui appellent toujours <code>groff
-man</code>. Par exemple, toutes les versions du programme
<code>xman</code> que j'ai rencontr&eacute;es faisaient la
t&ecirc;te devant les pages de manuels requ&eacute;rant
<i>tman.doc</i>. Donc fa&icirc;tes-vous une faveur : utilisez
<i>tmac.an</i>, utiliser un autre ensemble de macros est
consid&eacute;r&eacute; comme hasardeux. <i>tmac.andoc</i> est un
pseudo ensemble de macros qui regarde le source et charge soit
<i>tmac.an</i> ou <i>tmac.doc</i>. En fait, tous les programmes de
lecture du manuel devraient l'utiliser mais jusqu'&agrave;
pr&eacute;sent, peu le font, aussi il vaut mieux assurer le coup en
se cantonnant au bon vieux <i>tmac.an</i>. Tout ce que je dirais
&agrave; partir de maintenant concernant les macros est valable
seulement pour <i>tmac.an</i>. Si vous voulez quand m&ecirc;me
utiliser les macros de <i>tmac.doc</i>, voici un pointeur vers leur
documentation et un mode d'emploi tr&egrave;s
d&eacute;taill&eacute;&nbsp;: <a href=
"http://www.bsdi.com/bsdi-man">www.bsdi.com/bsdi-man</a>. Vous
trouverez un formulaire de recherche sur cette page. Entrez
<code>mdoc</code> et il vous trouvera <code>mdoc(7)</code> et
<code>mdoc.samples(7)</code>, un didacticiel sur la
r&eacute;alisation des pages de manuel BSD.</p>
<h2><a name="s6">6. Quels pr&eacute;processeurs puis-je
utiliser&nbsp;?</a></h2>
<p><code>groff</code> est fourni avec au moins 3
pr&eacute;processeurs, <code>tbl</code>, <code>eqn</code> et
<code>pic</code> (certains syst&egrave;mes les nomment
<code>gtbl</code>, <code>geqn</code> et <code>gpic</code>). Ils
sont destin&eacute;s &agrave; traduire leurs macros et leurs
donn&eacute;es en code source <code>troff</code> standard.
<code>tbl</code> est un pr&eacute;processeur de tableaux,
<code>eqn</code> en est un d'&eacute;quation et de
math&eacute;matiques et <code>pic</code> g&egrave;re les images.
Consultez leurs pages de manuel pour d&eacute;couvrir les
fonctionalit&eacute;s qu'ils proposent.</p>
<p>Mais autant &ecirc;tre clair&nbsp;: n'&eacute;crivez pas de
pages de manuel qui utilisent des pr&eacute;processeurs.</p>
<p><code>eqn</code> produira g&eacute;n&eacute;ralement un
r&eacute;sultat catastrophique sur des p&eacute;riph&eacute;riques
du genre t&eacute;l&eacute;type, qui malheureusement
repr&eacute;sentent 99% des visualtions de pages de manuel. Par
exemple <i>XAllocColor.3x</i> contient des formules avec des
exposants. A cause de la nature de ces terminaux, l'exposant sera
sur la m&ecirc;me ligne que la base. &laquo;<i>N puissance
deux</i>&raquo; s'affichera "N2".</p>
<p>Il vaut mieux &eacute;viter <code>tbl</code> aussi, car je n'ai
jamais vu aucun <code>xman</code> qui fonctionne avec lui.
<code>xman 3.1.6</code> utilise la ligne de commande suivante pour
formater les pages de manuel, par exemple
<i>signal(7)</i>&nbsp;:</p>
<pre>
gtbl /usr/man/man7/signal.7 | geqn | gtbl | groff -Tascii -man \
/tmp/xmana01760 2&gt; /dev/null
        
</pre>
qui coince sur toutes les sources utilisant <code>gtbl</code>, car
sa sortie est redirig&eacute;e encore une fois vers
<code>gtbl</code>. Le r&eacute;sultat donne une page de manuel sans
votre tableau. Je ne sais pas si c'est un bogue ou une
particularit&eacute; de <code>gtbl</code> qui s'&eacute;trangle sur
sa propre sortie ou si <code>xman</code> devrait &ecirc;tre un peu
plus gentil et ne pas utiliser <code>gtbl</code> deux fois... De
toute fa&ccedil;on, si vous voulez un tableau, formatez-le
vous-m&ecirc;me et mettez-le entre les lignes <code>.nf</code> et
<code>.fi</code> ce qui permettra de ne pas le formater. Vous ne
pourrez pas avoir de gras ou d'italique par cette m&eacute;thode
mais elle permettra d'avoir votre tableau dans tous les cas.
<p>Je n'ai jamais vu une page de manuel n&eacute;cessitant le
pr&eacute;processeur <code>pic</code> mais je n'aimerais pas
&ccedil;a. Comme vous pouvez le voir plus haut, <code>xman</code>
ne l'utilise pas et <code>groff</code> ferait s&ucirc;rement la
danse de Saint-Guy en voyant les donn&eacute;es en
entr&eacute;e.</p>
<h2><a name="s7">7. Dois-je distribuer les sources et/ou la
documentation d&eacute;j&agrave; format&eacute;e&nbsp;?</a></h2>
<p>Voyons les avantages (+) et les inconv&eacute;nients (-) de
quelques possibilit&eacute;s choisies&nbsp;:</p>
<ol>
<li>code source uniquement&nbsp;:
<ul>
<li>(+) distribution plus petite&nbsp;;</li>
<li>(-) inutilisable sur les syst&egrave;mes ne disposant pas de
<code>groff</code>.</li>
</ul>
</li>
<li>verison format&eacute;e non compact&eacute;e uniquement&nbsp;:
<ul>
<li>(+) utilisable m&ecirc;me sur des syst&egrave;mes
d&eacute;pourvus de <code>groff</code>&nbsp;;</li>
<li>(-) l'utilisateur ne peut pas g&eacute;n&eacute;rer un fichier
dvi ou PostScript&nbsp;;</li>
<li>(-) g&acirc;chis de l'espace disque sur les syst&egrave;mes
sachant g&eacute;rer aussi les pages compress&eacute;es.</li>
</ul>
</li>
<li>version format&eacute;e et compact&eacute;e seulement&nbsp;:
<ul>
<li>(+) utilisables m&ecirc;me sur des syst&egrave;mes
d&eacute;pourvus de <code>groff</code>&nbsp;;</li>
<li>(-) l'utilisateur ne peut pas g&eacute;n&eacute;rer de fichier
dvi ou PostScript&nbsp;;</li>
<li>(-) quel format de compactage utiliser&nbsp;? .Z&nbsp;? .z ?
.gz&nbsp;? Tous&nbsp;?.</li>
</ul>
</li>
<li>code source et la version format&eacute;e non
compact&eacute;e&nbsp;:
<ul>
<li>(+) accessible m&ecirc;me sur les syst&egrave;mes ne disposant
pas de <code>groff</code>&nbsp;;</li>
<li>(-) taille de la distribution plus grande&nbsp;;</li>
<li>(-) certains syst&egrave;mes peuvent n&eacute;cessiter des
pages de manuels formatt&eacute;es et compact&eacute;es&nbsp;;</li>
<li>(-) informations redondantes sur les syst&egrave;mes
&eacute;quip&eacute;s de <code>groff</code>.</li>
</ul>
</li>
</ol>
<p>A mon avis, la meilleure solution est de distribuer uniquement
le code source. L'argument selon lequel la documentation ne pourra
pas &ecirc;tre accessible sur les syst&egrave;mes sans
<code>groff</code> 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&eacute;s avec les pages de manuels
format&eacute;es. Si un administrateur a besoin que les pages de
manuel soient accessibles, il aura forc&eacute;ment install&eacute;
<code>groff</code>.</p>
<h2><a name="s8">8. Quelles sont les conventions pour les
fontes&nbsp;?</a></h2>
<p>Avant tout, n'utilisez pas les op&eacute;rateurs directs de
fonte comme <code>\fB \fP</code>, etc. Employez des macros avec des
arguments. Cette m&eacute;thode vous &eacute;vitera une erreur
classique&nbsp;: oublier un changement de fonte &agrave; la fin
d'un mot ce qui provoque la continuation du gras ou de l'italique
jusqu'au prochain changement de fonte. Croyez-moi, &ccedil;a arrive
plus souvent qu'on ne le pense&nbsp;!</p>
<p>Les macros <i>tmac.an</i> offrent les possibilit&eacute;s
suivantes&nbsp;:</p>
<ul>
<li><code>.B</code> caract&egrave;res gras</li>
<li><code>.BI</code> gras et italiques en alternance</li>
<li><code>.BR</code> gras et romain en alternance</li>
<li><code>.I</code> italiques</li>
<li><code>.IB</code> italiques et gras en alternance</li>
<li><code>.IR</code> italiques et romain en alternance</li>
<li><code>.RB</code> romain et gras en alternance</li>
<li><code>.RI</code> romain et italiques en alternance</li>
<li><code>.SM</code> taille r&eacute;duite (9/10 du corps
normal)</li>
<li><code>.SB</code> gras, taille r&eacute;duite (NON petit et gras
en alternance)</li>
</ul>
<p>X et Y en alternance signifie que les arguments impairs seront
imprim&eacute;s en X et les pairs en Y. Par exemple&nbsp;:</p>
<blockquote>
<pre>
<code>.BI "Arg 1 est gras, " "arg2 est en italiques, " "arg3 en gras"
          
</code>
</pre></blockquote>
<p>Les guillemets sont n&eacute;cessaires pour placer des espaces
dans un argument.</p>
<p>Voil&agrave; donc pour ce qui est possible. Voyons maintenant
comment il faut utiliser ces possibilit&eacute;s (des parties ont
&eacute;t&eacute; honteusement copi&eacute;es de
<code>man(7)</code>)&nbsp;:</p>
<p>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&eacute;cifiques &agrave; Linux
d&eacute;finit nos standards&nbsp;:</p>
<p>Pour les fonctions, les arguments sont toujours en italiques,
m&ecirc;me dans la section SYNOPSYS, alors que le reste est en
gras. Vous &eacute;crirez donc&nbsp;:</p>
<blockquote>
<pre>
<code>.BI "mafonction(int " argc ", char **" argv );
          
</code>
</pre></blockquote>
<p>Les noms de fichiers sont toujours en italiques, hormis dans la
section SYNOPSYS o&ugrave; les fichiers &agrave; inclure sont en
gras. Vous &eacute;crirez alors&nbsp;:</p>
<blockquote>
<pre>
<code>.I /usr/include/stdio.h
          
</code>
</pre></blockquote>
et
<blockquote>
<pre>
<code>.B #include &lt;stdio.h&gt;
          
</code>
</pre></blockquote>
<p>Les noms des macros, qui sont habituellement en majuscules, sont
en gras&nbsp;:</p>
<blockquote>
<pre>
<code>.B MAXINT
          
</code>
</pre></blockquote>
<p>Lors de l'&eacute;num&eacute;ration d'une liste de codes
d'erreurs, ces codes sont en gras. Cette liste fait
g&eacute;n&eacute;ralement appel &agrave; la macro <code>.TP</code>
(paragraphe avec titre) comme ci-dessous&nbsp;:</p>
<blockquote>
<pre>
<code>.TP
.B EBADF
.I fd n'est pas un descripteur de fichier valide
.TP
.B EINVAL
.I fd ne convient pas pour &ecirc;tre lu
          
</code>
</pre></blockquote>
<p>Toute r&eacute;f&eacute;rence &agrave; une autre page de manuel
(ou &agrave; la page courante) est en gras. Si le num&eacute;ro de
la section du manuel est indiqu&eacute;, il s'&eacute;crit en
roman, sans espace&nbsp;:</p>
<blockquote>
<pre>
<code>.BR man (7)
          
</code>
</pre></blockquote>
<p>Les acronymes sont plus &eacute;l&eacute;gants lorsqu'ils
apparaissent dans un corps plus petit. Je recommande
donc&nbsp;:</p>
<blockquote>
<pre>
<code>.SM UNIX
.SM ASCII
.SM TAB
.SM NFS
.SM LALR(1)
          
</code>
</pre></blockquote>
<h2><a name="s9">9. Comment dois-je pr&eacute;senter ma page de
manuel&nbsp;?</a></h2>
<p>Voil&agrave; quelques conseils pour rendre votre documentation
plus s&ucirc;re, plus lisible et plus
&laquo;formatable&raquo;&nbsp;:</p>
<ul>
<li>Les exemples doivent fonctionner&nbsp;: testez-les (utilisez le
copier-coller pour passer &agrave; 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.</li>
<li>relisez-vous, corrigez toutes les &eacute;ventuelles fautes de
frappe ou d'orthographe, fa&icirc;tes-vous relire par un tiers
(surtout si vous ne r&eacute;digez pas le texte dans votre langue
natale)&nbsp;. (d'ailleurs ce HOWTO n'a pas &eacute;t&eacute;
relu... Y a-t-il un volontaire&nbsp;?)</li>
<li>testez votre page de manuel&nbsp;: est-ce que
<code>groff</code> trouve des erreurs lors du formatage&nbsp;?
C'est agr&eacute;able de trouver dans un commentaire la ligne de
commande qu'il faut taper pour le formatage. Est-ce que la commande
<code>man(1)</code> affiche des erreurs ou des avertissements
lorsqu'on appelle "<code>man votre_programme</code>"&nbsp;? Est-ce
que la fa&ccedil;on dont <code>man(1)</code> utilise le
syst&egrave;me de formatage produit le r&eacute;sultat
escompt&eacute;&nbsp;? Est-ce que cela fonctionne aussi bien avec
<code>xman(1x)</code> et <code>tkman(1tk)</code>&nbsp;?
<code>XFree86 3.1</code> contient la version 3.1.6 de
<code>xman</code> qui d&eacute;compacte les pages avec&nbsp;:
<blockquote>
<pre>
<code>gzip -c -d &lt; %s &gt; %s
zcat &lt; %s &gt; %s
              
</code>
</pre></blockquote>
</li>
<li>Est-ce que <code>makewhatis(8)</code> pourra extraire la ligne
de description de la section NAME&nbsp;?</li>
</ul>
<h2><a name="s10">10. Comment puis-je avoir un texte en pur ASCII
sans tous ces fichus ^H^ de contr&ocirc;le&nbsp;?</a></h2>
<p>Jetez un oeuil &agrave; la commande <code>col(1)</code>,
<code>col</code> peut enlever ces caract&egrave;res d'effacement.
Pour les impatients, voici la commande&nbsp;:</p>
<blockquote>
<pre>
<code>$ groff -t -e -mandoc -Tascii manpage.1 | col -bx &gt; manpage.txt
          
</code>
</pre></blockquote>
Les options <code>-t</code> et <code>-e</code> disent &agrave;
<code>groff</code> d'utiliser les pr&eacute;processeurs
<code>tbl</code> et <code>eqn</code>. C'est inutile pour les pages
de manuel ne n&eacute;cessitant pas de pr&eacute;processeur mais
cela ne g&ecirc;ne pas, si ce n'est une surcharge du processeur.
D'un autre c&ocirc;t&eacute;, ne pas utiliser <code>-t</code> alors
qu'il est n&eacute;cessaire fera que les tableaux seront
tr&egrave;s mal format&eacute;s. Vous pourrez m&ecirc;me trouver
("deviner" serait un terme plus exact) la commande
n&eacute;cessaire pour traiter tel ou tel document groff (pas
uniquement des pages de manuel) par le biais de
<code>grog</code>&nbsp;:
<blockquote>
<pre>
<code>$ grog /usr/man/man7/signal.7 
groff -t -man /usr/man/man7/signal.7 
          
</code>
</pre></blockquote>
<p>En fait, <code>grog</code> signifie "<i>GROff Guess</i>", et cet
outil fait bien ce qu'il dit (en anglais, guess =
deviner...)&nbsp;: il tente de deviner la commande
n&eacute;cessaire pour formater un document groff en fonction de
son contenu. S'il &eacute;tait parfait, nous n'aurions jamais plus
besoin d'options. Mais s'il arrive qu'il d&eacute;termine un
mauvais jeu de macros, je ne l'ai par contre jamais vu se tromper
sur les pr&eacute;processeurs &agrave; employer.</p>
<p>Voici un petit script Perl r&eacute;alis&eacute; par l'auteur de
ce document, qui peut supprimer les en-t&ecirc;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&eacute; <i>strip-header</i> et mettez-le en
mode 755.</p>
<blockquote>
<pre>
<code>#!/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; 
            
</code>
</pre></blockquote>
<p>Il faut appeler ce programme en tant que premier filtre
apr&egrave;s la comande man, car il se base sur le nombre de sauts
de ligne issus de groff. Par exemple&nbsp;:</p>
<blockquote>
<pre>
<code>$ man bash | strip-headers | col -bx &gt; bash.txt
          
</code>
</pre></blockquote>
<h2><a name="s11">11. Comment avoir une belle page de manuel en
PostScript &nbsp;?</a></h2>
<blockquote>
<pre>
<code>$ groff -t -e -mandoc -Tps manpage.1 &gt; manpage.ps
          
</code>
</pre></blockquote>
Imprimez-la &agrave; l'aide de votre imprimante PostScript
pr&eacute;f&eacute;r&eacute;e ou d'un interpr&eacute;teur. Voir la
section pr&eacute;c&eacute;dente pour les options.
<h2><a name="s12">12. Comment faire fonctionner les programmes
<code>apropos</code> et <code>whatis</code>&nbsp;?</a></h2>
<p>Supposons que vous recherchiez les compilateurs install&eacute;s
sur votre syst&egrave;me et comment les invoquer (nous
consid&eacute;rons le cas courant, o&ugrave; tout le manuel est en
langue anglaise). Pour r&eacute;pondre &agrave; cette question
(fr&eacute;quemment pos&eacute;e), il faut faire&nbsp;:</p>
<blockquote>
<pre>
<code>$ apropos compiler
f77 (1) - Fortran 77 compiler
gcc (1) - GNU C and C++ compiler
pc (1) - Pascal compiler
          
</code>
</pre></blockquote>
<p><code>apropos</code> et <code>whatis</code> sont
utilis&eacute;es pour obtenir une r&eacute;ponse rapide sur les
pages de manuels qui contiennent des informations sur un certain
sujet. Les deux programmes cherchent dans des fichiers
nomm&eacute;s <i>whatis</i> qui sont dans chaque r&eacute;pertoire
de base du manuel. Comme je l'ai d&eacute;j&agrave; dit, les
fichiers de la base de donn&eacute;es <i>whatis</i> contiennent une
entr&eacute;e d'une ligne pour chaque page de manuel dans
l'arborescence des r&eacute;pertoires successifs. En fait, cette
ligne est exactement celle de la section NAME (pour &ecirc;tre
pr&eacute;cis&nbsp;: tout est r&eacute;duit &agrave; une seule
ligne et le tiret est supprim&eacute;, la section &eacute;tant
plac&eacute;e entre parenth&egrave;ses). Ces fichiers sont
cr&eacute;&eacute;s &agrave; l'aide du programme
<code>makewhatis(8)</code>. Il en existe plusieurs versions, donc
r&eacute;f&eacute;rez-vous &agrave; la page de manuel du programme
pour conna&icirc;tre les options possibles. Afin que
<code>makefile</code> puisse extraire les sections NAME
correctement, il est important que vous, le r&eacute;dacteur du
manuel, respectiez le format de cette section d&eacute;crit dans la
partie 2. La diff&eacute;rence entre <code>apropos</code> et
<code>whatis</code> est ce qu'ils recherchent et o&ugrave;.
<code>apropos</code> (qui est l'&eacute;quivalent de <code>man
-k</code>) cherche la cha&icirc;ne de caract&egrave;res qui lui est
pass&eacute;e en argument n'importe o&ugrave; dans la ligne alors
que <code>whatis</code> (&eacute;quivalent de <code>man -f</code>)
recherche dans la partie avant le tiret un nom de commande complet.
Par cons&eacute;quence, <code>whatis</code> dira s'il y a un manuel
de <code>cc</code> mais restera muet pour <code>gcc</code>.</p>
<h2><a name="s13">13. La langue fran&ccedil;aise</a></h2>
<p>C'est bien s&ucirc;r &agrave; vous de d&eacute;cider si vous
allez r&eacute;diger votre manuel en fran&ccedil;ais, en anglais ou
dans ces deux langues. Le fran&ccedil;ais poss&egrave;de des
r&egrave;gles typographiques tr&egrave;s diff&eacute;rentes de
l'anglais&nbsp;: n'esp&eacute;rez pas pouvoir les respecter avec
les outils de formatage du manuel. Consultez la documentation de
<code>groff</code> si vous d&eacute;sirez lui faire prendre en
compte les motifs de c&eacute;sure de la langue de Moli&egrave;re,
mais en ayant conscience que ce ne sera sans doute pas possible sur
tous les syst&egrave;mes sur lesquels votre documentation est
susceptible d'&ecirc;tre exploit&eacute;e.</p>
<p>Vous pouvez utiliser les caract&egrave;res accentu&eacute;s,
pourvu qu'ils soient saisis selon la norme ISO-8859-1 (standard
sous Linux). Les pages devront alors &ecirc;tre format&eacute;es
avec l'option -Tlatin1 . Mais il faudra que toute la cha&icirc;ne
de visualisation soit capable de g&eacute;rer les caract&egrave;res
ISO sur 8 bits, ce qui est rarement le cas sans une configuration
particuli&egrave;re des utilitaires <code>more</code> ou
<code>less</code> g&eacute;n&eacute;ralement employ&eacute;s.</p>
<p>Vous voil&agrave; pr&eacute;venu&nbsp;!</p>
<h2><a name="s14">14. Les conditions de copie</a></h2>
<p>Copyright 1995, 96, 97 Jens Schweikardt <a href=
"mailto:schweikh@noc.dfn.de">schweikh@noc.dfn.de</a></p>
<p>T&eacute;l&eacute;phone&nbsp;: ++49 7151 909516</p>
<p>Sauf mention contraire, les documents Linux <i>HOWTO</i> portent
le copyright de leurs auteurs respectifs. Ils peuvent &ecirc;tre
reproduits et distribu&eacute;s en tout ou partie, sur n'importe
quel support physique ou &eacute;lectronique, &agrave; condition
que cette notice soit incluse dans chaque copie. La redistribution
est autoris&eacute;e et encourag&eacute;e&nbsp;; toutefois,
l'auteur voudrait en &ecirc;tre pr&eacute;venu.</p>
<p>Toutes les traductions, travaux d&eacute;riv&eacute;s ou
compilation de travaux incluant des documents Linux <i>HOWTO</i>
doivent &ecirc;tre couverts par ce copyright. C'est-&agrave;-dire
que vous ne pouvez pas produire un travail d&eacute;riv&eacute;
d'un HOWTO et imposer des restrictions suppl&eacute;mentaires sur
sa distribution. Des d&eacute;rogations &agrave; ces r&egrave;gles
peuvent &ecirc;tre accord&eacute;es sous certaines
conditions&nbsp;: contactez le coordinateur des Linux <i>HOWTO</i>
dont l'adresse est donn&eacute;e plus loin.</p>
<p>En r&eacute;sum&eacute;, nous d&eacute;sirons promouvoir la
diffusion de ces informations &agrave; travers tous les canaux de
communication possibles. Cependant, nous voulons conserver la
propri&eacute;t&eacute; des <i>HOWTO</i> et aimerions &ecirc;tre
tenu au courant de tout projet de redistribution.</p>
<p>Si vous avez des questions, contactez Greg Hankins, le
coordinateur, par courrier &eacute;lectronique &agrave; l'adresse
<a href=
"mailto:gregh@sunsite.unc.edu">gregh@sunsite.unc.edu</a>.</p>
</body>
</html>