OVH Cloud OVH Cloud

Extraire des commandes LaTeX de fichiers

16 réponses
Avatar
Denis Bitouzé
Bonjour,

un peu à la bourre et ne connaissant que mal le domaine des
expressions régulières, je me tourne vers ce groupe pour poser
la question suivante : comment procéder pour extraire d'un (grand
nombre de) fichier(s) toutes les commandes LaTeX, à savoir tous les
« mots » qui :

1) commencent par une contre-oblique \
2) sont suivies :
a) soit d'un nom constitué exclusivement de lettres
b) soit de l'un des caractères { } % # $ ^ ~ & _ \
3) se terminent par un espace, un chiffre ou un caractère autre
qu'une lettre.

Merci d'avance à toute bonne âme me donnant la réponse ou
m'orientant vers un groupe plus approprié pour ce genre de
questions.
--
Denis

10 réponses

1 2
Avatar
Le TeXnicien de Surface
Denis Bitouzé wrote:

Bonjour,

un peu à la bourre et ne connaissant que mal le domaine des
expressions régulières, je me tourne vers ce groupe pour poser
la question suivante : comment procéder pour extraire d'un (grand
nombre de) fichier(s) toutes les commandes LaTeX, à savoir tous les
« mots » qui :



Avec quel outil ? Parce que, malgré tout, chacun a son petit dialecte.

--
Le TeXnicien de Surface
Avatar
Le TeXnicien de Surface
Le TeXnicien de Surface wrote:

Avec quel outil ? Parce que, malgré tout, chacun a son petit dialecte.


Parce qu'il se croyait dans le groupe TeX !

--
Le TeXnicien de Surface
Avatar
Denis Bitouzé
Le 27 aoû 2006 à 11h29
Le TeXnicien de Surface a écrit :

Avec quel outil ? Parce que, malgré tout, chacun a son petit
dialecte.



Ben, euh, je ne sais... Emacs par exemple. Ou grep ou sed ou...
--
Denis
Avatar
Le TeXnicien de Surface
Denis Bitouzé wrote:

Bonjour,

un peu à la bourre et ne connaissant que mal le domaine des
expressions régulières, je me tourne vers ce groupe pour poser
la question suivante : comment procéder pour extraire d'un (grand
nombre de) fichier(s) toutes les commandes LaTeX, à savoir tous les
« mots » qui :

1) commencent par une contre-oblique
2) sont suivies :
a) soit d'un nom constitué exclusivement de lettres
b) soit de l'un des caractères { } % # $ ^ ~ & _
3) se terminent par un espace, un chiffre ou un caractère autre
qu'une lettre.



Cette fois-ci je tente la réponse :)

J'écrirais quelque chose comme ça :

([a-zA-Z]+|[{}%$^~&_])[^a-zA-Z]

Mais c'est pas testé et c'est peut-être améliorable.

--
Le TeXnicien de Surface
Avatar
Ralf Angeli
* Denis Bitouzé (2006-08-27) writes:

comment procéder pour extraire d'un (grand
nombre de) fichier(s) toutes les commandes LaTeX



Pour faire quoi avec le résultat ?

Peut-être tu cherches quelque chose comme `TeX-auto-generate-global'
en AUCTeX ?

--
Ralf
Avatar
Ralf Angeli
* Le TeXnicien de Surface (2006-08-27) writes:

([a-zA-Z]+|[{}%$^~&_])[^a-zA-Z]



Ça trouve quelque chose comme foo aussi. Il faut une regex comme
"((^|[^n])(\\)*)\([A-Za-z]+|[{}%#$^~&_])"

--
Ralf
Avatar
Denis Bitouzé
Le 27 aoû 2006 à 11h36
Ralf Angeli a écrit :

Pour faire quoi avec le résultat ?



Je veux stocker toutes les commandes repérées (si possible sans
doublons) dans un fichier annexe.

Peut-être tu cherches quelque chose comme `TeX-auto-generate-global'
en AUCTeX ?



Euh, peut-être mais je n'ai aucune idée de la façon dont
ça s'utilise.
--
Denis
Avatar
Denis Bitouzé
Le 27 aoû 2006 à 11h34
Le TeXnicien de Surface a écrit :

J'écrirais quelque chose comme ça :

([a-zA-Z]+|[{}%$^~&_])[^a-zA-Z]

Mais c'est pas testé et c'est peut-être améliorable.



Tu n'imagines pas à quel point cela ne fonctionne pas ;)

documentclass[12pt]{article}
begin{document}
LaTeX{} Bonjour les textbf{amis}! LaTeX
%{ } % # $ ^ ~ & _
Au revoir les amis!
end{document}
[ parseur]$ grep
'([a-zA-Z]+|[{}%$^~&_])[^a-zA-Z]' test.tex
%{ } % # $ ^ ~ & _
[ parseur]$

Merci, en tous cas !
--
Denis
Avatar
Denis Bitouzé
Le 27 aoû 2006 à 11h45
Ralf Angeli a écrit :

Ça trouve quelque chose comme foo aussi. Il faut une regex comme
"((^|[^n])(\\)*)\([A-Za-z]+|[{}%#$^~&_
])"



Euh, même topo : ça ne trouve que les commandes :

{ } % # $ ^ ~ & _

et pas les autres.
--
Denis
Avatar
Ralf Angeli
* Denis Bitouzé (2006-08-27) writes:

Le 27 aoû 2006 à 11h36
Ralf Angeli a écrit :

Pour faire quoi avec le résultat ?



Je veux stocker toutes les commandes repérées (si possible sans
doublons) dans un fichier annexe.



Hm, ce n'est pas quelque chose pour `TeX-auto-generate-global'.

Peut-être la fonction suivante marche pour toi :

(defun my-extract-tex-macros ()
"Extract all TeX macros from current buffer."
(interactive)
(let ((outbuf (get-buffer-create (concat (buffer-name) ".macros"))))
(save-excursion
(goto-char (point-min))
(while (re-search-forward "((^|[^n])(\\)*)
(\([A-Za-z]+|[{}%#$^~&_]))" nil t)
(let ((macro (match-string 4)))
(with-current-buffer outbuf
(insert macro "n")))))))

Ça construit un buffer <nom-du-fichier-tex>.macros avec tous les
macros. Tu peux le sauvegarder et traiter le fichier avec `sort' et
`uniq'.

--
Ralf
1 2