Outils d'utilisateurs

Outils du Site


mc:ptab

====== Différences ====== Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

mc:ptab [2008/12/18 18:36]
maxime
mc:ptab [2010/06/29 06:15] (Version actuelle)
newacct
Ligne 1: Ligne 1:
 ====== PTab ====== ====== PTab ======
  
-Ce petit script perl permet de générer le code LaTeX d'un tableau de valeur d'un fichier dat, txt... +Ce petit script perl permet de générer le code LaTeX d'un tableau de valeurs d'un fichier dat, txt... 
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 10: Ligne 10:
  
 <code> <code>
-.ptab /mon/chemin/val.tet+./mon/chemin/val.txt
 </code> </code>
  
Ligne 18: Ligne 18:
 ptab monfichier.tex ptab monfichier.tex
 </code> </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.1229621796.txt.gz · Dernière modification: 2008/12/18 18:36 par maxime