#! /usr/bin/perl -w # La redistribution du code source, modifié ou non, est soumise aux # conditions suivantes : # Le copyright ci-dessus, la présente liste de conditions et # l'avertissement qui la suit doivent figurer dans le code source. # CE PROGRAMME EST FOURNI « TEL QUEL » ET IL N'EST DONNÉ AUCUNE # GARANTIE, IMPLICITE OU EXPLICITE, QUANT À SON UTILISATION # COMMERCIALE, PROFESSIONNELLE OU AUTRE. L'AUTEUR NE PEUT EN AUCUN CAS # ÊTRE TENU POUR RESPONSABLE DE QUELQUE DOMMAGE OU PRÉJUDICE DIRECT, # INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES FINANCIÈRES # DUES AU MANQUE À GAGNER, À L'INTERRUPTION D'ACTIVITÉS, OU LA PERTE # D'INFORMATIONS ET AUTRES) DÉCOULANT DE L'UTILISATION DE PROGRAMME OU # DE L'IMPOSSIBILITÉ D'UTILISER CELUI-CI, ET DONT L'UTILISATEUR # ACCEPTE L'ENTIÈRE RESPONSABILITÉ. use strict; use XML::Parser; ### TODO : ### Régler le pb des espaces français pour :: ### Régler le pb des paragraphes. my $in_verbatim = 0; my $p = new XML::Parser(Style=>'Subs', Pkg=>'SubHandlers', ErrorContext=>2); $p->setHandlers(Char => \&char); $p->parsefile(shift); exit 0; ### Handler pour tout ce qui n'est pas une balise. sub char { my ($p, $donnees) = @_; if ($in_verbatim == 0){ ### traitement des caractères $donnees =~ s/_/\\_/; ### spéciaux de LaTeX $donnees =~ s/\{/\\{/; $donnees =~ s/\}/\\}/; $donnees =~ s/\$/\\\$/; $donnees =~ s/\%/\\\%/; $donnees =~ s/\#/\\\#/; $donnees =~ s/«\s+/\\og\{\}/; $donnees =~ s/\s+»/\\fg\{\}/; $donnees =~ s/::/{\\noextrasfrenchb ::}/; ### ad hoc (et incomplet):( # $donnees =~ s/(.*[\.\!\?:])\s*$/$1\\\\/; } print $donnees; } ### Handlers pour les balises. package SubHandlers; my (@types_listes, $section, $ssection); sub article { my ($p, $balise, %attribs) = @_; print <