Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Automatiser des modifications

5 réponses
Avatar
Frédéric
Bonsoir,

j'utilise depuis peu emacs et auctex, et il m'arrive de r=E9cup=E9rer des
fichiers sources qui ne sont pas de moi et =E9crits dans un LaTeX
d=E9sastreux ; je pense tout particuli=E8rement 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=E9n=E9r=E9 par un programme externe (=E0 partir d'un document
open Office ou Word).

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

C'est long et r=E9p=E9titif, mais pas toujours =E9vident (notamment rep=E9r=
er
le d=E9but et la fin d'un exo.

Etant plut=F4t d=E9butant avec emacs, je me demande s'il est un outil
convenable pour ce genre de t=E2che (je sais qu'il y en a d'autres, par
exemple si vos r=E9ponses sont absentes ou d=E9courageantes, j'=E9crirai
certainement un petit truc en Java), mais j'appr=E9cierai de n'utiliser
qu'un nombre restreint d'outils.

Et si oui, ben j'aimerais savoir un peu comment on se d=E9brouille pour
faire =E7a (par exemple un bout de code comment=E9, via un lien, serait
tr=E8s appr=E9ci=E9).

D'avance merci,

Fr=E9d=E9ric

5 réponses

Avatar
Denis Bitouzé
Le lundi 23/06/08 à 12h26,
Frédéric a écrit :

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
Avatar
Paul Gaborit
À (at) Mon, 23 Jun 2008 12:26:29 -0700 (PDT),
Frédéric écrivait (wrote):
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 < original.tex > nouveau.tex

(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 - <http://perso.enstimac.fr/~gaborit/>
Avatar
Matthieu Moy
Paul Gaborit writes:

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
Avatar
Frédéric
Ça, c'est du boulot standard pour 'recode' (ou 'iconv') :

   recode TeX..latin1 < original.tex > nouveau.tex

(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 ! ;-)



:-)
Avatar
Xavier Maillard
Frédéric writes:


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 :)