Valid XHTML     Valid CSS2    

Production Automatisée de

Graphiques, Statistiques et Documents

                     gilles.hunault "at" univ-angers.fr

 

-- partie 3 sur 5 : Documents via RTF, CSV et LaTeX

 

Table des matières cliquable

  1. Petites manipulations avec GAWK

  2. Des exemples pas si simples que cela en LaTeX

  3. Un tracé de courbe en gnuplot+LaTeX ou R via PHP

  4. Un graphe multi-états en LaTeX

  5. Affichettes triangulaires de présentation en LaTeX pour le Web

  6. Production de documents pour une liste d'émargement

  7. Liste de fonctions pour documentation

 

Il est possible d'afficher toutes les solutions via ?solutions=1 et de toutes les masquer avec ?solutions=0.

 

1. Petites manipulations avec GAWK

Il arrive souvent qu'on doive réaliser des "petites manipulations de texte" comme par exemple inverser le nom et le prénom dans le fichier suivant nommé prenomNom1.txt :


     Marie DURAND
     Jane SMITH
     Jean DUPONT
     Pierre DUPUIS
     

Réaliser cette inversion en moins d'une minute avec GAWK.

Etendre à des informations noms et prénoms séparées par des points-virgules, comme dans le fichier prenomNom2.txt :


     Marie  ; DURAND
     Jane K. ; SMITH
     Jean Simon Daniel ; DUPONT
     Pierre Henri ; DUPUIS
     

Au passage, comment produire une liste triée par nom quand on utilise le format "prénom suivi de nom" ?

Solution :  

 

2. Des exemples pas si simples que cela en LaTeX

Essayer de reproduire séparément en LaTeX les pages 3, 28, 61 et 64 du document rapm dont nous donnons des copies-écran ci-dessous (images cliquables).

non su non su
Page 3 Page 28
non su non su
Page 61 Page 64

Afin d'éviter la resaisie du contenu de ces pages, les fichiers page3.txt, page28.txt, page61.txt et page64.txt en contiennent le texte brut. On viendra recoder la page 3 en ASCII 7 bits donc sans aucun caractère accentué explicite, la page 28 en UTF-8 et les pages 61 et 64 en ISO8859-15 afin de comprendre comment on prévient LaTeX de ces encodages.

Pour la page 28, le tracé de la fonction est dans le fichier postscript encapsulé rapm03a.eps.

Après avoir consulté les quatre fichiers de l'archive rapm_pagsd.zip expliquer comment fonctionne la numérotation et l'affichage des exercices et de leurs solutions. Au passage, on pourra essayer de deviner comment l'image de la page 28 a été générée.

Solution :  

 

3. Un tracé de courbe en gnuplot+LaTeX ou R via PHP

Ecrire une page Web en PHP qui demande la définition d'une fonction, la plage de variations de x puis qui produit un PDF de la courbe de la fonction via gnuplot et LaTeX et un PNG de la courbe de la fonction via R.

Y a-t-il un intérêt à générer une figure LaTeX via gnuplot plutôt qu'un fichier eps ?

Solution :  

 

4. Un graphe multi-états en LaTeX

Ecrire un document LaTeX qui produit la page suivante :

               non su

On utilisera PSTricks. On notera qu'il s'agit de la page numéro 9. Le PDF associé est nommé page9.pdf.

Solution :  

 

5. Affichettes triangulaires de présentation en LaTeX pour le Web

Une affichette triangulaire de présentation est une feuille de papier A4 imprimée des deux cotés avec le nom et le prénom d'une personne afin que tout le monde puisse voir son nom, que ce soit les personnes en face ou les personnes à coté. Images de démonstration :

          non su          non su

Ecrire un document LaTeX pour réaliser une telle affichette. On pourra utiliser le fichier affichette.pdf comme modèle de document à produire. Ecrire ensuite un programme PHP en CLI qui demande un nom, un prénom et qui produit ensuite l'affichette correspondante au format PDF.

Ecrire enfin une page Web qui utilise un formulaire pour saisir des noms et des prénoms (séparés par des points-virgules), à raison d'une personne par ligne et qui produit un fichier PDF avec toutes les affichettes. On pourra réaliser une version "classique" avant de passer à une solution AJAX.

Solution :  

 

6. Production de documents pour une liste d'émargement

On dispose d'une liste d'émargement comme le fichier emarge.txt dont le format est très simple : chaque ligne non vide qui n'est pas un commentaire (repéré par le symbole dièse) comporte une information prénom puis une information nom. Un point virgule sépare ces deux informations qui sont parfois composées de plusieurs mots.

Question 6.1 : production d'un document CSV pour Microsoft Excel via PHP

Ecrire un programme PHP en CLI qui admet comme seul paramètre le nom d'un fichier et qui produit une liste d'émargement pour Microsoft Excel au format nom (en majuscules), prénom et signature.

Question 6.2 : production d'un document RTF pour Microsoft Word via PHP

Ecrire un programme PHP en CLI qui admet comme seul paramètre le nom d'un fichier et qui produit une "belle" liste d'émargement pour Microsoft Word au format numéro, nom (en majuscules), prénom et signature.

Pour plus d'informations sur RTF on pourra consulter l'exercice 1 de nos cours sur l'archivage.

Question 6.3 : production d'un document LaTeX via PERL

Ecrire un programme perl en CLI qui admet comme seul paramètre le nom d'un fichier et qui produit une "belle" liste d'émargement en PDF via LaTeX.

Question 6.4 : production d'une liste d'émargement via une page Web

Ecrire une page Web en PHP qui demande via un formulaire le nom d'un fichier et une valeur d'option (W, E ou L) et pour produire une "belle" liste d'émargement respectivement pour Microsoft Word, Microsoft Excel ou PDF (via LaTeX) suivant la valeur de l'option.

On organisera ce programme à l'aide de sous-programmes et de fichiers-inclus afin d'en faire ensuite rapidement une page Web avec un formulaire où le nom du fichier est remplacé par la saisie des données dans un <textarea> ou par la sélection du fichier dans l'explorateur sous-jacent. On réfléchira aussi à ce qu'il faut ajouter pour fournir une "vraie" liste d'émargement utilisable.

Solution :  

 

7. Liste de fonctions pour documentation

Question 7.1

On dispose d'un code source, disons strfun.php et on veut la liste des fonctions du fichier, par ordre alphabétique, avec le numéro de ligne du début de la fonction. Quelle solution rapide en ligne de commandes Unix peut-on utiliser ?

Est-ce que les fonctions vectorielles de R fournissent une solution concise à ce problème ?

Question 7.2

On veut maintenant un affichage «propre», sans le mot function et avec un affichage formaté des numéros de ligne. De plus on voudrait disposer de toutes les fonctions en cas d'utilisation d'un fichier maitre avec des include ou des require. On utilisera PERL.

Rajouter des sorties Word (RTF), PDF (LaTeX) et XHTML, le choix du format se faisant à l'aide d'un paramètre -o ou --output.

Question 7.3

Ce serait bien de disposer aussi d'exemples pour chaque fonction et de passer par un affichage Web pour voir les fonctions à afficher. On implémentera comme d'habitude cela dans une page Web valide pour XHTML strict.

Question 7.4

Compléter le fichier strfun.php pour que la documentation soit au format Doxygen. Quels sont les avantages et les inconvénients de Doxygen par rapport à ce que nous avons développé ?

Solution :  

 

Code-source de cette page ;  fichiers inclus : pagsd_inc.php et pagsd.js.

 

 

retour gH    Retour à la page principale de   (gH)