Initiation à Python et à Latex

Slides:



Advertisements
Présentations similaires
Présentation du prototype :
Advertisements

Portée des variables VBA & Excel
DTD Sylvain Salvati
Programme de seconde 2009 Géométrie
Story-board version 1.1 Statut : à valider Rédacteur : Nicole Djuissi
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Présentation de l’application « Livret personnel de compétences »
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
Génération interactive dimages projectives : Application à la Radiothérapie Pierre BLUNIER Du 01/12/2002 au 28/03/2003 Centre Léon Bérard.
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
Lexique des manœuvres de base pour utiliser à PowerPoint
Autorisations Utilisation eCATT
Conception d’une application de gestion de fiches études
Travaux pratiques sur Nooj
Gestion de la communication par établissement sur le site ville
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Construire une base de données bibliographiques Elaborer un site web
Formation Centra - GDE.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Aide-mémoire – FORMULAIRE Web DA/DT
L’utilisation des bases de données
KAKI - Gestion budgétaire et comptable de la paye
Introduction à DOM Maroua Bouzid
18/05/ Utiliser le cahier de texte en ligne avec lapplication SPIP Adresse du site du lycée :
MICROSOFT POWER POINT Fais « Enter » Par Danièle Lippé.
1 Initiation aux bases de données et à la programmation événementielle Cours N°9 : Gestion de la cohérence avec des sous-formulaires. Support de cours.
Publispostage Menu Outils / Lettres et publipostage
L’utilisation des bases de données
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie.
SIDENA BTS IRIS Session 2008 CARME Arnaud.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
SEANCE 10 Python Entrée et sortie de fichiers Lycée Louis Vincent Lundi 20 janvier
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Word Gabarit les étapes à suivre? C) Synthèse /rapport personnel (disponible sur votre site dans la site section travaux) et la version graphe finale.
Projet d’Ingénierie du Logiciel - Prise en main du robot humanoïde NAO
COURS DE PROGRAMMATION ORIENTEE OBJET :
Excel (Partie 2).
Projet de Master première année 2007 / 2008
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Création d’un Formulaire 1- Pour avoir accès à la gestion des formulaires, il faut accéder au module « Mon Site » à partir du menu principal 2 – Après.
Francois Gautrais | Charles Jacob | Nicolas Levêque | Léo Chaudet 11 Mai

Python Fonction et procédure
Veolia Consommateurs Contenu
1 Modèle pédagogique d’un système d’apprentissage (SA)
Le langage XHTML 420-S4W-GG Programmation Web Client
Biologie – Biochimie - Chimie
Création et présentation d’un tableau avec Word 2007
GROUPE BTS IRIS 2 Informatique et Réseaux pour l’industrie et les Services techniques E-6 PROJET INFORMATIQUE REVUE N°2      INTERROGATION DE LA BASE DE.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Interface de commande client
Outil de gestion des cartes grises
Centre d’échange d’informations sur la Convention sur la Diversité Biologique Bienvenue dans le cours sur l’ajout d’une page web sur un site web développé.
Projet de stage d’année IIR4 sous le thème:
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
Création d’une application complète
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Acquisition d’information sur internet
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Programmation Web : DOM en PHP Jérôme CUTRONA 11:06:45 Programmation Web
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Dreamweaver Séance 1.
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
Transcription de la présentation:

Initiation à Python et à Latex Lambert-Veller Sylvain et Quirico Tommy

Sommaire Présentation Cahier des charges Démarches Réalisation logicielle Bilan Conclusion

Présentation Langages utilisés dans ce projet: XML : - ressemble à l’HTML (balises) - nombres de balises illimités - validation du fichier par une DTD - base de données au format texte Python : - langage de script - syntaxe simple - orienté objet - utilisé pour le traitement de fichiers textes Latex : - système logiciel de composition de documents - utilisé pour formater des textes

Cahier des charges Le but du projet : - Génération d’un courrier au format PDF - Utilisation d’un fichier XML pour stocker les données - Utilisation de latex pour générer la lettre

Cahier des charges Le contenu du projet : - Ecrire un fichier XML avec sa DTD qui correspond - Ecrire un script python qui va générer un courrier ou modifier le document XML

Démarches Les différentes étapes de ce projet ont été : Mise en place d’un diagramme de classes Création d’un document XML et de sa DTD Création d’un script python pour travailler sur le document XML Introduire du langage latex dans le script python pour générer le courrier

Réalisation logicielle Mise en place d’un diagramme de classes

Réalisation logicielle Création d’un document XML et de sa DTD Le fichier XML est découpé en trois parties : Eléments « personnes » Eléments « lettres » Eléments « contenus » Utilisation d’id et d’idref pour bien séparer les parties Chaque élément « lettre » a une référence sur un contenu et 1 ou 2 personnes.

Création d’un document XML et de sa DTD Exemple de la DTD : <!ELEMENT projet (personnes,lettres,contenus)> <!ATTLIST personne numpersonne ID #REQUIRED> <!ELEMENT contenu (date,objet,opening,corps,closing)> <!ATTLIST lettre numerolettre ID #REQUIRED numpersexpe IDREF #REQUIRED numpersdest IDREF #REQUIRED > Exemple du fichier XML : <contenu numcontenu="11"> <lettre numerocontenu="11" numerolettre="105" numpersdest="3" numpersexpe=« 4 »/>

Réalisation logicielle Création d’un script python Dans ce script on va écrire comment : - Choisir une lettre, un contenu ou une personne - Créer une nouvelle personne - Créer un nouveau contenu - Créer un nouveau courrier - Afficher un courrier - Générer un courrier - Modifier un courrier, un contenu ou une personne - Sauvegarder les modifications

Réalisation logicielle Choix de la librairie utilisée : Importation de l’api DOM : from xml.dom.minidom import parse SAX (Simple API for XML) DOM ( Document Object Model ) Avantages Rapide Peu coûteux en mémoire Peut gérer de GROS documents XML Représentation en arbre API de assez haut niveau Inconvénients Difficilement lisible Les gestionnaires ont tendances à devenir compliqués Pas « pythonique » du tout Gourmand en mémoire Lent sur des gros documents Choix : DOM Raisons : Sax non pythonique et DOM très simple pour python

Création d’un script python Choisir une lettre, un contenu ou une personne On utilise cet algorithme pour les choix : fonction Nomfonction() : Tapez le numéro a choisir num = saisie au clavier Pour chaque élément : Si num = à l’attribut « numero » alors On retourne num sinon on retourne 0 fin si fin pour - Vérification des valeurs saisies par l’utilisateur

Création d’un script python Créer une nouvelle personne Le principe est : récupération du dernier élément « personne » pour incrémenter l’id Création d’un élément : createElement("personne"). On insère un élément avec la fonction insertBefore(new_element_personne,premierePersonne.firstChild) Pour les éléments fils de l’élément « personne » : Création de l’élément ajout de l’élément: premierePersonne.appendChild(new_element_nom) Ajout de texte dans l’élément correspondant : new_element_nom.appendChild(fichierXML.createTextNode(nomp)) Affichage de l’id pour que l’utilisateur sache l’id de la personne - Obligation d’avoir au moins une personne dans le fichier XML - Possibilité d’avoir des données facultatives

Création d’un script python Créer un nouveau courrier Les différentes étapes: Choix d’un expéditeur Choix d’un destinataire Choix d’un contenu Choix d’un type de courrier

Création d’un script python Afficher un courrier Pour chaque élément on va chercher l’élément qui correspond et on l’affiche Exemple : for node2 in fichierXML.getElementsByTagName("contenu"): if(valeurcontenu==node2.getAttribute("numcontenu")): tabpersonne =node2.getElementsByTagName("date") premier = tabpersonne[0] date = premier.childNodes[0].nodeValue print "date:",date

Création d’un script python Générer un courrier Les étapes sont : - Choix d’une lettre a générer - Écriture du fichier latex avec les données voulues

Création d’un script python Écriture du fichier latex avec les données voulues - Aller chercher les données nécessaires dans le fichier XML - Création d’un fichier .ins - Création d’un fichier .tex - Génération en format PDF

Création d’un script python Aller chercher les données nécessaires dans le fichier XML Les étapes sont : Aller chercher la lettre à générer Prendre les id qui se réfère au contenu et personne Aller chercher les données de l’élément grâce à l’id if (numeroLettre==node.getAttribute("numerolettre")): valeurpersonnexp = node.getAttribute("numpersexpe") for node1 in fichierXML.getElementsByTagName("personne"): if (valeurpersonnexp==node1.getAttribute("numpersonne")): tabpersonne = node1.getElementsByTagName("nom") premier = tabpersonne[0] nomp = premier.childNodes[0]

Création d’un script python Création d’un fichier .ins Le fichier .ins contient les données en rapport avec l’expéditeur L’intégration dans le .tex se fait en faisant \institut Utilisation de commande présente dans la classe lettre (\adress , \lieu ) Ecriture dans le fichier grâce a la fonction write() Exemple : filout1.write('\\telephone{') filout1.write(telfixep.nodeValue) Raisons de ce fichier : répartition des informations

Création d’un script python Création d’un fichier .tex Ce fichier va permettre la génération du courrier en format PDF Les étapes sont : Inclusion des packages et de la classe lettre Inclusion du fichier .ins créé précédemment Insertion des données récupérées dans le fichier XML

Création d’un script python Création d’un fichier .tex Extrait du script python filout.write('\\begin{document} \n') filout.write('\\begin{letter}{%\n') filout.write('M \\textsc{') filout.write(nomp2.nodeValue) filout.write(' ') filout.write(prenomp2.nodeValue) filout.write('}') filout.write('\\') filout.write(numero2.nodeValue) filout.write(',') filout.write(rue2.nodeValue) filout.write(' \opening{Cher ') filout.write(opening.nodeValue) filout.write(' } \n') filout.write(corps.nodeValue) filout.write(' \n') filout.write(' \end{letter} \n') filout.write(' \end{document} \n') Extrait du fichier latex final \begin{document} \begin{letter}{% M \textsc{Quirico Tommy}\\7,rue Pierre Laplace \opening{Cher Madame, Monsieur } Corps du courrier \end{letter} \end{document}

Création d’un script python Modifier un courrier, un contenu ou une personne Les différentes étapes : Demande à l’utilisateur si il veut modifier Si oui, demande de la nouvelle valeur Modification dans le fichier XML premier.childNodes[0].nodeValue= newValeur

Bilan Améliorations possibles : Réalisation de courrier au format PDF Enregistrement des modifications Améliorations possibles : gérer les accents Insertion de logos pouvoir gérer la génération de CV

Conclusion Application opérationnelle Ce que nous a apporté ce projet : Autonomie Appliquer les connaissances acquises en cours S’initier à d’autres langages tels que python et Latex