Aller au contenu

roff (langage informatique)

Un article de Wikipédia, l'encyclopédie libre.

roffest unlangage de formatage de textehistoriquement lié àUNIXet à ses dérivés (BSD,Linux…).

Comme le langageLaTeX,roffest un langage de formatage de texte reposant sur un système de balises. Sa légèreté (il alourdit très peu les textes), le fait qu'il soitinterprété(contrairement à LaTeX qui estcompilé) font deroffun langage très populaire dans le monde UNIX et ses dérivés (*BSD,Linux,etc.). Il sert en particulier au formatage despages de manuel.Il pos sắc de ses adeptes inconditionnels (telAndrew Tanenbaum[1]), qui le préfèrent:

roffa connu trois étapes majeures:

  • runoff,pour CTSS et Multics;
  • roff,troffetnroffpour UNIX;
  • groff,pour systèmes GNU.

CTSS et Multics: runoff

[modifier|modifier le code]

L'ancêtre de la série des roff est le programmerunoffqui fut conçu en 1961 parJerry Saltzersur le système d'exploitationCTSS;ce programme était écrit enPL/I,puis enBCPL.Le nom du programme signifie « écrire à la va-vite », car son objectif est de permettre d'écrire rapidement et facilement des documents d'une bonne qualité typographique.

En1963,lorsque CTSS évolua enMultics,runoffdevint le principal programme de mise en page, servant en particulier pour les pages d'aide, fonction qui lui reste encore principalement attachée aujourd'hui.

UNIX: nroff, troff, ditroff

[modifier|modifier le code]

AvecUNIXapparut un couple de programmes destiné à une grande popularité:nroffet troff. AuMassachusetts Institute of Technology,on ressentit le besoin de piloter depuis lePDP-11unephotocomposeuse,périphérique de sortie graphique; or,runoffn'y suffisait pas.

AussiJoseph Ossanna,l'un des principaux développeurs de MULTICS et programmeur de plusieurs ports derunoff,écrivit-il un ensemble de trois programmes, décrivant les fonctionnalités de base dont toute implémentation du langage est encore largement redevable aujourd'hui:

  • roff,abréviation derunoff;ce programme reprendroffavec toutes ses limitations, mais fut rapidement abandonné: aujourd'hui, ce terme désigne le système troff/nroff dans son ensemble;
  • troff (typesetting roff:roffde mise en page) servait à générer une sortie graphique;
  • nroff(new roff:nouveauroff) servait à produire une sortie texte convenant aux terminaux et aux imprimantes en mode ligne.

Ces programmes furent écrits sous plusieurs langages successifs:

  • dans le langage d'assemblage du PDP-7 vers1970;
  • dans le langage d'assemblage du PDP-11 en1971(selon la version anglaise de cette page) ou1973(selon la page de manuel de roff);
  • enlangage Cen1975,lorsqueBrian Kernighana rejoint l'équipe de développement deroff.

Après le décès d'Ossanna en1977,Kernighan continua le projet et écrivit le programmeditroffconvertissant un fichier ASCII en un fichier binaire indépendant du périphérique (Device Independant).

troffdispose de plusieurs jeux de macro commandes[2]pour rédiger les pages de manuel (man) des lettres ou des articles. On peut citer

  • Les macros '-me' créées par Eric P. Allman à UC Berkeley pour rédiger des articles ou des livres[3].
  • Les macros '-ms' créées àBell Labspour rédiger des articles[4],[5].
  • Les macros '-mm' créées aussi à Bell Labs, qui permettent de rédiger également des lettres[4],[5].
  • Les macros '-mv' créées à Bell Labs pour préparer des diapositives[5].
  • Les macros '-mx' créées par Bruce Walker[6]àUCLApour rédiger des articles au format desACM Transactions.
  • Les macros '-mom' créées par Peter Schaffter pour rédiger des livres.

Plusieurs préprocesseurs[5],[4]sont disponibles pour formater des tables (tbl) des équations (eqn), des formules chimiques (chem) ou insérer des références bibliographiques (refer). Le préprocesseur[5]picpermet d'insérer desdiagrammesdécrits par un langage de commande, etgrappermet de créer desgraphes[5]à partir de données numériques.

On enchaîne les préprocesseurs en se servant despipesUnix pour générer un fichier à partir du fichier source, comme dans cet exemple:

refer fichier.ms| tbl | eqn | groff-ms -Tpdf > fichier.pdf

Utilisation pour la publication scientifique et technique

[modifier|modifier le code]

Initialement, Troff était utilisé à Bell Labs pour la préparation des demandes de brevet. Il a ensuite a été utilisé par laSociété américaine de physiquepour publierPhysical Reviewdans les années 1980. Une première expérience en 1977 avait montré que la saisie et la correction d'articles contenant des tables et des équations pouvait être entre une fois et demie et trois fois plus rapide en utilisant troff et que le coût de préparation par page pouvait être divisé par trois[7].Un jeu de macros avait été écrit par Mike Lesk pour reproduire le format des articles de Physical Review[8].Le premier article[9]photocomposéavec troff est apparu dansPhysical Review Bdans le numéro du 1er avril 1977. Le premier numéro entièrement photocomposé a été publié le 1er avril 1978. En 1980, la société américaine de physique a décidé de photocomposer entièrement Physical Review en utilisant troff pour commander les machines. L'utilisation de troff a commencé en octobre 1981[9],[10]à l'unité de production de l'American Institute of PhysicsàWoodburyet s'est poursuivie jusque vers le milieu des années 1990. À cette époque, les différents volumes de Physical Review réalisaient un total de 50000 pages par an. Les auteurs pouvaient soumettre leur manuscrit rédigé avec troff,TeXouRevTeXsous forme électronique[11].En 1987, la revueComplex Systems,lancée parStephen Wolframacceptait les manuscrits électroniques rédigés avecLaTeXou troff avec les macros '-ms' ou '-me'. La revueBell System Technical Journala également utilisé troff pour sa publication à partir de 1989[8].Un certain nombre d'ouvrages techniques commeLe langageCdeBrian KernighanetDennis Ritchie,Computer Networksd'Andrew Tanenbaum ont été rédigés à l'aide de troff. Une liste peut être trouvée sur le site de troff.

Le code source original du Documenter's Workbench[12],qui a été publiée parAT&T Software Technologysous une licenceEclipse Public License.

Une version de troff distribuée avecPlan 9 from Bell Labs.Elle permet d'utiliser l'encodageUTF-8.

Le programmegroff(GNUroff), écrit parJames Clark,est aujourd'hui le clone deroff/troff/ditroffle plus répandu. Il émule tous ces programmes et y ajoute quelques fonctionnalités originales.

Heirloom doctools

[modifier|modifier le code]

Il s'agit d'une version de troff dérivée de programmes publiés sous une licenceopen sourceCommon Development and Distribution LicenseparSun Microsystemsen 2005[13]et améliorée par Gunnar Ritter[14].

Une version de troff développée par Ali Gholami Rudi[15].Elle permet d'utiliser des policesTrueTypeetOpenType,et supporte l'écriture bidirectionnelle.

Liens externes

[modifier|modifier le code]

Notes et références

[modifier|modifier le code]
  1. «Andrew S. Tanenbaum, Professor at the Vrije Universiteit», surcs.vu.nl(consulté le)
  2. Jean-LouisRoos,Le Traitement de texte avec UNIX: troff et nroff,Armand Colin,(ISBN2-200-21259-3et978-2-200-21259-9,OCLC27424276,lire en ligne)
  3. Eric P. Allman, «Writing Papers with NROFF using −me»
  4. abetcTim O'Reilly et DaleDougherty,Unix Text Processing,Indianapolis, IN, USA, Hayden books,(ISBN0-672-4629 1-5,lire en ligne)
  5. abcdeetfAmerican Telephone and Telegraph Company,UNIX System V documentor's workbench: reference manual.,Prentice Hall,(ISBN0-13-943580-8et978-0-13-943580-5,OCLC19860970,lire en ligne)
  6. «v09i063: Troff macros for "ACM Transactions"», surgroups.google(consulté le)
  7. (en)M. E.Lesket B. W.KernighanComputer typesetting of technical journals on UNIX»,Proceedings of the June 13-16, 1977, national computer conference on - AFIPS '77,ACM Press,‎,p.879(DOI10.1145/1499402.1499562,lire en ligne,consulté le)
  8. aetb(en)R. Furuta (dir.) et B. W. Kernighan,EP90 Proceedings of the International Conference on Electronic Publishing, Document Manipulation & Typography, Gaithersburg, Maryland, September 1990,Cambridge, UK, Cambridge University Press,(ISBN0521402468,lire en ligne),p.1
  9. aetb(en)PeterAdamsEssay: Computers in the APS Editorial Office: The Early Years»,Physical Review Letters,vol.102,no10,‎,p.100001(ISSN0031-9007et1079-7114,DOI10.1103/PhysRevLett.102.100001,lire en ligneAccès libre,consulté le)
  10. (en)Rita G. Lerner, Ted Metaxas, John T. Scott, Peter D. Adams et Peggy Judd, «Primary publication systems and scientific text processing»,Annual Review of Information Science and Technology,vol.18,‎,p.127-149(ISSN0066-4200,lire en ligneAccès limité)
  11. (en)American Institute of Physics,AIP Style Manual,Woodbury, NY, USA, American lnstitute of Physics,,4ème éditionéd.(ISBN0-88318-642-X,lire en ligne),p. 10
  12. n-t-roff,DWB3.3,(lire en ligne)
  13. «À la recherche des sources de Troff - LinuxFr.org», surlinuxfr.org(consulté le)
  14. «The Heirloom Documentation Tools: nroff, troff, dpost, etc.», surn-t-roff.github.io(consulté le)
  15. «LITCAVE», surlitcave.rudi.ir(consulté le)