====== Autour de la traduction d'Axiom ====== Ressources autour de la traduction du livre //bookvol1// (et de ses successeurs) d'[[Axiom]]. ===== Bidouilles ===== Après avoir récupéré le code source d'[[Axiom]] (selon ce qui est derrière ce lien). ==== Une façon ==== Pour essayer d'éviter de faire la compilation complète d'[[Axiom]]. (Bof, bof.) $ cd tpd $ ./configure $ export AXIOM=`pwd`/mnt/linux $ make start Le source de //bookvol1.pamphlet// que j'utilise est dans //tpd/src/doc//. $ cd /src/doc Pour avoir accès à la commande //document// (elle ne doit pas être faite pour cela) : $ export PATH=$AXIOM/bin:$PATH Bizarre : si je crée le document par : $ document bookvol1 il ne trouve pas le fichier //axiom.sty//. Pour y accéder : $ ln -s ../../mnt/linux/bin/tex/axiom.sty . NB : cet axiom.sty est différent du axiom.sty qui est obtenu par $ noweave axiom.sty.pamphlet > axiom.sty Conclusion : il y a encore des subtilités du système de compilation d'[[Axiom]] qui m'échappent... ==== Une autre façon ==== Dans le répertoire //tpd/src/doc//. $ notangle -t8 bookvol1.pamphlet > Makefile.bookvol1 $ make -f Makefile.bookvol1 Mais cela ne marche pas car les chemins codés en dur de noweave sont faux... ====== Utiliser po4a ====== Indépendamment de ce qui précède. Essais d'utilisation de [[doc:traduction:po4a]] sur //bookvol1.pamphlet//. ===== Extraction du pot ===== $ po4a-gettextize -f latex -m bookvol1.pamphlet -p bookvol1.pot ===== Renommage du .pot en .po ===== $ cp bookvol1.pot bookvol1.fr.po Puis traduction (à faire) du //bookvol1.fr.po// par gtranslator, kbabel, poedit ou tout autre éditeur de //.po//. ===== Reconstruction du document en français après traduction ===== $ po4a-translate -k 0 -f latex -m bookvol1.pamphlet -p bookvol1.fr.po -l bookvol1.fr.pamphlet NB : -k 0 pour forcer même quand on a moins de 80 % de traduction faite. ===== Problèmes ===== ==== Listes ==== po4a a un problème avec certaines listes de //bookvol1.pamphlet//. L'[[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=354955|anomalie]] est corrigée dans le cvs de [[http://po4a.alioth.debian.org/|po4a]]. Tim a appliqué un correctif de moi sur //bookvol1.pamphlet// permettant de le contourner en attendant. (Pour la prochaine mouture d'[[Axiom]]). ==== Noweb ==== Les blocs noweb ne sont ni compris ni gérés par po4a. La mise en forme en est perdue lors de la reconstruction du texte. Les blocs noweb ne vont pas disparaître (dixit Tim), ils vont même se multiplier dans les volumes suivants. Nicolas François a fait des progrès là-dessus. Voir [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=355769|ici]]. ==== Exemple de .pot ==== Il y en a un [[http://lehobey-rennes.dyndns.org/axiom/bookvol1.pot|ici]]. Il correspond à une version avec mon correctif pour les listes mais **sans** la partie noweb problématique. **Ne pas utiliser comme point de départ d'une traduction, c'est juste pour exemple**. ==== Exemple de .pamphlet problématique ==== [[http://lehobey-rennes.dyndns.org/axiom/noweb.pamphlet|ici]]. Le lire pour comprendre. ===== Pistes de solutions ===== Évoquée avec Nicolas François, l'un des développeurs de po4a et avec David, qui a un petit intéret pour la programmation littéraire (et un logiciel utilisant aussi noweb). Voir [[doc:traduction:po4a]]. ==== 1ère piste : adapter po4a à noweb (travailler directement sur le .pamphlet) ==== Il faudrait par exemple traiter les %%<<%% (début d'un bloc noweb) et @ (fin d'un bloc noweb) comme les début et fin d'un environnement verbatim (que po4a sait traiter). David propose d'« augmenter » les %%<<%% et @ en ajoutant par exemple \begin{noweb} \end{noweb} avec des expressions rationnelles en sed/Perl/Python. Il y a aussi les filtres de noweb (voir http://www.eecs.harvard.edu/nr/noweb/guide.ps) (signalé par David). J'ai regardé, mais je ne vois pas bien le rapport ni, pour l'instant, comment nous pourrions l'utiliser. Selon Nicolas François : Pour 1/, je vois plusieurs solutions: a) Faire un nouveau module, qui hériterait du module LaTeX, pour le support de noweb. Je pense qu'il suffit de surcharger la fonction parse. b) permettre de spécifier des couple d'expression rationnelle qui ouvre ou ferme des environnement verbatim (pour po4a, pas nécessairement pour LaTeX). c) changer les << et @ en \begin{noweb} et \end[noweb} Il faudra ensuite permettre des environnements verbatim qui n'ont pas le nom "verbatim". ==== 2e piste : travailler sur le résultat de noweave (un .tex) ==== Au lieu de %%<<%% et @, il faudrait cette fois-ci utiliser les \\nwfilename{noweb.pamphlet}\\nwbegincode{1} ... \\nwendcode{}\\nwbegindocs{2}\\nwdocspar produits par noweave. Toujours selon Nicolas François : 2/, po4a ne permet pas pour l'instant d'indiquer qu'une commande débute un environnement verbatim et qu'une autre commande le ferme. Une solution d) consiterait donc a enlever ce manque. J'ai dans ma TODO liste c) et d) J'ai peur que b) ne soit pas très LaTeX. Mais de toute façon, si je fais d), ça doit pas être très différent.