# (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" ;
Retour à la page principale de (gH)