roff (langage informatique)

langage de formatage de texte

roff est un langage de formatage de texte historiquement lié à UNIX et à ses dérivés (BSD, Linux…).

Description modifier

Comme le langage LaTeX, roff est 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 soit interprété (contrairement à LaTeX qui est compilé) font de roff un langage très populaire dans le monde UNIX et ses dérivés (*BSD, Linux, etc.). Il sert en particulier au formatage des pages de manuel. Il possède ses adeptes inconditionnels (tel Andrew Tanenbaum[1]), qui le préfèrent :

Historique modifier

roff a connu trois étapes majeures :

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

CTSS et Multics : runoff modifier

CTSS modifier

L'ancêtre de la série des roff est le programme runoff qui fut conçu en 1961 par Jerry Saltzer sur le système d'exploitation CTSS ; ce programme était écrit en PL/I, puis en BCPL. 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.

Multics modifier

En 1963, lorsque CTSS évolua en Multics, runoff devint 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

Avec UNIX apparut un couple de programmes destiné à une grande popularité : nroff et troff. Au Massachusetts Institute of Technology, on ressentit le besoin de piloter depuis le PDP-11 une photocomposeuse, périphérique de sortie graphique ; or, runoff n'y suffisait pas.

Aussi Joseph Ossanna, l'un des principaux développeurs de MULTICS et programmeur de plusieurs ports de runoff, é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 de runoff ; ce programme reprend roff avec toutes ses limitations, mais fut rapidement abandonné : aujourd'hui, ce terme désigne le système troff/nroff dans son ensemble ;
  • troff (typesetting roff : roff de mise en page) servait à générer une sortie graphique ;
  • nroff (new roff : nouveau roff) 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 vers 1970 ;
  • dans le langage d'assemblage du PDP-11 en 1971 (selon la version anglaise de cette page) ou 1973 (selon la page de manuel de roff) ;
  • en langage C en 1975, lorsque Brian Kernighan a rejoint l'équipe de développement de roff.

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

troff dispose 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 Labs pour 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] à UCLA pour rédiger des articles au format des ACM 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] pic permet d'insérer des diagrammes décrits par un langage de commande, et grap permet de créer des graphes[5] à partir de données numériques.

On enchaîne les préprocesseurs en se servant des pipes Unix 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

Initialement, Troff était utilisé à Bell Labs pour la préparation des demandes de brevet. Il a ensuite a été utilisé par la Société américaine de physique pour publier Physical Review dans 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 dans Physical Review B dans 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 à Woodbury et 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, TeX ou RevTeX sous forme électronique[11]. En 1987, la revue Complex Systems, lancée par Stephen Wolfram acceptait les manuscrits électroniques rédigés avec LaTeX ou troff avec les macros '-ms' ou '-me'. La revue Bell System Technical Journal a également utilisé troff pour sa publication à partir de 1989[8]. Un certain nombre d'ouvrages techniques comme Le langage C de Brian Kernighan et Dennis Ritchie, Computer Networks d'Andrew Tanenbaum ont été rédigés à l'aide de troff. Une liste peut être trouvée sur le site de troff.

DWB 3.3 modifier

Le code source original du Documenter's Workbench[12], qui a été publiée par AT&T Software Technology sous une licence Eclipse Public License.

Plan 9 troff modifier

Une version de troff distribuée avec Plan 9 from Bell Labs. Elle permet d'utiliser l'encodage UTF-8.

GNU : groff modifier

Le programme groff (GNU roff), écrit par James Clark, est aujourd'hui le clone de roff/troff/ditroff le plus répandu. Il émule tous ces programmes et y ajoute quelques fonctionnalités originales.

Heirloom doctools modifier

Il s'agit d'une version de troff dérivée de programmes publiés sous une licence open source Common Development and Distribution License par Sun Microsystems en 2005[13] et améliorée par Gunnar Ritter[14].

Neatroff modifier

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

Voir aussi modifier

Liens externes modifier

Notes et références modifier

  1. « Andrew S. Tanenbaum, Professor at the Vrije Universiteit », sur www.cs.vu.nl (consulté le )
  2. Jean-Louis Roos, Le Traitement de texte avec UNIX : troff et nroff, Armand Colin, (ISBN 2-200-21259-3 et 978-2-200-21259-9, OCLC 27424276, lire en ligne)
  3. Eric P. Allman, « Writing Papers with NROFF using −me »
  4. a b et c Tim O'Reilly et Dale Dougherty, Unix Text Processing, Indianapolis, IN, USA, Hayden books, (ISBN 0-672-4629 1-5, lire en ligne)
  5. a b c d e et f American Telephone and Telegraph Company, UNIX System V documentor's workbench : reference manual., Prentice Hall, (ISBN 0-13-943580-8 et 978-0-13-943580-5, OCLC 19860970, lire en ligne)
  6. « v09i063: Troff macros for "ACM Transactions" », sur groups.google.com (consulté le )
  7. (en) M. E. Lesk et B. W. Kernighan, « Computer typesetting of technical journals on UNIX », Proceedings of the June 13-16, 1977, national computer conference on - AFIPS '77, ACM Press,‎ , p. 879 (DOI 10.1145/1499402.1499562, lire en ligne, consulté le )
  8. a et b (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, (ISBN 0521402468, lire en ligne), p. 1
  9. a et b (en) Peter Adams, « Essay: Computers in the APS Editorial Office: The Early Years », Physical Review Letters, vol. 102, no 10,‎ , p. 100001 (ISSN 0031-9007 et 1079-7114, DOI 10.1103/PhysRevLett.102.100001, lire en ligne  , 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 (ISSN 0066-4200, lire en ligne  )
  11. (en) American Institute of Physics, AIP Style Manual, Woodbury, NY, USA, American lnstitute of Physics, , 4ème édition éd. (ISBN 0-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 », sur linuxfr.org (consulté le )
  14. « The Heirloom Documentation Tools: nroff, troff, dpost, etc. », sur n-t-roff.github.io (consulté le )
  15. « LITCAVE », sur litcave.rudi.ir (consulté le )