# (gH) -_- emarge.pl ; TimeStamp (unix) : 29 Janvier 2011 vers 12:19
$version_GH = 5.3 ;
use lib $ENV{"PERL_MACROS"} ;
use strFuncs ;
$fltx = "lstemarge" ;
if ($#ARGV==-1) {
print "\n emarge_latex.pl -- (gH) ; pv=08/10/2007 \n\n" ;
print " syntaxe : emarge nom_fichier [Filière (mots sans _)] \n" ;
print " exemples : emarge asi.lst \n" ;
print " emarge licpro.lst LicPro\n" ;
print " remarque : vous pouvez alors utiliser $fltx.tex, .dvi, titre.ps... \n\n";
print " il vaut mieux être dans un répertoire temporaire pour utiliser emarge.\n\n" ;
print " il faut mettre un point-virgule entre les prénoms et nom, comme par exemple pour le format standard : \n" ;
print " Damien Xavier ; DURAND ; 2009_2010 ; email... \n\n" ;
print " S'il n'y a que deux mots, ce doit etre l'ordre NOM Prénom. \n\n" ;
print " Il faut lier les mots dans les noms comme DU JARDIN ==> DU_JARDIN\n" ;
print " Par contre, en principe les accents majuscules comme ".chr(200)." ne posent pas de probleme.\n" ;
# chr(200) c'est É
print " Il y a 15 noms par page.\n\n" ;
print " Des lignes vides en fin de fichier ajoutent des lignes vides dans le tableau... \n" ;
print " on peut comme cela prévoir desnouveaux arrivants. \n\n\n" ;
exit( -1) ;
} ; # fin si sur le nombre d'arguments
open(FE,"$ARGV[0]") or die "\n impossible d'ouvrir le fichier nommé $ARGV[0] \n\n" ;
$letitre = "" ;
if ($ARGV[1] ne "") {
# $letitre = $ARGV[1] ;
$letitre = phraseSansPremierMot(join(" ",@ARGV)) ;
} # fin si
###################################################################
# début du fichier latex
###################################################################
open(FS,">$fltx.tex") ;
print FS << 'FINTEX1' ;
% (gH) -- titre.tex ;
%
\documentclass[a4paper,12pt]{article}
%
% r\'{e}glage des marges
%
\parindent 0cm
\parskip 0.3cm
%
\textheight=21.08cm
\textwidth=13.5cm
%
% pour les accents
%
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage[a4paper,nohead,tmargin=2cm,bmargin=2cm,footskip=3ex]{geometry}
%
% fonte pour le titre
%
\newfont{\tregros}{cmss17 scaled\magstep 3}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\begin{document}
% pas de page de titre
\thispagestyle{empty}
\begin{center}%
FINTEX1
sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
print FS '{\Huge LISTE D\'EMARGEMENT '.$letitre."}\n" ;
print FS '\end{center}%'."\n" ;
print FS '~\\'."\n" ;
###################################################################
# parcours du fichier et boucle d'affichage dans le tableau latex
###################################################################
print FS "\\begin\{tabular\}\{|l|l|l|l|\}\n" ;
print FS "\\hline\n" ;
print FS "\\raisebox{6mm}{~}\\raisebox{-3mm}{~} Num. & ~ PRENOM & ~ NOM & ~ ~ SIGNATURE~ ~ ~ ~ ~ ~ ~ \\\\\n" ;
print FS "\\hline\n" ;
$nbpp = 12 ; # nombre par page
$nbl = 0 ;
$nbe = 0 ;
while (<FE>) {
$nbl++ ;
chop($_) ;
# si la ligne commence par dièse, c'est un commentaire
# on la recopie comme commentaire dans le fichier latex ?
if (substr(trim($_),0,1) eq "#") {
# si recopie, décommenter la ligne suivante
# print FS "%".$_ ;
} elsif (length($_)==0) {
# on ignore les lignes vides
} else {
# ici, on a un numéro de plus et une ligne à écrire
$nbe++ ;
print FS " & & & \\\\\n" ;
# s'il n'y a que deux mots, c'est Ok, sinon on découpe selon les points-virgules
@p_et_n = split(/\s+/,$_) ;
if ($#p_et_n==1) {
($nom,$prenom) = ($p_et_n[0],$p_et_n[1]) ;
} else {
($prenom,$nom,$rien) = split(/;/,$_) ;
} ; # fin de si
# attention aux caractères _ (espace souligné) mis par (gH) pour
# lier les mots comme DU JARDIN ==> DU_JARDIN
# pour LaTeX, il faut \_
# par contre les accents majuscules comme É ne posent pas de problème
$prenom =~ s/_/\\_/g ;
$nom =~ s/_/\\_/g ;
$nom = &maju($nom) ;
$lig = "\\raisebox{6mm}{~}\\raisebox{-3mm}{~}" ;
$lig .= "\\texttt\{".sprintf(" %04d ",$nbe)."\} & $prenom & $nom & \\\\" ;
print FS "$lig\n" ;
print FS " & & & \\\\\n" ;
print FS "\\hline\n" ;
} ; # fin si
# tous les $nbpp (par exemple 12 ou 15), on change de page
if ((($nbl%12)==0) & ($nbl>0)) {
print FS "\\end\{tabular\}\n" ;
print FS "\\newpage\n" ;
print FS "\\thispagestyle\{empty\}\n" ;
print FS "\\begin\{tabular\}\{|l|l|l|l|\}\n" ;
print FS "\\hline\n" ;
print FS "\\raisebox{6mm}{~}\\raisebox{-3mm}{~} Num. & ~ PRENOM & ~ NOM & ~ ~ SIGNATURE~ ~ ~ ~ ~ ~ ~ \\\\\n" ;
print FS "\\hline\n" ;
} ; # fin de si
} ; # fin de tant que
print FS "\\end\{tabular\}\n\n" ;
###################################################################
# fin du fichier latex et affichage
###################################################################
print FS << 'FINTEX2' ;
\end{document}
FINTEX2
###################################################################
close(FS) ;
close(FE) ;
system("ldps $fltx ; xdv -s 8 $fltx ") ;
print "\nVous pouvez utiliser $fltx*.*\n\n" ;
|