Listing du fichier emarge_latex.pl
00001# (gH) -_- emarge.pl ; TimeStamp (unix) : 29 Janvier 2011 vers 12:19
00002
00003 $version_GH = 5.3 ;
00004
00005 use lib $ENV{"PERL_MACROS"} ;
00006 use strFuncs ;
00007
00008 $fltx = "lstemarge" ;
00009
00010 if ($#ARGV==-1) {
00011 print "\n emarge_latex.pl -- (gH) ; pv=08/10/2007 \n\n" ;
00012 print " syntaxe : emarge nom_fichier [Filière (mots sans _)] \n" ;
00013 print " exemples : emarge asi.lst \n" ;
00014 print " emarge licpro.lst LicPro\n" ;
00015 print " remarque : vous pouvez alors utiliser $fltx.tex, .dvi, titre.ps... \n\n";
00016 print " il vaut mieux être dans un répertoire temporaire pour utiliser emarge.\n\n" ;
00017 print " il faut mettre un point-virgule entre les prénoms et nom, comme par exemple pour le format standard : \n" ;
00018 print " Damien Xavier ; DURAND ; 2009_2010 ; email... \n\n" ;
00019 print " S'il n'y a que deux mots, ce doit etre l'ordre NOM Prénom. \n\n" ;
00020 print " Il faut lier les mots dans les noms comme DU JARDIN ==> DU_JARDIN\n" ;
00021 print " Par contre, en principe les accents majuscules comme ".chr(200)." ne posent pas de probleme.\n" ;
00022 # chr(200) c'est É
00023 print " Il y a 15 noms par page.\n\n" ;
00024 print " Des lignes vides en fin de fichier ajoutent des lignes vides dans le tableau... \n" ;
00025 print " on peut comme cela prévoir desnouveaux arrivants. \n\n\n" ;
00026
00027 exit( -1) ;
00028 } ; # fin si sur le nombre d'arguments
00029
00030 open(FE,"$ARGV[0]") or die "\n impossible d'ouvrir le fichier nommé $ARGV[0] \n\n" ;
00031 $letitre = "" ;
00032 if ($ARGV[1] ne "") {
00033 # $letitre = $ARGV[1] ;
00034 $letitre = phraseSansPremierMot(join(" ",@ARGV)) ;
00035 } # fin si
00036
00037 ###################################################################
00038
00039 # début du fichier latex
00040
00041 ###################################################################
00042
00043 open(FS,">$fltx.tex") ;
00044 print FS << 'FINTEX1' ;
00045 % (gH) -- titre.tex ;
00046 %
00047 \documentclass[a4paper,12pt]{article}
00048 %
00049 % r\'{e}glage des marges
00050 %
00051 \parindent 0cm
00052 \parskip 0.3cm
00053 %
00054 \textheight=21.08cm
00055 \textwidth=13.5cm
00056 %
00057 % pour les accents
00058 %
00059 \usepackage[T1]{fontenc}
00060 \usepackage[french]{babel}
00061 \usepackage[latin1]{inputenc}
00062 \usepackage[a4paper,nohead,tmargin=2cm,bmargin=2cm,footskip=3ex]{geometry}
00063 %
00064 % fonte pour le titre
00065 %
00066 \newfont{\tregros}{cmss17 scaled\magstep 3}
00067 %
00068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00069 %
00070 \begin{document}
00071 % pas de page de titre
00072 \thispagestyle{empty}
00073 \begin{center}%
00074 FINTEX1
00075
00076 sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
00077
00078 print FS '{\Huge LISTE D\'EMARGEMENT '.$letitre."}\n" ;
00079 print FS '\end{center}%'."\n" ;
00080 print FS '~\\'."\n" ;
00081
00082 ###################################################################
00083
00084 # parcours du fichier et boucle d'affichage dans le tableau latex
00085
00086 ###################################################################
00087
00088 print FS "\\begin\{tabular\}\{|l|l|l|l|\}\n" ;
00089 print FS "\\hline\n" ;
00090 print FS "\\raisebox{6mm}{~}\\raisebox{-3mm}{~} Num. & ~ PRENOM & ~ NOM & ~ ~ SIGNATURE~ ~ ~ ~ ~ ~ ~ \\\\\n" ;
00091 print FS "\\hline\n" ;
00092
00093 $nbpp = 12 ; # nombre par page
00094
00095 $nbl = 0 ;
00096 $nbe = 0 ;
00097 while (<FE>) {
00098 $nbl++ ;
00099 chop($_) ;
00100 # si la ligne commence par dièse, c'est un commentaire
00101 # on la recopie comme commentaire dans le fichier latex ?
00102 if (substr(trim($_),0,1) eq "#") {
00103 # si recopie, décommenter la ligne suivante
00104 # print FS "%".$_ ;
00105 } elsif (length($_)==0) {
00106 # on ignore les lignes vides
00107 } else {
00108 # ici, on a un numéro de plus et une ligne à écrire
00109 $nbe++ ;
00110 print FS " & & & \\\\\n" ;
00111 # s'il n'y a que deux mots, c'est Ok, sinon on découpe selon les points-virgules
00112 @p_et_n = split(/\s+/,$_) ;
00113 if ($#p_et_n==1) {
00114 ($nom,$prenom) = ($p_et_n[0],$p_et_n[1]) ;
00115 } else {
00116 ($prenom,$nom,$rien) = split(/;/,$_) ;
00117 } ; # fin de si
00118
00119 # attention aux caractères _ (espace souligné) mis par (gH) pour
00120 # lier les mots comme DU JARDIN ==> DU_JARDIN
00121 # pour LaTeX, il faut \_
00122 # par contre les accents majuscules comme É ne posent pas de problème
00123
00124 $prenom =~ s/_/\\_/g ;
00125 $nom =~ s/_/\\_/g ;
00126 $nom = &maju($nom) ;
00127
00128 $lig = "\\raisebox{6mm}{~}\\raisebox{-3mm}{~}" ;
00129 $lig .= "\\texttt\{".sprintf(" %04d ",$nbe)."\} & $prenom & $nom & \\\\" ;
00130 print FS "$lig\n" ;
00131 print FS " & & & \\\\\n" ;
00132 print FS "\\hline\n" ;
00133
00134 } ; # fin si
00135
00136 # tous les $nbpp (par exemple 12 ou 15), on change de page
00137
00138 if ((($nbl%12)==0) & ($nbl>0)) {
00139 print FS "\\end\{tabular\}\n" ;
00140 print FS "\\newpage\n" ;
00141 print FS "\\thispagestyle\{empty\}\n" ;
00142 print FS "\\begin\{tabular\}\{|l|l|l|l|\}\n" ;
00143 print FS "\\hline\n" ;
00144 print FS "\\raisebox{6mm}{~}\\raisebox{-3mm}{~} Num. & ~ PRENOM & ~ NOM & ~ ~ SIGNATURE~ ~ ~ ~ ~ ~ ~ \\\\\n" ;
00145 print FS "\\hline\n" ;
00146 } ; # fin de si
00147
00148 } ; # fin de tant que
00149
00150 print FS "\\end\{tabular\}\n\n" ;
00151
00152 ###################################################################
00153
00154 # fin du fichier latex et affichage
00155
00156 ###################################################################
00157
00158 print FS << 'FINTEX2' ;
00159 \end{document}
00160 FINTEX2
00161 ###################################################################
00162 close(FS) ;
00163 close(FE) ;
00164 system("ldps $fltx ; xdv -s 8 $fltx ") ;
00165 print "\nVous pouvez utiliser $fltx*.*\n\n" ;
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)