• [^] # Re: Dépêche rédigée avec Utroff

    Posté par (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) :

    .H1 Utroff: la renaissance de Troff
    .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" ,
    .LU http://heirloom.sourceforge.net
    qui a ajouté à Troff des fonctionnalités typographiques
    modernes. Dans l'esprit du projet Heirloom,
    .LP Utroff
    .LU http://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"
    .LU http://utroff.org
    .br
    .LP Utroff-0.1.tar.gz
    .LU http://download.tuxfamily.org/utroff/pub/utroff-0.1.tar.gz
    .br
    .LP "Journal annonçant la beta d'Utroff"
    .LU https://linuxfr.org/users/sygne/journaux/utroff-est-publie
    .br
    .LP "Dépêche sur l'histoire de Troff"
    .LU https://linuxfr.org/news/a-la-recherche-des-sources-de-troff
    .
    .
    .
    .
    .H1 Pourquoi utiliser Troff aujourd'hui?
    .H2 Le logiciel libre et le projet Heirloom
    .PP
    Alors que logiciel libre est généralement plébiscité pour des
    raisons techniques ou éthiques, le
    .LP "projet Heirloom" ,
    .LU http://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.
    .
    .
    .H2 L'ergonomie d'Unix et le langage
    .PP
    L'ergonomie d'Unix consiste, selon certains, à utiliser le
    .LP "langage comme interface" ,
    .LU http://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
    .LP mini-langage .
    .LU http://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.
    .
    .
    .H2 La philosophie Unix et la question de la maî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"
    .LU http://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.
    .
    .
    .
    .H1 Pourquoi choisir Utroff?
    .H2 Le détail en typographie avec Heirloom Troff
    .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" .
    .LU http://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éé.
    .
    .
    .H2 La simplicité des macros Utmac
    .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.
    .LP Utmac ,
    .LU htpp://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" .
    .LU http://utroff.org/man/utmac.html
    .
    .
    .H2 Le formatage des références bibliographiques avec Refer
    .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
    .LP ISO-690 ,
    .LU http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=43320
    dont Rositza Kyheng propose un
    .LP résumé .
    .LU http://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" 
    .LU http://utroff.org/man/refer.html
    et celui de la macro
    .LP u-ref .
    .LU http://utroff.org/man/u-ref.html
    .
    .
    .H2 Le grec polytonique avec Tchars, inspiré de Dchars
    .PP
    Les plus assidus d'entre-vous auront suivi
    .LP "le développement de Dchars" ,
    .LU https://linuxfr.org/news/dchars-pour-lire-ecrire-et-modifier-des-caracteres-unicodes-complexes
    de notre ami
    .LP "Xavier Faure" ,
    .LU https://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
    .LP journal
    .LU https://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" .
    .LU http://utroff.org/man/tchars.html
    .
    .
    .H2 Les index avec Idx
    .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" 
    .LU https://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" .
    .LU http://utroff.org/man/idx.html
    .
    .
    .H2 La coloration syntaxique avec Ugrind
    .PP
    Voici le genre le commentaires que l'on trouve dans les
    sources des logiciels qui accompagnent Troff:
    .vS C
    /*
     * 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"
    .LU http://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:
    .vS C
    /*
     * 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"
    .LU http://utroff.org/man/ugrind.html
    décrit son utilisation.
    .
    .
    .H2 L'export vers l'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"
    .LU http://fr.wikipedia.org/wiki/Eric_Raymond
    a su imposer
    .LP doclifter ,
    .LU http://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" .
    .LU http://utroff.org/xml.html
    .
    .
    .H1 Remerciements
    .PP
    Utroff est hébergé par
    .LP Tuxfamily ,
    .LU http://tuxfamily.org
    et son développement a bénéficié de l'aide de quelques
    LinuxFr-iens:
    .LP MrSpackMan , 
    .LU https://linuxfr.org/users/mrspackman
    .LP "fmaz fmaz" ,
    .LU https://linuxfr.org/users/fmaz
    et
    .LP "Xavier Faure" ,
    .LU https://linuxfr.org/users/suizokukan
    déjà cité. Qu'ils soient tous remerciés.
    .H2 Post Scriptum
    .PP
    Dépêche rédigée avec Utroff:
    .vS sh
    ugrind utroff-0.1.tr | nroff -muw > utroff-0.1.mkd
    .vE

    :)