Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBartholomieu Legras Modifié depuis plus de 10 années
1
BibTeX++ Suppression de la pile dans les langages à pile
Emmanuel DONIN DE ROSIÈRE Encadrant : Ronan KERYELL
2
Plan Les bibliographies sous LaTeX Présentation de BibTeX++
Objectifs du stage BiSTrO BibTeX++ Résultats Conclusion / Perspectives
3
Bibliographie Indispensable dans les documents scientifiques car :
Permet d'identifier clairement le document Donne de la crédibilité au document Sous LaTeX, un seul logiciel est utilisé : BibTeX
4
BibTeX (1) Facile à utiliser :
Choisir un style de bibliographie (il en existe énormement => 150 dans MikTeX ) Créer la base de références bibliograpiques @BOOK{latex:GooMittSam, Author = {Michel Goossens and Frank Mittelbach and Alexander Samarin}, Publisher = {Addison-Weslay}, Title = {The \LaTeX{} Companion}, Year = {1994} } Rajouter quelques lignes dans le document LaTeX \bibliographystyle{monstyle} \bibliography{mabase}
5
BibTeX (2) Néanmoins : Pas d'évolution depuis 1990
Le langage de style n'est pas aisé à apprendre (et comprendre) : FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } Pas de gestion des types d'encodage moderne (unicode ...) → Pas de bibliographie en japonais, arabe ...
6
BibTeX++ Cherche à corriger ces défauts :
BibTeX++ est portable (écrit en JAVA) Accepte l'UNICODE (natif en JAVA) Modifiable facilement grâce à un système de plugins Compatible avec BibTeX Les styles sont écrits en JAVA pour qu'ils soient plus simples à écrire et pour avoir plus de fonctionnalités : Internet Locale (gestion des langues) ...
7
Objectifs du stage Transformer les anciens styles (en bst) en JAVA :
Pour garantir la compatibilité avec BibTeX Pour améliorer la lisibilité des styles (pour les programmeurs) Reprendre les différents travaux et ajouter quelques fonctionnalités : Sécurité Procédure d'installation ...
8
BiSTrO BibTeX Style Translator and Optimizer
Transforme les anciens styles BibTeX (en bst) en style BibTeX++ (en JAVA) Permet d'optimiser le code JAVA en sortie => Plus facile de modifier un style Convertit donc un code écrit dans un langage à pile (bst) en code classique (JAVA) => Il faut donc supprimer la pile
9
Fonctionnement Architecture :
AST : Abstract Syntax Tree (arbre syntaxique) Chaque noeud représente un opérateur, les feuilles sont les opérandes
10
Tree Translator (1) Transforme l'AST bst en AST JAVA 5 étapes :
Chercher des informations sur les fonctions (nom, possibilité de retirer la pile, nombre d'arguments, nombre de paramètres de sortie) Retrouver le type des arguments de la fonction (string, entier ou Cell) Trouver le nombre de variables à utiliser et leur type Transformer les fonctions où l'on peut supprimer la pile Transformer les autres fonctions
11
Tree Translator (2) Transforme la pile en variables
Retrouve le typage des éléments : Grâce aux types des éléments retournés par les fonctions internes de BibTeX Grâce aux types des arguments des fonctions internes (pour les arguments)
12
Tree Translator (3) Néanmoins le code en sortie n'est pas clair :
public String format_lastchecked( ) { String s0 , s1; int i0; s0 = lastchecked; i0 = BuiltIn.empty( s0 ); if( i0 > 0 ) { s0 = ""; } else { inbrackets( ); s0 = "cited "; s1 = lastchecked; s0 = s0 + s1; } return( s0 ); } FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ }
13
Optimisations Permettent d'obtenir un code plus clair
Sont facultatives (option -O) Les plus importantes sont : La propagation de constantes et de copies L'élimination de code mort L'optimization des structures de contrôles (conditions et blocs vides) ...
14
BibTeX++ Interfaçage avec BiSTrO
Gestion de la sécurité (SecurityManager de JAVA) Réécriture des Parsers/Lexers sous SableCC Procédures d'installation (rpm, exe, ant ...) Documentation ...
15
Résultats Fonctionnel : les bibliographies des rapports ont été faites avec BibTeX++ Code optimisé clair : En moyenne 3.2 sec pour créer un style BibTeX++ (4.4 sec si optimisé) et 0.8 sec pour créer la bibliographie (contre 0.04 sec pour BibTeX) Public void new_sentence( ) { if( output_state != after_block ) { if( output_state != before_all ) { output_state = after_sentence; } } }
16
Conclusion / Perspectives
BibTeX++ : Fonctionnel Compatible avec BibTeX Plus de fonctionnalités Disponible sur picolibre et Néanmoins, reste à : Gérer les plugins Développer des styles BibTeX++ et plugins pour montrer toutes ses capacités
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.