Journal [bookmark] Utroff-0.2

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
20
13
mar.
2014

Nouveautés

Après plusieurs mois d'intense procrastination, j'ai mis en ligne la version 0.2 d'Utroff. Cette version n'apporte aucune nouvelle fonctionnalité, elle se contente de simplifier l'installation et la première utilisation :

  • L'archive incorpore un makefile pour installer Heirloom Troff, la principale dépendance d'Utroff.
  • Pour éviter tout conflit avec le troff de votre distribution, l'installation par défaut se fait maintenant dans /opt/utroff/.
  • Le subtil script U permet d'utiliser en priorité les logiciels d'utroff, même si ceux-ci sont perdus à la fin du PATH.
  • Les variables d'environnement sont dorénavant optionnelles (bug rapporté par Fravashyo).
  • La page de man utroff offre une rapide introduction au fonctionnement de troff.

Installation

Du coup, vous pouvez installer, tester, jeter en quelques commandes :

    wget http://download.tuxfamily.org/utroff/pub/utroff-0.2.tar.gz
    wget http://download.tuxfamily.org/utroff/pub/utroff-0.2.md5sum
    md5sum -c utroff-0.2.md5sum
    tar -xzf utroff-0.2.tar.gz
    cd utroff-0.2/heirloom/
    make hlm-configure
    make hlm-build
    make hlm-install
    cd ../
    make all
    make install
    apt-get install linux-libertine ps2pdf
    export PATH="$PATH:/opt/utroff/bin"
    man utroff || U man utroff
    echo ".H3 mon titre" | U troff -muh | U dpost | ps2pdf - > f.pdf
    rm -rf /opt/utroff/

Pourquoi fut-ce si long ?

Le système de build d'Utroff est complexe, puisque toute la documentation (html, README, man, pdf) est générée par Utroff lui-même. Cela créé tout un ensemble de dépendances circulaires et de petits bugs que j'ai peu de plaisir à traquer et corriger.

Post-scriptum

Journal généré avec utroff :

    U nroff -muw utroff-0.2.tr > utroff-0.2.mkd
  • # améliorations

    Posté par  . Évalué à 6. Dernière modification le 14 mars 2014 à 12:15.

    je constate que l'installation est grandement facilitée grâce à toutes les améliorations que tu as faites depuis la version 0.1.

    Bravo !

    Petite remarque, pour U, ça appelle /bin/sh, mais ça semble contenir des "bashismes", c'est à dire que sous Linux Mint (dérivé de Debian), /bin/sh est lié à dash (en théorie plus proche du sh posix), et non pas à bash comme sur la plupart des autres distributions, et du coup ça génère des erreurs :

    U troff -mus readme.tr | U dpost | ps2pdf - > f.pdf
    /opt/utroff/bin/U: 72: [: 3: unexpected operator
    /opt/utroff/bin/U: 72: [: 1: unexpected operator
    /opt/utroff/bin/U: 84: exec: dpost: not found
    troff: fatal error: can't find macro file us

    En ce cas, autant appeler bash

    #!/usr/bin/env bash
    

    (et non pas /bin/bash parce que sur les bsd bash n'est pas placé dans /bin)

    Pour les lecteurs de Linuxfr qui voudraient se faciliter l'écriture de documents en utroff, grâce à Sygne qui a bien aidé en cela, on a un export utroff dans txt2tags.

    Pour tester :

    wget http://txt2tags.googlecode.com/svn/trunk/txt2tags
    echo -e "\n\n\n= Test Utroff =\nCeci est un **test** d'__utroff__\n\n- liste 1\n- liste 2\n- etc\n\n\n\n== Nouveau sous-chapitre ==\nblabla" > test_utroff.t2t
    python2 txt2tags -t utmac test_utroff.t2t
    U troff -mus test_utroff.utmac | U dpost | ps2pdf - > test.pdf
    

    Par contre le souligné ça passe, mais pas le gras (ni l'italique). Je ne sais plus ce qu'on avait dit à l'époque à ce sujet, peut-être un problème de style…

    « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

    • [^] # Re: améliorations

      Posté par  (site web personnel) . Évalué à 4.

      Heureux de te croiser Fravashyo,

      Effectivement, il y a un bashisme dans U: il faut utiliser -eq plutôt que == lors du test [ $# == 0 ] (je ne savais même pas que c'était là un bashisme…).

      Il y a aussi un bug: il faut utiliser : pour séparer les répertoires de la variable UTROFFONTS et écrire UTROFFONTS=/opt/utroff/lib/font/:/usr/share/fonts/OTF// plutôt que UTROFFONTS=/opt/utroff/lib/font/,/usr/share/fonts/OTF//.

      Quant à text2tag, je viens d'essayer, et le gras fonctionne correctement. Peut-être as-tu souffert du bug ci-dessus…

      Mille merci !

      • [^] # Re: améliorations

        Posté par  (site web personnel) . Évalué à 2.

        il faut utiliser -eq plutôt que ==

        Dans le même genre, on corrigera aussi le test suivant, en remplaçant == par =.

        J'en perds mon latin.

      • [^] # Re: améliorations

        Posté par  (site web personnel) . Évalué à 2.

        (je ne savais même pas que c'était là un bashisme…)

        Pour détailler un peu, en bash la syntaxe [[ $# == 0 ]] est un opérateur de comparaison qui fait partie du langage.

        Pour faire du sh POSIX, on utilise [ qui est une commande comme une autre (faîtes un whereis [) pour voir), à laquelle on passe des arguments. La page de man est accessible avec un man test.

        Après, la syntaxe [ $# == 0 ] fonctionne aussi en bash, mais je ne sais pas pourquoi. Il est plutôt conseillé d'utiliser la commande test (avec -eq donc) si on veut du code portable, ou [[.

        Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.

        • [^] # Re: améliorations

          Posté par  (site web personnel) . Évalué à 2.

          Merci pour ces précisions.

          Concernant -eq la page de man de dash indique que cette comparaison ne concerne que les integers. Elle propose un simple = pour les strings.

          Et ça marche bien aussi avec bash (du moins chez moi), qui, à mon avis, reste posix compliant, même s'il ajoute sa propre syntaxe par dessus.

    • [^] # Re: améliorations

      Posté par  (site web personnel) . Évalué à 3.

      J'ai mis en ligne une nouvelle version – utroff-0.3 – corrigeant ces petits bugs.

      Encore merci Fravashyo !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.