Automatiser des modifications

Le
Frédéric
Bonsoir,

j'utilise depuis peu emacs et auctex, et il m'arrive de récupérer des
fichiers sources qui ne sont pas de moi et écrits dans un LaTeX
désastreux ; je pense tout particulièrement aux annales de sujets de
Bac (par ailleurs fort pratiques) mises en ligne sur le site de
l'APMEP :

http://www.apmep.asso.fr/IMG/tex/Baccalaur_e9atS.1999.tex

ou du LaTeX généré par un programme externe (à partir d'un document
open Office ou Word).

A chaque fois, je dois effectuer certaines modifications comme :
- divers remplacements ('e -> é par exemple, ou mathcal{C}->C parce
que mon fichier de macros perso fournit ce raccourci, ou encore
ewline->deux retours charriots)
- identifier chaque exercice et l'entourer de l'environnement
exercice, également défini dans mes macros

C'est long et répétitif, mais pas toujours évident (notamment repér=
er
le début et la fin d'un exo.

Etant plutôt débutant avec emacs, je me demande s'il est un outil
convenable pour ce genre de tâche (je sais qu'il y en a d'autres, par
exemple si vos réponses sont absentes ou décourageantes, j'écrirai
certainement un petit truc en Java), mais j'apprécierai de n'utiliser
qu'un nombre restreint d'outils.

Et si oui, ben j'aimerais savoir un peu comment on se débrouille pour
faire ça (par exemple un bout de code commenté, via un lien, serait
très apprécié).

D'avance merci,

Frédéric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Denis Bitouzé
Le #21776541
Le lundi 23/06/08 à 12h26,
Frédéric
Et si oui, ben j'aimerais savoir un peu comment on se débrouille pour
faire ça



Dans ce cas, j'utilise des macros clavier :

http://www.emacswiki.org/cgi-bin/wiki/KeyboardMacros

qui peuvent contenir des tas de choses, des recherches (au moyen de C-s)
par exemple...
--
Denis
Paul Gaborit
Le #21776531
À (at) Mon, 23 Jun 2008 12:26:29 -0700 (PDT),
Frédéric
A chaque fois, je dois effectuer certaines modifications comme :
- divers remplacements ('e -> é par exemple,



Ça, c'est du boulot standard pour 'recode' (ou 'iconv') :

recode TeX..latin1
(vous pouvez évidemment choisir utf-8 à la place de latin1).

L'intérêt de 'recode' vient du fait qu'il saura traiter tous les
accents (La)TeX même ceux que vous n'avez pas encore rencontrés...

ou mathcal{C}->C parce
que mon fichier de macros perso fournit ce raccourci, ou encore
newline->deux retours charriots)



Pour cela, il faudra effectivement faire votre propre commande car
c'est lié à votre problème spécifique. Mais les deux exemples
ci-dessus sont assez simples pour être traités par de simples macros
emacs :

- C-( pour commencer à apprendre la macro
- C-) pour terminer l'apprentissage
- C-x e pour ré-exécuter la dernière macro apprise

Ensuite, il y a d'autres commandes pour stocker une macro, l'exécuter
plusieurs fois, voire la modifier...

Maintenant, les macros ne sont pas vraiment adaptées s'il y a des
actions conditionnelles ou contextuelles....

- identifier chaque exercice et l'entourer de l'environnement
exercice, également défini dans mes macros

C'est long et répétitif, mais pas toujours évident (notamment repérer
le début et la fin d'un exo.



Sans spécification plus précise, ça va être difficile de vous aider...

Etant plutôt débutant avec emacs, je me demande s'il est un outil
convenable pour ce genre de tâche (je sais qu'il y en a d'autres, par
exemple si vos réponses sont absentes ou décourageantes, j'écrirai
certainement un petit truc en Java),



En l'occurrence, Java ne me semble vraiment pas le langage le plus
adapté à ce genre de travail. Par contre Perl, sed ou emacs-lisp sont
vraiment fait pour ça... Bien sûr, si vous ne maîtrisez que Java, la
question ne se pose pas.

mais j'apprécierai de n'utiliser qu'un nombre restreint d'outils.



Un nombre restreint d'outils ? Un seul ordinateur suffit ! ;-)

--
Paul Gaborit -
Matthieu Moy
Le #21776521
Paul Gaborit
ou mathcal{C}->C parce
que mon fichier de macros perso fournit ce raccourci, ou encore
newline->deux retours charriots)



Pour cela, il faudra effectivement faire votre propre commande car
c'est lié à votre problème spécifique. Mais les deux exemples
ci-dessus sont assez simples pour être traités par de simples macros
emacs :



Je dirais même carrément un rechercher/remplacer. M-% est ton ami.

--
Matthieu
Frédéric
Le #21776511
Ça, c'est du boulot standard pour 'recode' (ou 'iconv') :

   recode TeX..latin1
(vous pouvez évidemment choisir utf-8 à la place de latin1).

L'intérêt de 'recode' vient du fait qu'il saura traiter tous les
accents (La)TeX même ceux que vous n'avez pas encore rencontrés...



Bizarrement, j'ai un mauvais souvenir d'utilisation de recode (je
précise que je suis sous Windows XP).

> ou mathcal{C}->C parce
> que mon fichier de macros perso fournit ce raccourci, ou encore
> newline->deux retours charriots)

Pour cela, il faudra effectivement faire votre propre commande car
c'est lié à votre problème spécifique. Mais les deux exemples
ci-dessus sont assez simples pour être traités par de simples macros
emacs :

  - C-( pour commencer à apprendre la macro
  - C-) pour terminer l'apprentissage
  - C-x e pour ré-exécuter la dernière macro apprise

Ensuite, il y a d'autres commandes pour stocker une macro, l'exécuter
plusieurs fois, voire la modifier...



OK, ça dégrossira déjà bien le boulot.

Maintenant, les macros ne sont pas vraiment adaptées s'il y a des
actions conditionnelles ou contextuelles....

Sans spécification plus précise, ça va être difficile de vous aid er...



Je ne demande pas une solution "clés en main", ne serait-ce que parce
que les fichiers en question risquent d'être assez différents.

> Etant plutôt débutant avec emacs, je me demande s'il est un outil
> convenable pour ce genre de tâche (je sais qu'il y en a d'autres, par
> exemple si vos réponses sont absentes ou décourageantes, j'écrira i
> certainement un petit truc en Java),

En l'occurrence, Java ne me semble vraiment pas le langage le plus
adapté à ce genre de travail. Par contre Perl, sed ou emacs-lisp sont
vraiment fait pour ça... Bien sûr, si vous ne maîtrisez que Java, l a
question ne se pose pas.



Effectivement, des 4 cités, je ne maîtrise que Java. Néanmoins,
j'espérais bien une réponse du type emacs-lisp : je suppose que c'est
le langage des fichiers .el, et s'il est possible de faire du
traitement de chaînes assez évolué avec, je suis prêt à faire l'e ffort
d'investir un peu dans son apprentissage. Que puis-je lire comme
introduction ? Existe-t-il des codes sources simples qui pourraient
servir de base de travail ?

> mais j'apprécierai de n'utiliser qu'un nombre restreint d'outils.

Un nombre restreint d'outils ? Un seul ordinateur suffit ! ;-)



:-)
Xavier Maillard
Le #21762461
Frédéric

d'investir un peu dans son apprentissage. Que puis-je lire comme
introduction ? Existe-t-il des codes sources simples qui pourraient
servir de base de travail ?



GNU Emacs est un bel exemple de recueils de codes sources en
emacs lisp :)
Publicité
Poster une réponse
Anonyme