Outils d'utilisateurs

Outils du Site


Sidebar

====== Navigation dans le wiki ====== * [[accueil|Accueil]] * [[http://melusine.eu.org/syracuse/contrib/|Syracuse]] //(contributions)// ===== Espaces dédiés ===== * [[pstricks:index|PSTricks]] * [[Pgf/Tikz:index|Pgf/Tikz]] * [[gnuplot:index|Gnuplot]] * [[octave::index|Octave]] ===== Contributeurs ===== * [[mc:index|Maxime Chupin]] * [[cp:index|Christophe Poulain]] * [[jms:index|Jean-Michel Sarlat]] * [[sylcha:index|Sylvain Chambon]] * [[rouxn:index|Nicolas Roux]] * [[tj:index|Thierry Joffredo]] * [[tg:index|Thierry Gauvin]]

mc:ptab

====== PTab ====== Ce petit script perl permet de générer le code LaTeX d'un tableau de valeurs d'un fichier dat, txt... ===== Utilisation ===== Supposons qu'on veuille créer un tableau avec les valeurs d'un fichier externe ''val.txt''. Alors dans notre document LaTeX ''monfichier.tex'', on insert la ligne suivante : <code> .t /mon/chemin/val.txt </code> On execute alors ''ptab'' : <code> ptab monfichier.tex </code> ===== Fonctionnement ===== Lors de l'utilisation de ptab, il se crée un fichier val.tex contenant le code tex du tableau uniquement, puis dans le fichier //maître// tex, les lignes de //commandes// sont commentées et une ligne d'inclusion ''\include{val}'' est rajoutée. La notation //acceptée// des nombres est celle qu'accepte perl (la notation avec E pour les puissances de 10 est correctement traitée). ===== Exemple ===== On a le fichier de valeurs ''dat.dat'' suivant : <code> 1.001 2 3.7 4.34 5.0 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 </code> et le fichier ''test.tex'' suivant : <code latex> \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage[frenchb]{babel} \usepackage{amsmath} \begin{document} Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... \section{Une section} .pt formatage 2 .t /fichiers/programation/perl/dat.dat \end{document} </code> On execute ptab : <code> $> ptab test.tex </code> Alors le fichier ''dat.tex'' est créé au //niveau// de ''test.tex'' : <code latex> \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} \hline 1.00&2.00&3.70&4.34&5.00&6.00&7.00&8.00&9.00&10.00\\\hline 11.00&12.00&13.00&14.00&15.00&16.00&17.00&18.00&19.00&20.00\\\hline 21.00&22.00&23.00&24.00&25.00&26.00&27.00&28.00&29.00&30.00\\\hline \end{tabular} </code> et le fichier ''test.tex'' est devenu : <code latex> \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage[frenchb]{babel} \usepackage{amsmath} \begin{document} Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... Du text qui se répète... \section{Une section} %@patb .pt formatage 2 %@ptab .t /fichiers/programation/perl/dat.dat \include{dat} \end{document} </code> Il reste alors à faire une compilation LaTeX ! ===== Options ===== De manière générale, pour définir des //paramètres// on utilise la ligne suivante dans le document LaTeX : <code> .pt <les paramètres> </code> La définition des paramètres n'est pas valable pour le document entier, elle n'est valable que //jusqu'à// une prochaine définition de paramètres. Par exemple, on peut très bien faire : <code> //code latex// .pt math ( ) .t /mon/chemin/dat1.dat //code latex// .pt tableau .t /mon/chemin/dat2.dat //code latex// </code> ==== Modes ==== Il existe deux modes, tableau classique avec l'environnement ''tabular'', et tableau //mathématiques// avec l'environnement ''array''. Le mode classique est le mode par défaut, il n'y a pas d'option particulière... **Remarque** Pour revenir en mode tableau, on utilise la commande : <code> .pt tableau </code> === Mode math === Pour se mettre en mode math : <code> //code latex// .pt math ( ) .t /mon/chemin/val.txt //code latex// </code> == Parenthèses -- Crochets == On règle, en plus de passé en mode math, les délimiteurs. Ceci se fait après l'indication ''math'' en rentrant le délimiteur gauche et le droit séparés par **un espace**. Ci-dessus, on a choisi les parenthèses, on obtiendra donc une matrice avec parenthèse. ==== Formatage ==== Cette option permet de formater l'affichage des décimales des valeurs dans le tableau. Par exemple : <code> //code latex// .pt formatage 3 .pt math [ ] .t /mon/chemin/val.txt //code latex// </code> permet d'afficher les nombres avec trois chiffres après la virgule. ===== code ===== Téléchargement : {{:mc:ptab.zip|}} <code perl> #!/usr/bin/perl # ----------------------------------------------------------------------------- # PTAB 05/11/08 # Maxime Chupin # ----------------------------------------------------------------------------- # version 1.0 use Cwd; # récupération du chemin d'exécution ------------------------------------------ my $chemin = cwd(); #------------------------------------------------------------------------------ # nom du fichier de travail --------------------------------------------------- ($nomw =$ARGV[0]) =~ s/.tex/.w/; #------------------------------------------------------------------------------ # paramètres par défaut ------------------------------------------------------- $type="tabular"; $deliml=""; $delimr=""; $inter="|"; $separvert="\\hline"; $formatdec = 2; #------------------------------------------------------------------------------ # lecture du fichier de travail .w -------------------------------------------- open(WORK,,"$chemin/$ARGV[0]") or die "Impossible d'ouvrir $ARGV[0]"; #on ouvre le fichier tex original contenant les commandes ptab open(WTEX, ">$chemin/$nomw"); # ouverture en ecriture d'un fichier .w (de travail) while (<WORK>){ #pour chaque ligne du document original @ligne = split; # on séparer chaque mots de chaque ligne if($ligne[0] eq ".pt"){ # on lit le paramétrage if($ligne[1] eq "math"){ # si math $type="array"; $deliml="\\[\\left$ligne[2]"; $delimr="\\right$ligne[3]\\]"; $inter=""; $separvert=""; } if($ligne[1] eq "tableau"){ # si tableau $type="tabular"; $deliml=""; $delimr=""; $inter="|"; $separvert="\\hline"; } if($ligne[1] eq "formatage"){ $formatdec = $ligne[2]; } print(WTEX "%\@patb $_"); # on laisse une trace de la commande de paramerage dans le document final } elsif($ligne[0] eq ".t"){ # la command ptab .t $toutligne = $_; @chemindat = split('/', $ligne[1]); $fichierdat = $chemindat[-1]; #on recupere le nom complet du fichier dat, txt... @tabpref = split('\.', $chemindat[-1]); $prefixe = $tabpref[0]; #on recupere le prefixe open(DAT, "$ligne[1]") or die "Impossible d'ouvrir $ligne[1]"; #on ouvre ce fichier open(DATTEX, ">$chemin/$prefixe\.tex"); # on cree un fichier $prefixe.tex dans lequel il y aura le tableau en latex $taille = split ' ', <DAT>; #on recupere le nombre de colonne close(DAT); open(DAT, "$ligne[1]"); for($i=1;$i<=$taille;$i++){$c.="c$inter";} #on concatene des c autant que de colonne print(DATTEX "$deliml\\begin\{$type\}\{$inter$c\}\n$separvert\n"); # on commence notre tableau (ca depend des options) while(<DAT>){ @lignedat= split; $tail= @lignedat; for($i=0;$i<$tail;$i++){ $format = sprintf("%.${formatdec}f",$lignedat[$i]); # on format les nombres apres la virgule print(DATTEX "$format"); if($i!=($tail-1)){ print(DATTEX '&'); } } print(DATTEX "\\\\$separvert\n"); } print(DATTEX "\\end\{$type\}$delimr\n"); #on ferme le tableau close(DAT); print(WTEX "%\@ptab $toutligne \n"); # on commente la ligne ou se trouve l'instruction .t print(WTEX "\\include{$prefixe}\n"); # et on inclut le fichier creer tex } else{ print(WTEX $_); # sinon on recopie normalement le fichier dans lui meme... } } close(WTEX); close(WORK); rename($nomw, "$ARGV[0]"); </code>

mc/ptab.txt · Dernière modification: 2010/06/29 06:15 par newacct