From 682045bd79fda029fa26cdbf6e92a1440e236816 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 27 Mar 2013 16:56:32 +0100 Subject: [PATCH] Correction d'un bug de plasTeX --- utils/patchedbabel.py | 51 +++++++++++++++++++++++++++++++++++++++++++ utils/plastex.py | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 utils/patchedbabel.py diff --git a/utils/patchedbabel.py b/utils/patchedbabel.py new file mode 100644 index 00000000..abfe920f --- /dev/null +++ b/utils/patchedbabel.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Patch pour le paquet Babel de PlasTeX + +Un bug dans PlasTeX intervient lorsqu'on essaye d'analyser une commande LaTeX +\selectlanguage{}, que nouv voulons utiliser ici. Un patch a été proposé aux +développeurs de plasTeX, et accepté. Mais il faut que cette correction arrive +en production. En attendant, nous utilisons cette version modifiée. + +Dés que la correction sera entrée en production, il faudra supprimer ce +fichier, et remplater l'occurence à "patchedbabel" par "babel" dans le fichier +"plastex.py". +La correction à suveiller est la révision 1.3 du fichier babel.py : +http://plastex.cvs.sourceforge.net/viewvc/plastex/plastex/plasTeX/Packages/babel.py?view=log + +# Comment vérifier si on peut supprimer ce fichier ? + +1) Remplacer l'occurence à patchedbabel par babel dans le fichier plastex.py. + +2) Générer un fichier .tex à partir d'un fichier .sb, ce dernier faisant +intervenir des chansons dans lesquelles \selectlanguage est utilisé (par +exemple, "make -B matteo.tex" ou "make -B naheulbeuk.tex" pour des fichiers pas +trop gros. + +3) Si l'erreur suivante apparaît, c'est qu'il faut encore attendre. + +> Traceback (most recent call last): +> [...] +> File "/usr/lib/pymodules/python2.7/plasTeX/Packages/babel.py", line 18, in invoke +> context.loadLanguage(self.attributes['lang'], self.ownerDocument) +> NameError: global name 'context' is not defined + +3 bis) Si elle n'apparait pas : youpi ! Supprimez ce fichier ! + +# Contact et commentaires + +Mercredi 27 mars 2013 +Louis + +""" + +from plasTeX import Command + +class selectlanguage(Command): + args = 'lang:str' + + def invoke(self, tex): + res = Command.invoke(self, tex) + self.ownerDocument.context.loadLanguage(self.attributes['lang'], self.ownerDocument) + return res diff --git a/utils/plastex.py b/utils/plastex.py index 426b4c76..b316111d 100755 --- a/utils/plastex.py +++ b/utils/plastex.py @@ -15,8 +15,8 @@ class SongParser: tex = TeX() tex.disableLogging() tex.ownerDocument.context.loadBaseMacros() - tex.ownerDocument.context.loadPackage(tex, "babel") sys.path.append(os.path.dirname(__file__)) + tex.ownerDocument.context.loadPackage(tex, "patchedbabel") tex.ownerDocument.context.loadPackage(tex, "songs") sys.path.pop() return tex