From dccf63fdc3feed8d702a38f9b05022a3cdbd9c56 Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Fri, 26 Jun 2015 15:37:18 +0000 Subject: [PATCH] modif Perl/genere_catalogue_tests.pl : ajout d un index par mot-cle en fin de document (par lecture de la rubrique Mots-cles des fichiers README) --- Perl/genere_catalogue_tests.pl | 622 ++++++++++++++++++++++++--------- documentation_tests.pdf | Bin 99040 -> 100790 bytes 2 files changed, 462 insertions(+), 160 deletions(-) diff --git a/Perl/genere_catalogue_tests.pl b/Perl/genere_catalogue_tests.pl index 2e3cb33..ed5b17a 100755 --- a/Perl/genere_catalogue_tests.pl +++ b/Perl/genere_catalogue_tests.pl @@ -3,7 +3,8 @@ use strict; use warnings; use File::Basename; use English; -use Encode; +use Encode;# package encodage fichier texte +use Cwd; # package pour connaitre le repertoire courant use File::Spec::Functions qw(rel2abs); use File::Temp qw/ cleanup /;#creation d un repertoire temporaire qui s efface automatiquement en sortie de programme => my ($handle, $nom_rep) = File::Temp->newdir(TEMPLATE => "toto_XXXX"); #fonction cleanup() => appel a cleanup() pour forcer la destruction des repertoires et fichier temporaires @@ -15,45 +16,69 @@ my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?'; ##################################################################################################### # script pour generer automatiquement un document pdf qui resume les tests # disponibles (recopie des rubriques "But du test" et "Description du calcul" du -# fichier README de cahque repertoire de test) +# fichier README de chaque repertoire de test) # # Notes aux utilisateurs : # les repertoires de tests sont recherches dans toute l arborescence depuis l endroit ou -# ce script est lance (recherche de tous les repertoires commencant par Test_R ou Test_L -# A noter que si un des repertoires n a pas de fichier README, le script s arrete sans -# creation du .pdf +# ce script est lance (recherche de tous les repertoires commencant par Test_R ou Test_L) +# A noter que si un des repertoires ne contient pas de fichier README, le script s arrete sans +# creation du .pdf. De meme, si l un des fichiers README ne contient pas la rubrique "But du test" +# ou "Description du calcul" # # Notes aux developpeurs : -# - l une des plus grandes difficultes est l encodage des fichiers pour gerer les accents +# - le choix de ne pas generer de pdf a la moindre defaillance d un fichier README a pour +# but de forcer a rendre conforme les fichiers README. Une ecriture partielle du fichier +# pdf en omettant les README defaillants pourrait conduire a un oubli de certains tests. +# - l une des plus grandes difficultes est l encodage des fichiers pour gerer les accents. +# le choix d encodage est impose par la variable $ENCODAGE_TEX # (en cas de gros probleme, la meilleure solution est de supprimer/remplacer les caracteres # les plus problematiques des fichiers README) # - c est difficile d anticiper ce que les gens vont ecrire dans les fichiers README. # un certain nombre de caracteres ou de groupes de caracteres ne sont pas directement utilisables # dans un fichier .tex # (par exemple : <, >, _, etc... ou bien encore les exposants ^3.14159265) -# la gestion de ces caracteres se fait au cas par cas dans la subroutine ecrire_rubrique_README() -# au niveau du bloc suivant (substitution de caracteres s///) : - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- - #A FAIRE EVOLUER : gestion au cas par cas des caracteres speciaux dans Latex - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- -# ... -# ... -# ... - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- +# Le plus souvent, il suffit de rajouter des dollars autour des caracteres problematiques mais +# ce n est pas systematique. +# La gestion de ces caracteres se fait au cas par cas dans la subroutine translate_to_latex() +# au niveau du bloc "A FAIRE EVOLUER" (par substitution de caracteres s///g) ##################################################################################################### + +###################################################################################################### +# +# PARAMETRES +# +###################################################################################################### + +#-------------------------------------------------------------------------------- #nom du fichier catalogue de tests +#-------------------------------------------------------------------------------- my $NOM_PDF_CATALOGUE = "documentation_tests.pdf"; -#encodage du fichier .tex temporaire (pour accepter les accents) +#-------------------------------------------------------------------------------- +#encodage du fichier .tex temporaire (rq : notamment pour accepter les accents) +#-------------------------------------------------------------------------------- my $ENCODAGE_TEX = 'iso-8859-15'; +#-------------------------------------------------------------------------------- +#concernant fichiers README : +#-------------------------------------------------------------------------------- +#--liste des rubriques a recopier de chaque README (rq : insensible a la casse) +my @LISTE_RUBRIQUES_README = ('But du test', + 'Description du calcul'); +#--nom de la rubrique contenant des mots-cles (rq : insensible a la casse) +my $NOM_RUBRIQUE_MOTS_CLES = 'Mots-cles'; + + + + + + + + ######################################################################################################### @@ -71,6 +96,9 @@ verif_commande('pdflatex') or die "\nErreur (prog:$NOM_PROG) : commande pdflatex @_ = qx(pdflatex -help | grep -- -halt-on-error); ($#_ > -1) or die "\nErreur (prog:$NOM_PROG) : commande pdflatex => option -halt-on-error non existante...\n\n"; +#verif validite de la commande makeindex +verif_commande('makeindex') or die "\nErreur (prog:$NOM_PROG) : commande makeindex introuvable...\n\n"; + ######################################################################################################### @@ -78,30 +106,29 @@ verif_commande('pdflatex') or die "\nErreur (prog:$NOM_PROG) : commande pdflatex ######################################################################################################### #liste des repertoires de tests rapides (Test_R) my @REP_TESTS_R = map {chomp($_); $_} qx(find . -name "Test_R*" -type d); - #print "$_\n" for @REP_TESTS_R; + #print "$_\n" for @REP_TESTS_R; exit; #liste des repertoires de tests rapides (Test_R) my @REP_TESTS_L = map {chomp($_); $_} qx(find . -name "Test_L*" -type d); - #print "$_\n" for @REP_TESTS_L; + #print "$_\n" for @REP_TESTS_L; exit; ######################################################################################################### # verification de la presence d un fichier README dans les tests rapides @REP_TESTS_R et les tests longs @REP_TESTS_L ######################################################################################################### my $is_absence_README = 0; -#-dans les tests rapides foreach my $rep_test (@REP_TESTS_R,@REP_TESTS_L) { (-e "$rep_test/README") or do { - print "\n" if(not $is_absence_README);#on passe une ligne si c est le premier repertoire defaillant + warn "\n" if(not $is_absence_README);#on passe une ligne si c est le premier repertoire defaillant warn "Erreur (prog:$NOM_PROG) : repertoire de test $rep_test ne contient pas de fichier README...\n"; $is_absence_README = 1; }; } #arret du programme si il y a absence d au moins 1 fichier README if($is_absence_README) { - print "\n"; - print_ligne_pointilles(); - print "Erreur (prog:$NOM_PROG) : arret a cause de l absence de fichiers README\n"; - print_ligne_pointilles(); + warn "\n"; + afficher_ligne_pointilles('warn'); + warn "Erreur (prog:$NOM_PROG) : arret a cause de l absence de fichier(s) README\n"; + afficher_ligne_pointilles('warn'); die "\n"; } @@ -121,11 +148,11 @@ $SIG{TERM} = \&sortie_programme;#TERM => capture signal : kill -15 #creation d un repertoire temporaire (... qui s effacera automatiquement en sortie de programme grace a l utilisation de la construction objet File::Temp->newdir() -my $rep_tmp = File::Temp->newdir("rep_tmp_".$NOM_PROG.'_XXXXX'); +my $REP_TMP = File::Temp->newdir("rep_tmp_".$NOM_PROG.'_XXXXX'); my $racine_fic_latex = "toto"; #deplacement vers le repertoire temporaire -chdir $rep_tmp; +chdir $REP_TMP; #------------------------------------------------------------------------------------------ #creation du fichier .tex avec encodage $ENCODAGE_TEX (et debut du document : preambule) @@ -139,111 +166,32 @@ preambule_fic_tex_tmp($HANDLE_TEX); #--- tests rapides --- print $HANDLE_TEX "\\clearpage\\newpage\n"; print $HANDLE_TEX "\\section{Tests rapides}\n"; - -my $no_test = 0; -foreach my $rep_test (@REP_TESTS_R) { - $_ = $rep_test; s/^\.+\///; - print "ajout test : $_\n"; - - #incrementation numero test - $no_test++; - - #chemin du fichier README - my $fic_README = "../$rep_test/README"; - - #derniere partie du nom du repertoire - my $nom_test = basename $rep_test; - $nom_test =~ s/_/\$\\_\$/g;#tiret bas entre dollars - - #ecriture d une nouvelle sous-section pour ce test - print $HANDLE_TEX "\\subsection{Test\$\\_\$R n\$^\\circ\$$no_test : $nom_test}\n"; - - #ecriture du nom complet du repertoire sous forme d une arborescence simple - print $HANDLE_TEX "\\noindent \\underline{R\\\'epertoire} :\\\\\n"; - my @rep_arbo = split(/\/+/, $rep_test); - shift(@rep_arbo) if($rep_arbo[0] =~ /^\.+$/);#suppression d un eventuel ./ ou ../ devant le nom du repertoire - #--variables pour faire une jolie indentation via \hspace - my $hspace_cm = 0.5; - my $hspace_cm_incr = 0.35; - foreach my $rep_arbo (@rep_arbo) { - $rep_arbo =~ s/_/\$\\_\$/g; - print $HANDLE_TEX "\\hspace*{${hspace_cm}cm}\$\\triangleright\$ $rep_arbo\\\\\n"; - $hspace_cm += $hspace_cm_incr; - } - - #saisie de l encodage du README (par defaut : rien) (rq : on utilise la commande linux/Unix "file") - my $encodage_source = ''; - #cas UTF-nombre (exemples : UTF-8, UTF-16, etc...) - if(qx(file $fic_README) =~ /utf-(\d+)/i) { - $encodage_source = ":encoding(UTF-$1)"; - } - - #ecriture de la partie "But du test" - ecrire_rubrique_README($fic_README, $encodage_source, $HANDLE_TEX, qw(But du test) ); - - - #ecriture de la partie "Description du calcul" - ecrire_rubrique_README($fic_README, $encodage_source, $HANDLE_TEX, qw(Description du calcul) ); -} +recopie_README("R", $HANDLE_TEX, \@REP_TESTS_R, @LISTE_RUBRIQUES_README); #--- tests longs --- print $HANDLE_TEX "\\clearpage\\newpage\n"; print $HANDLE_TEX "\\section{Tests longs}\n"; +recopie_README("L", $HANDLE_TEX, \@REP_TESTS_L, @LISTE_RUBRIQUES_README); -$no_test = 0; -foreach my $rep_test (@REP_TESTS_L) { - $_ = $rep_test; s/^\.+\///; - print "ajout test : $_\n"; - - #incrementation numero test - $no_test++; - - #chemin du fichier README - my $fic_README = "../$rep_test/README"; - - #derniere partie du nom du repertoire - my $nom_test = basename $rep_test; - $nom_test =~ s/_/\$\\_\$/g;#tiret bas entre dollars - - #ecriture d une nouvelle sous-section pour ce test - print $HANDLE_TEX "\\subsection{Test\$\\_\$L n\$^\\circ\$$no_test : $nom_test}\n"; - - #ecriture du nom complet du repertoire sous forme d une arborescence simple - print $HANDLE_TEX "\\noindent \\underline{R\\\'epertoire} :\\\\\n"; - my @rep_arbo = split(/\/+/, $rep_test); - shift(@rep_arbo) if($rep_arbo[0] =~ /^\.+$/);#suppression d un eventuel ./ ou ../ devant le nom du repertoire - #--variables pour faire une jolie indentation via \hspace - my $hspace_cm = 0.5; - my $hspace_cm_incr = 0.35; - foreach my $rep_arbo (@rep_arbo) { - $rep_arbo =~ s/_/\$\\_\$/g; - print $HANDLE_TEX "\\hspace*{${hspace_cm}cm}\$\\triangleright\$ $rep_arbo\\\\\n"; - $hspace_cm += $hspace_cm_incr; - } - - #saisie de l encodage du README (par defaut : rien) (rq : on utilise la commande linux/Unix "file") - my $encodage_source = ''; - #cas UTF-nombre (exemples : UTF-8, UTF-16, etc...) - if(qx(file $fic_README) =~ /utf-(\d+)/i) { - $encodage_source = ":encoding(UTF-$1)"; - } - - #ecriture de la partie "But du test" - ecrire_rubrique_README($fic_README, $encodage_source, $HANDLE_TEX, qw(But du test) ); - - - #ecriture de la partie "Description du calcul" - ecrire_rubrique_README($fic_README, $encodage_source, $HANDLE_TEX, qw(Description du calcul) ); -} #------------------------------------------------------------------------------------------ -#fin de l ecriture du fichier .tex : ajout de end{document} +#fin de l ecriture du fichier .tex #------------------------------------------------------------------------------------------ +#ajout de l index (ajout egalement dans le sommaire sans numerotation) +print $HANDLE_TEX "\\clearpage\\newpage\n"; +print $HANDLE_TEX "\\printindex\n";#ecriture de l index + +#ajout de \end{document} print $HANDLE_TEX "\\end{document}\n"; close($HANDLE_TEX); + #------------------------------------------------------------------------------------------ -#compilation pdflatex (1 premiere fois pour voir si ca marche et une 2eme fois pour generer la table des matieres et les hyperliens +#compilation pdflatex (avec index) +# en trois temps : +# 1- premier pdflatex (generation du .pdf et du .idx) +# 2- makeindex (creation de l index) +# 3- deuxieme pdflatex (table des matieres et index) #------------------------------------------------------------------------------------------ print "\n"; print "compilation pdflatex (1ere fois)\n"; @@ -261,14 +209,37 @@ system("pdflatex -halt-on-error $racine_fic_latex.tex > toto.log"); chdir ".."; sortie_programme(); } -#-2eme compilation (etant donne que ca a marche la 1ere fois, pdflatex ne peut pas echouer cette 2eme fois) +#-generation de l index +print "compilation index (makeindex)\n"; + #-verif presence .idx + if(not -e "$racine_fic_latex.idx") { + warn "\nErreur (prog:$NOM_PROG) : le fichier index .idx n a pas ete cree\n"; + warn " Les fichiers suivants ont ete cree a des fins de debug :\n"; + warn " - $NOM_PDF_CATALOGUE.tex (fichier .tex donne en argument de pdflatex)\n"; + warn " - $NOM_PDF_CATALOGUE.error_log (affichage renvoye par pdflatex)\n"; + warn "\n"; + system("mv -f $racine_fic_latex.tex ../$NOM_PDF_CATALOGUE.tex"); + system("mv -f toto.log ../$NOM_PDF_CATALOGUE.error_log"); + chdir ".."; + sortie_programme(); + } +system("makeindex $racine_fic_latex.idx > toto.log"); +#-2eme compilation (pdflatex avec option -halt-on-error pour forcer a quitter a la moindre erreur) print "compilation pdflatex (2eme fois)\n"; -system("pdflatex $racine_fic_latex.tex > toto.log"); - - - - - +system("rm -f $racine_fic_latex.pdf"); +system("pdflatex -halt-on-error $racine_fic_latex.tex > toto.log"); + #-verif presence .pdf + if(not -e "$racine_fic_latex.pdf") { + warn "\nErreur (prog:$NOM_PROG) : erreur a l execution de pdflatex.\n"; + warn " Les fichiers suivants ont ete cree a des fins de debug :\n"; + warn " - $NOM_PDF_CATALOGUE.tex (fichier .tex donne en argument de pdflatex)\n"; + warn " - $NOM_PDF_CATALOGUE.error_log (affichage renvoye par pdflatex)\n"; + warn "\n"; + system("mv -f $racine_fic_latex.tex ../$NOM_PDF_CATALOGUE.tex"); + system("mv -f toto.log ../$NOM_PDF_CATALOGUE.error_log"); + chdir ".."; + sortie_programme(); + } @@ -280,15 +251,15 @@ chdir ".."; #affichage fin programme print "\n"; -print_ligne_pointilles(); +afficher_ligne_pointilles('print'); print "Le fichier $NOM_PDF_CATALOGUE a ete cree...\n"; -print_ligne_pointilles(); +afficher_ligne_pointilles('print'); print "\n"; #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#remarque : fin du programme => le repertoire temporaire $rep_tmp sera efface automatiquement +#remarque : fin du programme => le repertoire temporaire $REP_TMP sera efface automatiquement # car utilisation de File::Temp->newdir() #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -302,74 +273,392 @@ print "\n"; #subroutine de sortie du programme #-------------------------------------------------- sub sortie_programme { + #- - - - - - - - - #effacement du repertoire temporaire (subroutine cleanup() du package File::Temp) + #- - - - - - - - - + # rq : on remonte d un cran dans l arborescence si le repertoire courant est le repertoire temporaire + # (sinon le repertoire temporaire $REP_TMP ne pourra pas etre efface avec cleanup() ) + chdir ".." if(cwd() =~ /$REP_TMP/); cleanup(); exit; -} - - - +}#sub sortie_programme #-------------------------------------------------- -#subroutine qui ecrit une rubrique du fichier du README +#subroutine pour generer un label de section sur 9 caracteres de A a Z +# rq : la variable $LABEL_ACTUEL est hors subroutine pour la rendre globale +# elle est initialisee lors du premier appel a la subroutine +# rq : le label est constitue de 9 caracteres (a priori, il ne faut pas depasser ce nombre +# pour eviter une erreur latex dans les index) +# de toute facon, avec 9 caracteres, la batterie peut contenir jusqu a 26 puissance 9, soit plus de 5400 milliards de tests !!!! #-------------------------------------------------- -sub ecrire_rubrique_README { +my $LABEL_ACTUEL; +sub genere_label_section { + #initialisation du label actuel si c est la premiere fois que cette subroutine est appelee + $LABEL_ACTUEL = 'AAAAAAAAA' if(not defined $LABEL_ACTUEL); + + + #le label a renvoyer est le label actuel + my $label_a_renvoyer = $LABEL_ACTUEL; + + + #table de conversion lettre en position alphabet (et l inverse) + my $TAB_CONVERT_lettre2pos = { + 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, + 'G' => 7, 'H' => 8, 'I' => 9, 'J' => 10, 'K' => 11, 'L' => 12, + 'M' => 13, 'N' => 14, 'O' => 15, 'P' => 16, 'Q' => 17, 'R' => 18, + 'S' => 19, 'T' => 20, 'U' => 21, 'V' => 22, 'W' => 23, 'X' => 24, + 'Y' => 25, 'Z' => 26}; + my $TAB_CONVERT_pos2lettre = { + '1' => 'A', '2' => 'B', '3' => 'C', '4' => 'D', '5' => 'E', '6' => 'F', + '7' => 'G', '8' => 'H', '9' => 'I', '10' => 'J', '11' => 'K', '12' => 'L', + '13' => 'M', '14' => 'N', '15' => 'O', '16' => 'P', '17' => 'Q', '18' => 'R', + '19' => 'S', '20' => 'T', '21' => 'U', '22' => 'V', '23' => 'W', '24' => 'X', + '25' => 'Y', '26' => 'Z'}; + + #- - - - - - - - - + #actualisation du label pour le prochain appel + #- - - - - - - - - + #label actuel sous forme d un tableau d entier par conversion + my @tab_label = map {$TAB_CONVERT_lettre2pos->{$_}} split(//, $LABEL_ACTUEL); + my $nb_chars = $#tab_label + 1; + + #test qui ne devrait jamais poser probleme (a moins que la batterie de verif ne contiennent 26 puissance 9 tests !!!!) + my $is_max_test = 1; + for(my $i=0; $i<$nb_chars; $i++) {$is_max_test = 0 if($tab_label[$i] != 26);} + if($is_max_test) { + warn "\n"; + afficher_ligne_pointilles('warn'); + warn "Erreur (prog:$NOM_PROG) : le nombre de tests de la batterie a atteint son maximum de 26 puissance $nb_chars !!!!!!\n\n"; + afficher_ligne_pointilles('warn'); + warn "\n"; + sortie_programme(); + } + + #incrementation du label + $tab_label[0]++; + for(my $i=0; $i<$nb_chars; $i++) { + #incrementation de l indice suivant si l indice courant depasse 26 + if($tab_label[$i] > 26) { + $tab_label[$i] = 1; + $tab_label[$i+1]++ if($i != ($nb_chars-1)); + } + else { + last; + } + } + + #-conversion inverse + $LABEL_ACTUEL = ''; + foreach my $val (@tab_label) {$LABEL_ACTUEL .= $TAB_CONVERT_pos2lettre->{$val};} + + #rappel : on return la valeur precedente de $LABEL_ACTUEL et non celle que l on vient d actualiser + return $label_a_renvoyer; +}#sub genere_label_section + + +#-------------------------------------------------- +#subroutine pour recopier les fichiers README d une +# liste de repertoires de tests vers un fichier ouvert +#-------------------------------------------------- +# +# en entree : +# - lettre indiquant test rapide ou long (donc la lettre "R" ou "L") +# - handle du fichier destination (donc deja ouvert par open() ) +# - reference vers la liste des repertoires de test (antislash devant pour une reference : par exemple \@REP_TESTS_R) +# - liste des noms de rubriques a recopier ( +# +# pas de sortie +# +sub recopie_README { + my $lettre_rapide_ou_long = shift;#doit etre egal a R ou L + my $handle_destination = shift; + my $ref_liste_rep_tests = shift; + my @liste_rubriques = @_; + + my $no_test = 0; + foreach my $rep_test (@$ref_liste_rep_tests) { + $_ = $rep_test; s/^\.+\///;#suppression de l eventuel ./ ou ../ devant le nom du repertoire + print "ajout test : $_\n"; + + #incrementation numero test + $no_test++; + + #chemin du fichier README + my $fic_README = "../$rep_test/README"; + + #derniere partie du nom du repertoire + my $nom_test = basename $rep_test; + $nom_test =~ s/_/\$\\_\$/g;#tiret bas entre dollars + + #saisie de l encodage du README (par defaut : rien) (rq : on utilise la commande linux/Unix "file" pour avoir des infos sur l encodage) + my $encodage_source = ''; + #cas UTF-nombre (exemples : UTF-8, UTF-16, etc...) + if(qx(file $fic_README) =~ /utf-(\d+)/i) { + $encodage_source = ":encoding(UTF-$1)"; + } + #autres cas a definir + #elsif() {} + + + #- - - - - - - - - - - - - - - - + #ecriture d une nouvelle sous-section pour ce test + #- - - - - - - - - - - - - - - - + print $HANDLE_TEX "\\subsection{Test\$\\_\$$lettre_rapide_ou_long n\$^\\circ\$$no_test : $nom_test}\n"; + + #- - - - - - - - - - - - - - - - + #indexage et ecriture de la liste des mots-cles eventuels de ce test + #- - - - - - - - - - - - - - - - + my @mots_cles = saisir_mots_cles_README($fic_README, $encodage_source); + if($#mots_cles > -1) { + #indexage + #--generation d un label + my $label_section = genere_label_section(); + print $HANDLE_TEX "\\label{$label_section}\n"; + #indexage de chaque mot-cle via commande \ind (voir preambule du document latex dans la subroutine preambule_fic_tex_tmp() ) + foreach my $mot_cle (@mots_cles) { + print $HANDLE_TEX "\\ind{$mot_cle}{$label_section}\n"; + } + } + + + #- - - - - - - - - - - - - - - - + #ecriture du nom complet du repertoire sous forme d une arborescence simple + #- - - - - - - - - - - - - - - - + print $HANDLE_TEX "\\noindent \\underline{R\\\'epertoire} :\\\\\n"; + my @rep_arbo = split(/\/+/, $rep_test); + shift(@rep_arbo) if($rep_arbo[0] =~ /^\.+$/);#suppression d un eventuel ./ ou ../ devant le nom du repertoire + #--variables pour faire une jolie indentation via \hspace + my $hspace_cm = 0.5; + my $hspace_cm_incr = 0.35; + foreach my $rep_arbo (@rep_arbo) { + $rep_arbo =~ s/_/\$\\_\$/g;#eventuels tirets bas entre dollars + print $HANDLE_TEX "\\hspace*{${hspace_cm}cm}\$\\triangleright\$ $rep_arbo\\\\\n"; + $hspace_cm += $hspace_cm_incr; + } + + + #- - - - - - - - - - - - - - - - + #recopie des rubriques dans l ordre de la liste @liste_rubriques + #- - - - - - - - - - - - - - - - + #indicateurs de reussite de la recopie des rubriques du README + my ($is_probleme_rubrique, $message); + + foreach my $rubrique (@liste_rubriques) { + $rubrique =~ s/^\s+//; + $rubrique =~ s/\s+$//; + my @mots_rubriques = split(/\s+/, $rubrique); + #ecriture de la rubrique + ($is_probleme_rubrique, $message) = recopie_rubrique_README($fic_README, $encodage_source, $HANDLE_TEX, @mots_rubriques); + #-- erreur si la rubrique n a pas ete trouvee + if($is_probleme_rubrique) { + warn "Erreur (prog:$NOM_PROG) : lecture README => probleme dans la recopie de la rubrique \"$rubrique\" avec le message d erreur suivant :\n"; + warn " **$message\n"; + warn "\n"; + sortie_programme(); + } + }#foreach my $rubrique (@liste_rubriques) + + }#foreach my $rep_test (@$ref_liste_rep_tests) +}#sub recopie_README + + +#-------------------------------------------------- +#subroutine qui ecrit une rubrique du fichier README vers un fichier deja ouvert +#-------------------------------------------------- +# +# en entree : +# - chemin vers le fichier README +# - encodage du fichier README (de la forme ":encoding(nom_encodage)", par exemple : ":encoding(UTF-8)" +# - handle du fichier destination (donc deja ouvert par open() ) +# - liste de mots de la rubrique +# +# en sortie : +# - un indicateur de reussite avec les valeurs suivantes : +# 0 => la rubrique a ete trouvee et recopiee avec succes +# 1 => il y a eu une non-conformite +# - message +# +sub recopie_rubrique_README { my $fic_source = shift; my $encodage_source = shift; my $handle_fic_destination = shift; my @mots_rubriques = @_; + #construction du titre de la rubrique a partir des mots @mots_rubriques + # et d une expression reguliere pour rechercher la rubrique my $regexp = shift(@mots_rubriques); + my $nom_rubrique = $regexp; foreach my $mot (@mots_rubriques) { $regexp .= '\s+'."$mot"; + $nom_rubrique .= " $mot"; } + #a ce stade, le motif a trouver est de la forme : mot\s+mot\s+mot etc... + + #indicateur de reussite et message associe + my $is_probleme_rubrique = 1; + my $message = 'rubrique introuvable'; open(my $Hlocal, "<$encodage_source", "$fic_source"); while(<$Hlocal>) { - next if(not /^\s*$regexp\s*$/i); - $_ = <$Hlocal>; - print $handle_fic_destination "\\subsubsection{Description du calcul}\n"; + next if(not /^\s*$regexp\s*$/i);#recherche du bloc correspondant a la rubrique + #normalement, la ligne suivante est une ligne de pointilles + $_ = <$Hlocal>; chomp; + #-si ce n est pas une ligne de pointilles => echec + if(not /^\s*-+\s*$/) { + $is_probleme_rubrique = 1; + $message = 'rubrique trouvee mais non conforme (absence de la ligne de pointilles apres le nom de la rubrique)'; + last; + } + + #- - - - - - - - - - - - - - - - - - - - - - - - - - - + #recopie de la rubrique vers le fichier de destination + #- - - - - - - - - - - - - - - - - - - - - - - - - - - + $is_probleme_rubrique = 0; + $message = 'rubrique trouvee et recopiee avec succes'; + + #creation d une sous-sous-section pour cette rubrique + print $handle_fic_destination "\\subsubsection{$nom_rubrique}\n"; + while(<$Hlocal>) { - last if(/^\s*-+$/); - chomp(); - - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- - #A FAIRE EVOLUER : gestion au cas par cas des caracteres speciaux dans Latex - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- - s/_/\$\\_\$/g;#tiret bas (solution : entre dollars) - s/\^($format_reel)/\$\^$1\$/g;#cas d un exposant mathematique : symbole circonflexe suivi d un nombre (solution : entre dollars) - s/([<>])/\$$1\$/;#symboles inferieur et superieur (solution : entre dollars) - #-------------------------------------------------------------------------------- - #-------------------------------------------------------------------------------- + last if(/^\s*-+$/);#critere d arret : ligne de pointilles (a moins que la fin du fichier n ait ete atteinte avant) + chomp; + #gestion des caracteres ou groupes de caracteres speciaux + $_ = translate_to_latex($_); print $handle_fic_destination "$_\\\\\n"; } + last; } close($Hlocal); -}#sub ecrire_rubrique_README + return ($is_probleme_rubrique, $message); +}#sub recopie_rubrique_README +#-------------------------------------------------- +#subroutine permettant de saisir les mots-cles contenus dans la rubrique "Mots-cles" d un fichier README +# important : cette subroutine s attend a trouver un seul mot-cle par ligne et pouvant contenir des espaces (exemple : "contraintes planes") +# rq : le nom de la rubrique a trouver est contenu dans la variable $NOM_RUBRIQUE_MOTS_CLES +#-------------------------------------------------- +# +# en entree : +# - chemin vers le fichier README +# - encodage du fichier README (de la forme ":encoding(nom_encodage)", par exemple : ":encoding(UTF-8)" +# +# en sortie : +# - liste de mots-cles +# +sub saisir_mots_cles_README { + my $fic_source = shift; + my $encodage_source = shift; + + #construction d une expression reguliere pour rechercher la rubrique + $NOM_RUBRIQUE_MOTS_CLES =~ s/^\s+//; + $NOM_RUBRIQUE_MOTS_CLES =~ s/\s+$//; + my @mots_rubrique = split(/\s+/, $NOM_RUBRIQUE_MOTS_CLES); + my $regexp = shift(@mots_rubrique); + foreach my $mot (@mots_rubrique) { + $regexp .= '\s+'."$mot"; + } + #a ce stade, le motif a trouver est de la forme : mot\s+mot\s+mot etc... + + #liste des mots-cles de la rubrique Mots-cles de ce README + my @liste_mots_cles; + + open(my $Hlocal, "<$encodage_source", "$fic_source"); + while(<$Hlocal>) { + next if(not /^\s*$regexp\s*$/i);#recherche du bloc correspondant a la rubrique + #normalement, la ligne suivante est une ligne de pointilles + $_ = <$Hlocal>; chomp; + #-si ce n est pas une ligne de pointilles => echec + if(not /^\s*-+\s*$/) { + last; + } + + #- - - - - - - - - - - - - - - - - - - - - - - - - - - + #saisie des mots-cles + #- - - - - - - - - - - - - - - - - - - - - - - - - - - + + while(<$Hlocal>) { + last if(/^\s*-+$/);#critere d arret : ligne de pointilles (a moins que la fin du fichier n ait ete atteinte avant) + next if(/^\s*$/); + chomp; + s/^\s+//; s/\s+$//; + + #gestion des caracteres ou groupes de caracteres speciaux + $_ = translate_to_latex($_); + + #ajout du mots-cle a la liste + push(@liste_mots_cles, $_); + } + + last; + } + close($Hlocal); + + return(@liste_mots_cles); +}#sub saisir_mots_cles_README + + + +#-------------------------------------------------- +#subroutine de conversion des caracteres ou groupe de caracteres speciaux en vue +# d une ecriture latex +#-------------------------------------------------- +# +# en entree : +# - une chaine de caracteres +# +# en sortie : +# - la chaine convertie +# +sub translate_to_latex { + my $string = shift; + + #-------------------------------------------------------------------------------- + #-------------------------------------------------------------------------------- + #A FAIRE EVOLUER : gestion au cas par cas des caracteres speciaux dans Latex + # + # (important : ne pas oublier de l option "g" a la fin de l operateur de substitution => $string =~ s/bla bla/ha ha/g; ) + #-------------------------------------------------------------------------------- + #-------------------------------------------------------------------------------- + $string =~ s/_/\$\\_\$/g;#tiret bas (solution : antislash devant + entre dollars) + $string =~ s/\^($format_reel)/\$\^$1\$/g;#cas d un exposant mathematique : symbole circonflexe suivi d un nombre (solution : entre dollars) + $string =~ s/([<>])/\$$1\$/g;#symboles inferieur et superieur (solution : entre dollars) + #ajouter ici d autres cas sous la forme : $string =~ s/bla bla/ha ha/g; + #-------------------------------------------------------------------------------- + #-------------------------------------------------------------------------------- + + return $string; +}#sub translate_to_latex #-------------------------------------------------- #subroutine permettant d ecrire une ligne de pointilles de la largeur du terminal #-------------------------------------------------- -sub print_ligne_pointilles { +# +# en entree : +# - print ou warn (suivant que l on souhaite afficher avec print (donc vers STDOUT) ou warn (donc vers STDERR) +# +sub afficher_ligne_pointilles { use Term::ReadKey; - my $nb_char_largeur_terminal = ( GetTerminalSize() )[0]; + my $nb_char_largeur_terminal = ( GetTerminalSize() )[0];#largeur du terminal en nombre de caracteres (via package Term::ReadKey) + + my $funct_disp = shift; + + my $ligne_pointilles = ''; $ligne_pointilles .= '-' for(1 .. $nb_char_largeur_terminal); - print "$ligne_pointilles\n"; -}#sub print_message_avec_pointilles + + print "$ligne_pointilles\n" if($funct_disp eq 'print'); + warn "$ligne_pointilles\n" if($funct_disp eq 'warn'); +}#sub afficher_ligne_pointilles #-------------------------------------------------- @@ -390,7 +679,7 @@ sub preambule_fic_tex_tmp { \usepackage{amsmath} \usepackage{subfigure} %\usepackage{/Users/troufflard/LATEX/BIBLIOTHEQUE/macro_figure} -%\usepackage{eurosym} +%\usepackage{eurosym} \usepackage{calc} %\usepackage{t1enc} \usepackage{ifthen} @@ -439,6 +728,19 @@ citecolor= green %couleur citation biblio %\pagestyle{arabic} \pagenumbering{arabic} + +%remarque : le package makeidx doit etre place apres \usepackage{hyperref} pour beneficier des liens hyperef dans l index +\usepackage{imakeidx} +%-- nouvelles commandes pour que ce soit des numeros de section (et non des pages) qui apparaissent dans l index +% selon astuce (2015-06-26) : http://www.latex-community.org/forum/viewtopic.php?f=51&t=14334 +%:: \ind => 2 arguments : index entry, label de section +\newcommand{\ind}[2]{\index{#1|inds{\ref{#2}}}} +%:: \inds => ne sert qu a enlever les numeros de page dans la \ref de \ind +\newcommand{\inds}[2]{#1} +% exemple de sequence avec une section et 2 mots indexes concernant cette section : +% \section{Revelations : la face cachee du monde de la recherche}\label{section_1}\ind{scandale}{section_1}\ind{Capital_sur_M6}{section_1} +\makeindex[intoc] + \begin{document} \maketitle diff --git a/documentation_tests.pdf b/documentation_tests.pdf index ff7c9d274fbf0599e746b2331051712e25e4992c..83770c08f55393b2ca7b36549e43c60a0ab90b36 100644 GIT binary patch delta 40023 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