Retrouvez cet article dans : Linux Magazine 86
Listings, l’outil adéquat
Après avoir consulté la FAQ LaTeX [2], j’ai trouvé le package qu’il me fallait :- la numérotation des lignes ;
- une mise en évidence syntaxique ;
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 pourLe code
Quelques remarques concernant le code. J’utilise le handle de fichier prédéfini#!/usr/bin/perl -w
use strict;
use warnings;
use Template;
use Getopt::Long;
use Perl::Tidy;
use File::Temp;
# options par défaut
my $config = {
output => ‘./prettyprinter-output.pdf’,
config => ‘/Users/manu/bin/.perltidyrc’,
};
my $usage = "$0: [ --config file ]”
“--input file [ --output file ]\n";
# paramètres de ligne de commande
GetOptions( $config, "input=s", "output=s", "config=file" )
or die $usage;
die $usage if ! exists $config->{input};
my $template = Template->new();
# création d’un fichier temporaire
# afin d’y mettre la version embellie du fichier source
my $tmp_source = File::Temp->new( UNLINK => 1,
SUFFIX => ".tmp" );
# mise en forme du code source par Perl::Tidy
perltidy(
source => $config->{input},
destination => $tmp_source->filename,
perltidyrc => $config->{config},
);
my $output = $config->{output};
# traitement du template
$template->process( \*DATA,
{ file => $tmp_source->filename }, $output )
or die $template->error();
__DATA__
[% FILTER latex(“pdf”) -%]
\documentclass[9pt]{article}
\usepackage{color}
\usepackage{times}
\usepackage{pifont}
\usepackage{pslatex}
\usepackage{fancyhdr}
\usepackage{fancybox}
\usepackage{fullpage}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage{listings}
\begin{document}
\lstset{
language=Perl, % le langage
showspaces=false, % afficher les espaces de manière
% visible ou non
showstringspaces=false, % idem dans les chaînes
showtabs=false, % idem pour les tabulations
numbers=left, % où afficher les numéros de lignes
numberstyle=\tiny, % le style à employer pour les
% numéros de lignes
stepnumber=2, % le pas d’affichage des numéros
% de ligne
numbersep=5pt,}
\lstinputlisting{[% file -%]}
\end{document}
[% END -%]
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 utilisantRéférences
- [1] CONWAY (Damian), Perl Best Practices, O’Reilly & Associates, 2005, ISBN 0-596-00173-8, http://www.oreilly.com/catalog/perlbp/ ; disponible en français sous le titre De l’art de programmer en Perl (O’Reilly 2006, ISBN 2-84177-369-8).
- [2] FAQ LaTeX – http://www.grappa.univ-lille3.fr/FAQ-LaTeX/
- [3] Comment insérer un code source dans un document ? – http://www.grappa.univ-lille3.fr/FAQ-LaTeX/29.53.html
- [4] CPAN – http://www.cpan.org/ pour les modules cités.





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.