FindChangeByList  (Lu 601 fois) Partager ce sujet Imprimer

1 B


Ronflex  26 mars 2020 : 06:33

Je tente d'écrire une requête GREP dans le fichier FindChangeByList.txt.
La requête fonctionne dans le Rechercher et remplacer d'InDesign :   [A-Z]\u+   Remplacer par : \t$0

Je suis incapable de la faire fonctionner dans le script. Qu'est-ce que je fais de pas correct ?

IP archivée


Merlin  26 mars 2020 : 17:44

Bonjour

Merci de joindre le fichier texte que je puisse l'examiner, et de m'indiquer quelle est la ligne modifiée.
 :Smiley15:

IP archivée


Ronflex  27 mars 2020 : 02:17

J,ai une liste  importée dans In Design qui contient notamment des infos comme celles du fichier Listes_genealogiques_Exemples.txt (elle est nettement plus longue que celle-ci entre 4 et 20,000 entrées par fichier.)

SI je fais un Recherche et Remplacer et que je choisis Recherche GREP, J'écris dans Rechercher : [A-Z]\u+   et puis j'écris dans Remplacer :  \t$0   Je roule la requête : TOUT REMPLACER  et  un tabulateur apparait entre Rose et DAMOUR ou Pierre et LAROCHE et ainsi de suite ou tout autre nom écrit ainsi.
Comme j'ai une vingtaine de requêtes différentes  à effectuer sur le fichier, et que je dois effectuer ce travail assez souvent, avant de l'exporter , j'ai pensé les rouler  avec le script FindChangeByList.  Mes premières requêtes fonctionnent bien (elles sont inactives présentement car je testait la dernière)  mais je suis incapable de faire rouler la dernière instruction.
J'écris (Voir le fichier Find_...txt) : grep   {findWhat:"\[A-Z]\u+)"}   {changeTo:"\t$0"}   {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
Ca ne fonctionne pas.
Est-ce que c'est parce que le script ne s'occupe que de typographie ou parce que j'ai écrit la commande comme un béotien ?

P.S.
J'ai découvert un script DoQUeryList,qui est un pis aller. (Pas si pire comme aller, je l'avoue :Smiley01: [/size]). Il me permet d'automatiser beaucoup plus l'exécution de ma séquences de requêtes que la fonction Rechercher et Remplacer d'InDesign.  J'aimerais mieux l'exécuter avec FindChangeByList  mais il y a souvent un monde entre je veux et je peux. Donc, le problème est maintenant pour moi plus théorique puisque je peux fonctionner beaucoup plus vite. Puis-je écrire n'importe quelle commande GREP dan FindChangeByList ?

Merci à l'avance.[/font]
Ronflex




IP archivée


Merlin  27 mars 2020 : 16:24

Je vais examiner ça de plus près ce weekend, j'ai bien un soupçon mais dans ce cas ça ne devrait pas marcher non plus en rechercher-remplacer…  :Euuuh:  :doute:

Quoi qu'il en soit FindChangeByList est pratique pour les corrections-vérifications récurrentes mais ce n'est pas très souple.
MultiFindChange  ou DoQUeryList me semblent plus adaptés à ton besoin.

IP archivée


Merlin  29 mars 2020 : 18:13

1. La regex que tu utilises est bancale.
[A-Z] c'est exactement la même chose que \u : lettre capitale quelconque
Donc [A-Z]\u+ signifie : une lettre capitale quelconque, suivie d'une lettre capitale quelconque répétée une ou plusieurs fois.

Ce qu'on peut aussi écrire : \u{2,}
Soit une lettre capitale quelconque répétée deux ou plusieurs fois (la virgule est importante).


2. J'ai testé ta regex, j'ai essayé avec une autre sans utiliser le remplacement avec les $ : avec le rechercher-remplacer ça fonctionne.
Par-contre c'est impressionnant comme rien ne fonctionne avec le script !
J'en perd mon latin  :doute: :Euuuh: :doute: :Euuuh:
Et du coup je me demande aussi si les autres lignes fonctionnent…

Je vais tester avec InDesign CS6 sur mon vieux Mac dès fois que ce serait un bug de InDesign CC2020, mais j'ai surtout l'impression de passer à côté de quelque chose.
 :geek:

IP archivée


Merlin  29 mars 2020 : 19:36

mais j'ai surtout l'impression de passer à côté de quelque chose.
Mais bon sang, mais c'est bien sur !  :extra:
Et je le savais…  :mur:

Pour les scripts (pas que celui-là), dans la recherche certains métacaractères requièrent un double-slash pour être échappés, donc il faut utiliser : \\u
Ce qui nous donne cette ligne :

grep   {findWhat:"\\s(?=\\u{3,})"}   {changeTo:"\t"}   {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:false, wholeWord:false}

\\s(?=\\u{3,}) : cette regex ne capte QUE l'espace située immédiatement avant la suite de lettres capitales recherchées, grâce au LookBehind positif (en rouge*). Et j'ai mis 3 caractères minimum pour éviter de capter d'éventuels articles.
Donc on ne fait que remplacer l'espace par une TAB.
OK, au final ça ne change rien, mais sur le principe je préfère.
 :Smiley03:


* Voir : https://www.abracadabrapdf.net/ressources-et-tutos/abracadabragrep/grep-pour-indesign-appliquer-exposant-a-mme-et-mlle/

IP archivée


Ronflex  31 mars 2020 : 13:37



Oh grand magicien,


Je suis ébahi que tu ais pris du temps pour trouver la solution. D,autant plus que j'avais trouvé un plan b. Merci pour l'astuce du : \u{2,} ,  cela m'a permis d'éliminer une formule encore plus étriquée qui prévoyait tous les cas dans les noms propres. Ex. St-Amour,  Perrier-Lachapelle,  Aubin/Lacoste. Je n'ai qu'a passer une fois une autre requête pour régler les problèmes comme D'Amours.
Cette formule t'aurait fait éclater de rire, j'en suis convaincu.


Je te remercie sincèrement.

IP archivée


Merlin  31 mars 2020 : 18:00

 :bonjour:

IP archivée