Améliorer les impressions de code source
Signature : | Mis en ligne le : 27/01/2008
Catégorie(s) :
  • GNU/Linux Magazine
  • | Domaine :
    Commentez creative commons

    Retrouvez cet article dans : Linux Magazine 86

    Avec la sortie récente de " Perl Best Practices " de Damian Conway [1], et sa lecture, j’ai été pris d’une envie soudaine de me plonger dans le code de quelques modules employés régulièrement. D’une part, cela me permettait d’améliorer ma culture Perl et, d’autre part, de mettre en application les conseils donnés par Damian. Seulement voilà, quand j’ai du temps à consacrer à cette lecture, je n’ai pas toujours un ordinateur à portée de main, ainsi dans les transports en commun, je peux facilement grappiller une petite heure par jour, ce qui n’est pas rien au final. J’ai ainsi imprimé quelques pages de code. Malheureusement, les résultats n’ont pas été aussi lisibles qu’attendu, les fontes employées par défaut pour l’impression de fichier texte ne m’étant pas fort agréables à l’œil. J’ai commencé à réfléchir à ce qui pourrait offrir un rendu plus agréable, et cela m’a rappelé les codes sources que j’avais dû inclure dans des rapports à l’université. J’utilisais LaTeX pour ces rapports, et donc, je me suis dit que ce logiciel pouvait encore me rendre service.

    Listings, l’outil adéquat

    Après avoir consulté la FAQ LaTeX [2], j’ai trouvé le package qu’il me fallait : listings [3]. Ce dernier permet de traiter un nombre impressionnant de langages et même si dans un premier temps je ne comptais lire que du code Perl, je pourrais étendre assez facilement mon script à d’autres langages. Il permet en plus de définir un certain nombre de comportements intéressants, comme par exemple :
    • la numérotation des lignes ;
    • une mise en évidence syntaxique ;
    Dans le cadre de ce script, je n’ai pas été plus loin dans l’exploitation des fonctionnalités de listings, mais les possibilités sont nombreuses, et j’invite le lecteur à consulter la documentation de ce package.

    Template::Toolkit et Perl::Tidy

    La description du projet à ce stade était d’inclure le fichier source que je souhaitais imprimer dans un fichier modèle, et de le compiler au moyen de LaTeX (enfin, pdflatex pour être plus précis). Cela ressemble beaucoup à une tâche pour Template::Toolkit, et en vérifiant sur le CPAN [4], j’ai pu constater que ce dernier gérait le format LaTeX, via la distribution Template-Latex. Un coup d’œil sur la documentation me décrivait comment je pouvais m’y prendre. La dernière chose à faire était d’embellir le code source avant d’en générer une sortie PDF, ce qui est le travail de Perl::Tidy. Cette opération a été rendue nécessaire car après quelques utilisations, je suis tombé sur quelques modules dont les lignes dépassaient nettement d’une page A4. L’utilisation de Perl::Tidy permet de résoudre ce problème de mise en page.

    Le code

    Quelques remarques concernant le code. J’utilise le handle de fichier prédéfini DATA pour stocker le modèle de fichier LaTeX. Le premier argument attendu par process, c’est-à-dire la fonction effectuant le traitement du modèle, pouvant être une référence à un handle de fichier, c’est ce que j’ai fait dans le cas présent, sous la forme d’un \*DATA. Au final, voici le script que cela donne :

    Conclusion

    Et voilà, grâce à ce petit script, je peux maintenant lire le code souhaité à mon aise dans les transports en commun. Dans le futur, je pourrai exploiter éventuellement les langages reconnus par listings en incluant un mécanisme de reconnaissance du langage employé dans le fichier donné en argument, pourquoi pas en utilisant File::MMagic ?

    Références

    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : GNU/Linux Magazine 149
    Édito : GNU/Linux Magazine HS N°60
    Édito : Misc 61
    Édito : Linux Pratique 71
    Édito : Linux Essentiel N°25
    Communication RSS Com. RSS Presse
    Lancement de la plateforme de vente en ligne de PDF des Éditions Diamond ! Un...
    Misc N°61 – Communiqué de presse
    GNU/Linux Magazine N°149 – Communiqué de presse
    GNU/Linux Magazine HS N°60 – Communiqué de presse
    Linux Pratique N°71 – Communiqué de presse
    prochainement moteur de recherches des articles
     
    :
    :
    Jours heures minutes secondes
    En kiosque Flux RSS

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...