La voilà (version non modérée par l'équipe de DLFP) :
.H1Utroff:larenaissancedeTroff
.PP
Troff est un vénérable logiciel de formatage de texte hérité
d'Unix. Plusieurs versions de Troff coexistent aujourd'hui,
dont celle du
.LP"projet Heirloom",
.LUhttp://heirloom.sourceforge.net
qui a ajouté à Troff des fonctionnalités typographiques
modernes. Dans l'esprit du projet Heirloom,
.LPUtroff
.LUhttp://utroff.org
retravaille l'ensemble des logiciels qui accompagnent Troff
pour nous permettre d'utiliser efficacement celui-ci
aujourd'hui.
.PP
Pour la sortie de la première version publique d'Utroff,
cette dépêche propose une réponse aux deux questions que
vous ne manquerez pas de vous poser: «pourquoi utiliser
Troff aujourd'hui?», et «pourquoi choisir Utroff?».
.PP
.LP"Le site d'Utroff"
.LUhttp://utroff.org
.br
.LPUtroff-0.1.tar.gz
.LUhttp://download.tuxfamily.org/utroff/pub/utroff-0.1.tar.gz
.br
.LP"Journal annonçant la beta d'Utroff"
.LUhttps://linuxfr.org/users/sygne/journaux/utroff-est-publie
.br
.LP"Dépêche sur l'histoire de Troff"
.LUhttps://linuxfr.org/news/a-la-recherche-des-sources-de-troff....
.H1PourquoiutiliserTroffaujourd'hui?
.H2LelogiciellibreetleprojetHeirloom
.PP
Alors que logiciel libre est généralement plébiscité pour des
raisons techniques ou éthiques, le
.LP"projet Heirloom",
.LUhttp://heirloom.sourceforge.net
dont Utroff est largement inspiré, a ceci de singulier qu'il
utilise les libertés offertes par les licences libres pour
des raisons esthétiques et nostalgiques. Le but du projet
Heirloom n'est pas tant de donner à l'utilisateur plus de
libertés ou de meilleurs outils que de lui offrir un petit
moment de nostalgie en lui permettant d'utiliser les bons
vieux outils d'Unix. Ce n'est pourtant pas un musée du
logiciel, mais une mise à jour des outils d'antan:
.PQ
«The Heirloom Project is not a software museum\|; it does not
attempt to preserve utilities unmodified. Rather, it keeps
stylistic, algorithmic, and interface aspects intact while
modernizing the framework as appropriate.»
.PP
Ainsi, par delà cette nostalgie, le projet Heirloom montre que
ces antiques outils conservent des qualités non négligeables
aujourd'hui, de sorte que ce projet nous invite à
reconsidérer notre point de vue sur le progrès en matière
informatique.
..
.H2L'ergonomied'Unixetlelangage
.PP
L'ergonomie d'Unix consiste, selon certains, à utiliser le
.LP"langage comme interface",
.LUhttp://theody.net/elements.html
et Troff exploite mieux que tout autre logiciel cette
ergonomie: à chaque format de données (équation, diagramme,
table, référence...) correspond un
.LPmini-langage.
.LUhttp://www.faqs.org/docs/artu/ch08s02.html#id2934197
Ainsi Troff s'utilise en passant le fichier source à travers
de multiples filtres qui interprètent chacun de ces
mini-langages.
.PP
À l'usage, il apparaît que l'interface langagière qui est
celle d'Unix est particulièrement adaptée au travail des
textes. En effet, outre qu'elle nous donne accès à des
possibilités technologiques, cette ergonomie structure la
pensée. En apprenant à utiliser l'outil, on apprend quelque
chose sur la structure des données qu'on manipule, et
corrélativement, la pensée découvre de nouvelles façons de
se structurer en découvrant de nouvelles structures
symboliques. La pratique d'une interface texte aiguise ainsi
le regard analytique que l'on doit porter sur le texte. Il y
a donc un plaisir et un intérêt, pour qui aime l'analyse des
textes, à travailler avec ces vieux outils pensés pour la
ligne de commande.
..
.H2LaphilosophieUnixetlaquestiondelamaîtrise
.PP
Le logiciel libre se donne pour objectif d'offrir à
l'utilisateur la possibilité de maîtriser son outil
informatique. Mais dans les faits, la complexité des
logiciels d'aujourd'hui fait qu'il est difficile de mettre
en pratique ces libertés de droit. Il se trouve que les
vieux outils Unix souffrent moins de cette difficulté:
marqués par l'idée «un programme, une tâche», ils sont
construits à la manière d'un ensemble de multiples petits
logiciels, aux dépendances minimales, et sont pour cela bien
plus faciles à modifier que leurs équivalents contemporains.
Ainsi, Troff est le seul logiciel de formatage de texte que
je sois capable de maîtriser parfaitement.
.PP
Si Troff est susceptible d'être maîtrisé, ce n'est pas
seulement parce qu'il est accompagné d'un ensemble d'outils
hackables, c'est aussi parce que c'est un langage simple et
bien documenté. La
.LP"documentation exhaustive de Troff"
.LUhttp://heirloom.sourceforge.net/doctools/troff.pdf
est claire et ne dépasse pas les soixante pages, quant au
langage, quoi que sa syntaxe puisse paraître étrange, il est
tout à fait accessible, même aux débutants en programmation.
...
.H1PourquoichoisirUtroff?
.H2LedétailentypographieavecHeirloomTroff
.PP
Deux algorithmes permettent de composer des textes avec un
rendu typographique de qualité: l'ajustement paragraphe par
paragraphe, qui calcule l'espace inter-mots sur l'ensemble
du paragraphe plutôt que ligne après ligne, et la
micro-typographie, qui modifie d'un ou deux pour cent la
taille des glyphes pour uniformiser visuellement l'espace
inter-mots. Ces algorithmes ont été créés pour Tex et PdfTex,
puis repris par les logiciels de PAO du marché, mais aussi
par
.LP"Heirloom Troff".
.LUhttp://heirloom.sourceforge.net/doctools.html
C'est bien parce que Heirloom Troff incorpore ces
algorithmes qu'il produit des textes dont la qualité
typographique est, potentiellement, équivalente à celle de
LaTex.
.PP
Cependant, Heirloom Troff ne fournit aucune macro qui
permette d'utiliser ces algorithmes simplement. C'est
d'abord pour combler ce manque que Utroff a été
créé.
..
.H2LasimplicitédesmacrosUtmac
.PP
S'il est possible de composer un document en Troff pur, il
est bien plus simple d'utiliser des macros qui définissent
le format des éléments les plus fréquents et s'occupent de
la mise en page.
.LPUtmac,
.LUhtpp://utroff.org/tmac.html
l'ensemble de macros créées pour Utroff, suit quelques
principes ergonomiques:
.PI
Toutes les macros utilisent le même langage, de sorte qu'un
même document peut être exporté en plusieurs formats et
selon plusieurs mises en page, sans qu'il soit nécessaire
d'en modifier les sources. Les formats d'export sont:
postscript (donc pdf), README, man, xml, html, fodt,
markdown et tty (en cours). Deux mises en page sont
actuellement disponibles: l'une est dédiée aux textes
littéraires longs (les thèses), et l'autre à la
documentation technique. Une macro dédiée aux lettres et aux
CV est en cours de création.
.PI
Les macros gèrent d'office les besoins les plus fréquents:
sommaire, table des matières, liens internes, index,
références, coloration syntaxique, recto-verso.
.PI
Outre qu'elles utilisent les algorithmes d'Heirloom Troff
dédiés à la typographie, elles respectent les bonnes
pratiques en matière de mise en page: principe de grille,
principe de ligne, et ortho-typographie. Elles repèrent et
mentionnent veuves et orphelines et fournissent des outils
pour les faire disparaître.
.PI
Elles n'ont que peu d'options de configuration. D'une part
parce que leur mise en page est censée être adaptée au
besoin, et d'autre part parce parce qu'il est considéré que
pour un besoin spécifique, la bonne pratique consiste à
créer une macro spécifique, généralement en adaptant une
macro existante.
.PP
Le format des macros est documenté dans le
.LP"manuel d'Utmac".
.LUhttp://utroff.org/man/utmac.html..
.H2LeformatagedesréférencesbibliographiquesavecRefer
.PP
Il existe une norme internationale définissant la structure
que doivent avoir les références bibliographiques, qu'elles
soient indiquées en bas de page ou en fin d'ouvrage: la
norme
.LPISO-690,
.LUhttp://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=43320
dont Rositza Kyheng propose un
.LPrésumé.
.LUhttp://www.revue-texto.net/Reperes/Themes/Kyheng_References.html
Largement ignorée, souvent confondue par les
universitaires avec une norme réservée aux bibliothèques,
cette norme est néanmoins la seule qu'éditeurs et
universitaires devraient respecter. Refer, le logiciel
dédié au formatage des références bibliographiques,
a été modifié pour qu'il puisse respecter cette norme. En
particulier, puisque la norme ne fait que définir l'ordre
des champs, c'est l'algorithme de tri des références qui a
été adapté.
.PP
À ces modifications s'ajoutent une macro (u-ref), incluse dans les
macros Utmac, offrant la possibilité d'utiliser proprement
une police contenant de vraies petites capitales, la gestion
des champs dédiés aux références électroniques (url, format,
date de consultation...), le remplacement par «idem» ou «op.
cit. p.\~xx», et la distinction entre notes de bas de pages
et liste bibliographique de fin d'ouvrage.
.PP
Consulter le
.LP"manuel de refer".LUhttp://utroff.org/man/refer.html
et celui de la macro
.LPu-ref.
.LUhttp://utroff.org/man/u-ref.html..
.H2LegrecpolytoniqueavecTchars,inspirédeDchars
.PP
Les plus assidus d'entre-vous auront suivi
.LP"le développement de Dchars",
.LUhttps://linuxfr.org/news/dchars-pour-lire-ecrire-et-modifier-des-caracteres-unicodes-complexes
de notre ami
.LP"Xavier Faure",
.LUhttps://linuxfr.org/users/suizokukan
qui interprète du code ascii pour produire des caractères
utf8 complexes. Utroff méritait d'avoir un tel interpréteur,
mais ne pouvait se permettre d'ajouter python à ses
dépendances. J'ai donc écrit un tout petit interpréteur en
C, et l'ai nommé Tchars (Troff|Translate Characters) en
référence à Dchars.
.PP
Un récent
.LPjournal
.LUhttps://linuxfr.org/users/sygne/journaux/jouons-avec-unicode-tchars-un-dchars-pour-troff
explique les détails de cette implémentation, quant à
son utilisation elle est documentée dans le
.LP"manuel de Tchars".
.LUhttp://utroff.org/man/tchars.html..
.H2LesindexavecIdx
.PP
Le travail d'indexation ne se limite pas à l'indexation du
document en cours d'écriture, il concerne aussi l'indexation
d'ouvrages de référence, dont bien souvent aucune version
électronique n'est disponible. Idx est un script awk
encapsulé dans du shell facilitant grandement l'indexation
de textes papiers, et réalisant l'indexation des documents
Troff.
.PP
Un journal propose
.LP"exemple d'utilisation d'idx".LUhttps://linuxfr.org/users/sygne/journaux/exemple-d-interface-en-ligne-de-commande
(attention, l'interface a évolué depuis),
et son utilisation est documentée dans le
.LP"manuel d'idx".
.LUhttp://utroff.org/man/idx.html..
.H2LacolorationsyntaxiqueavecUgrind
.PP
Voici le genre le commentaires que l'on trouve dans les
sources des logiciels qui accompagnent Troff:
.vSC
/*
* Vfontedpr.
*
* Dave Presotto 1/12/81 (adapted from an earlier version by
* Bill Joy)
*
*/
.vE
.PP
Au début des années 80, alors qu'il travaillait encore à
l'université de Berkeley,
.LP"Bill Joy"
.LUhttp://fr.wikipedia.org/wiki/Bill_Joy
a donc trouvé nécessaire d'ajouter un colorateur syntaxique
à Troff. Il a pour cela créé Vfontedpr, que les
membres de la liste de discussion de Groff comprennent comme
signifiant «Visual Font Edit Print», un outil en C appelé
par le bien nommé script Vgrind (la moulinette qui grince).
Après bien des péripéties, Vgrind s'est retrouvé dans
l'archive d'Heirloom Doctools, de sorte que, Vfontedpr,
renommé Ugrind pour le projet Utroff, continue à colorer le
code source pour Troff depuis plus de 30 ans.
.PP
Signe de son age avancé la syntaxe de son fichier de
configuration (vgrindefs, renommé ugrindefs pour Utroff) où
sont définies la structure des langages à colorer, est celle
de Termcap:
.vSC
/*
* grindcap - routines for dealing with the language
* definitions data base
* (code stolen almost totally from termcap)
*/
.vE
.PP
Puisque qu'il fallait à tout le moins qu'Ugrind puisse
colorer le sources en Troff, et puisque la syntaxe de Troff
est difficilement interprétable dans le langage de Termcap,
Ugrind contient, entre autres modifications de Vfontedpr, un
parseur codé en dur du langage Troff.
.PP
Le
.LP"manuel d'ugrind"
.LUhttp://utroff.org/man/ugrind.html
décrit son utilisation.
..
.H2L'exportversl'xml
.PP
Troff a commencé à péricliter au moment ou apparaissait le
web, l'html et l'xml. Il y a probablement là un lien causal:
de nombreux scripts ont été créés pour produire de l'html à
partir de Troff, mais aucune solution universelle n'a jamais
été trouvée. En effet, seules les macros créées en langage
Troff peuvent être interprétées en tant que c'est en leur
sein qu'est définie la sémantique du texte. De fait, il y a
autant d'interpréteur que de macros, et chaque interpréteur
doit pouvoir en outre comprendre quelques fonction Troff
susceptibles d'être utilisées dans les fichiers sources.
.PP
Finalement,
.LP"Eric.\~S. Raymond"
.LUhttp://fr.wikipedia.org/wiki/Eric_Raymond
a su imposer
.LPdoclifter,
.LUhttp://www.catb.org/~esr/doclifter
un interpréteur en python, qui reste néanmoins réservé aux
macros historiques.
.PP
Une solution n'a pas été explorée jusqu'alors: si Troff
produit des fichiers postscripts, son grand frère, Nroff
produit des fichiers textes, de sorte qu'il peut produire
des fichiers xml sans en passer par un interpréteur. De fait
l'une des macros Utmac a été écrite pour gérer l'export vers
l'xml avec Nroff. Toutes les fonctions du langage Troff sont
ainsi gérées nativement, et, si cette solution ne répond pas
à tous les besoins, elle a l'avantage d'être très simple à
mettre en œuvre.
.PP
Le site d'Utroff explique cette
.LP"conversion vers l'xml".
.LUhttp://utroff.org/xml.html..
.H1Remerciements
.PP
Utroff est hébergé par
.LPTuxfamily,
.LUhttp://tuxfamily.org
et son développement a bénéficié de l'aide de quelques
LinuxFr-iens:
.LPMrSpackMan,.LUhttps://linuxfr.org/users/mrspackman
.LP"fmaz fmaz",
.LUhttps://linuxfr.org/users/fmaz
et
.LP"Xavier Faure",
.LUhttps://linuxfr.org/users/suizokukan
déjà cité. Qu'ils soient tous remerciés.
.H2PostScriptum
.PP
Dépêche rédigée avec Utroff:
.vSsh
ugrind utroff-0.1.tr | nroff -muw > utroff-0.1.mkd
.vE
[^] # Re: Dépêche rédigée avec Utroff
Posté par Sygne (site web personnel) . En réponse à la dépêche Utroff : la renaissance de Troff. Évalué à 4.
La voilà (version non modérée par l'équipe de DLFP) :
:)