IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> quarkxpress - Automatiser rechercher/remplacer
Options
jjalias
posté 30 May 2018, 07:41
Message #1


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Bonjour,
Nouveau sur ce forum, je viens demander de l'aide pour la création d'un script pour Quarkxpress.
Je travaille dans un petit journal local, et je perds un temps fou sur certaines parties, comme le programme tv.
J'ai fait des recherches sur l'applescript, mais avec mon faible niveau de programmation, pas évident biggrin.gif

En fait, je dispose d'un pdf comme ceci :


07.00 Nom de l'émission 1 qui MAG
07.30 Nom de l'émission 2
08.00 Nom de l'émission 3 DOC


Je voudrais que mon script fasse 4 actions :
1) Appliquer un style
2) Mettre en gras les horaires
3) Supprimer les sauts de lignes
4) Supprimer certains mots qui apparaissent en fin de ligne, comme ici "MAG" et "DOC"

Pour l'action 4, j'ai commencé à faire ce script qui fonctionne plutôt bien :

tell application "QuarkXPress"
tell document 1
delete (text of every text of every story where it is "MAG")
end tell
end tell


Malheureusement, si le nom d'une émission comporte le mot "mag" (exemple: "07.30 Magasin de légumes MAG"), il va me supprimer les deux "mag". Comment définir que je ne veux que les "MAG" en fin de ligne ?

Je vous remercie d'avance pour votre précieuse aide !
Go to the top of the page
 
+Quote Post
jjalias
posté 30 May 2018, 14:55
Message #2


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Bon du coup, j'ai avancé un peu, j'ai réussi à faire supprimer les fins de paragraphes pour que tout fasse un gros bloc :

CODE
tell application "QuarkXPress"
tell document 1
delete (text of every text of every story where it is "MAG
")
end tell

tell document 1
set text of every text of every story where it is "
" to " "
end tell
end tell


Maintenant, il faut que je mette les 5 premiers caractères de chaque ligne (ex:18.00) en gras. Au boulot, ils appliquent une certaine police, en medium au lieu de regular.
J'ai réussi à mettre en gras simple avec ce bout de code (mais que pour la première ligne, je ne sais pas comment utiliser la fonction Repeat pour chaque ligne) :

CODE
tell application "QuarkXPress"
tell document 1
set style of character 1 of text box 1 to bold
set style of character 2 of text box 1 to bold
set style of character 3 of text box 1 to bold
set style of character 4 of text box 1 to bold
set style of character 5 of text box 1 to bold
end tell
end tell


Mettre en gras ok, mais changer la font, impossible sad.gif
D'après ce que j'ai trouvé sur le web, ça devrait être quelque chose du genre :

CODE
tell application "QuarkXPress"
tell document 1
set fontname of text of every text of every story to "Formata-Bold"
end tell
end tell


Mais malheureusement, il me sort toujours une erreur sad.gif

Ce message a été modifié par jjalias - 30 May 2018, 14:55.
Go to the top of the page
 
+Quote Post
baron
posté 30 May 2018, 17:10
Message #3


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 347
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Bonjour et bienvenue ! smile.gif

Pour ma part, je n'utilise pas Quark XPress et ne pourrais vraiment pas t'aider directement mais il serait utile pour d'autres de préciser la version utilisée…

Par ailleurs, ce qui peut être pratique : dans le Finder, tu saisis l'icône d'XPress et tu la lâches sur celle de l'Editeur AppleScript (dans le dossier Utilitaires) : tu obtiens une fenêtre qui reprend et détaille toutes les commandes AppleScript supportées par XPress.

Pour les cinq premiers caractères de chaque ligne, il est normal que tu n'y arrives plus après avoir supprimé les retours à la ligne ; commence par changer leur police en recherchant les cinq caractères après le saut de ligne, puis ensuite seulement tu supprimeras les sauts de ligne. wink.gif

Enfin, regarde aussi si XPress ne supporte pas les expressions régulières (Recherche GREP ou Styles GREP). Avec InDesign en tout cas, c'est ainsi que je te dirais de procéder…

P.S. Il semble qu'avec XPress, il y ait des « styles conditionnels » qui s'en approchent :
http://www.ludovic-martin.com/2011/04/quar...t-approuve.html


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
CMJS
posté 31 May 2018, 09:39
Message #4


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Les styles conditionnels vont effectivement faire ce que tu veux pour la mise sous style.
Et tu ne dis pas dans quelle version tu travailles. La dernière en date est la 2018, mais perso je travaille encore (pas uniquement) en 9.5.


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
jjalias
posté 31 May 2018, 15:01
Message #5


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Citation (baron @ 30 May 2018, 18:10) *
Bonjour et bienvenue ! smile.gif

Pour ma part, je n'utilise pas Quark XPress et ne pourrais vraiment pas t'aider directement mais il serait utile pour d'autres de préciser la version utilisée…

Par ailleurs, ce qui peut être pratique : dans le Finder, tu saisis l'icône d'XPress et tu la lâches sur celle de l'Editeur AppleScript (dans le dossier Utilitaires) : tu obtiens une fenêtre qui reprend et détaille toutes les commandes AppleScript supportées par XPress.

Pour les cinq premiers caractères de chaque ligne, il est normal que tu n'y arrives plus après avoir supprimé les retours à la ligne ; commence par changer leur police en recherchant les cinq caractères après le saut de ligne, puis ensuite seulement tu supprimeras les sauts de ligne. wink.gif

Enfin, regarde aussi si XPress ne supporte pas les expressions régulières (Recherche GREP ou Styles GREP). Avec InDesign en tout cas, c'est ainsi que je te dirais de procéder…

P.S. Il semble qu'avec XPress, il y ait des « styles conditionnels » qui s'en approchent :
http://www.ludovic-martin.com/2011/04/quar...t-approuve.html


Merci pour ta réponse wink.gif

Malheureusement, Xpress ne gère pas les expressions régulières (ça aurait été tellement plus simple sad.gif )

Effectivement, pour les 5 premiers caractères, j'ai bien mis ce bout de code avant le premier pour que ça marche.
J'ai un peu avancé, j'arrive à mettre les 5 premiers caractères en gras avec "set style" (solution provisoire), changer la taille avec "set size", mais changer la police, impossible !
J'ai beau regardé sur plein de forums en anglais, mais je dois sûrement disposer d'une commande fausse (set font, set fontname, set font name, etc...).
Voilà le bout de code que j'ai pour l'instant :

CODE
tell application "QuarkXPress"
tell document 1
set numParagraphs to (count paragraphs of text of every text of every story)
set paragraphNum to 1
repeat while paragraphNum ≤ numParagraphs
set style of character 1 of every paragraph of text of every text of every story to bold
set style of character 2 of every paragraph of text of every text of every story to bold
set style of character 3 of every paragraph of text of every text of every story to bold
set style of character 4 of every paragraph of text of every text of every story to bold
set style of character 5 of every paragraph of text of every text of every story to bold
set paragraphNum to paragraphNum + 1
end repeat
end tell
tell document 1
set text of every text of every story where it is "MAG
" to "- "
set text of every text of every story where it is "DOC
" to "- "
set text of every text of every story where it is "MUSIQUE
" to "- "
set text of every text of every story where it is "DIRECT
" to "- "
set text of every text of every story where it is "DIV
" to "- "
set text of every text of every story where it is "Conf
" to "- "
set text of every text of every story where it is "
" to " - "
end tell
end tell

Go to the top of the page
 
+Quote Post
CMJS
posté 1 Jun 2018, 09:09
Message #6


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Pour appliquer une police, c'est
Code
set font to "Helvetica"
par exemple.
Plutôt que d'avoir 5 lignes avec
Code
set style of character…
tu peux le faire en une seule :
Code
set style of character 1 thru 5 to…

Il y a une boucle inutile : si tu appliques un style aux caractères 1 à 5 de tous les paragraphes de toutes les stories, il n'y a pas de raison de vouloir mettre à l'intérieur d'une boucle. C'est fait une fois pour toutes.
Tu peux également remplacer la série de remplacements de texte en rassemblant dans un ensemble tout ce que tu veux changer (par exemple,
Code
set Texte_a_remplacer to {"MAG","DOC","MUSIQUE","DIRECT","DIV"}
), puis dans une boucle opérer tes changements : par exemple,
Code
    tell document 1
        repeat with i from 1 to length of Texte_a_remplacer
            set (every text of every story where it is (item i of Texte_a_remplacer)) to "- "
        end repeat
    end tell

De la sorte, si tu as un ajout à faire, tu n'as pas besoin d'ajouter une ligne, mais juste le texte dans l'ensemble. Et si tu devais remplacer du texte en fonction de celui-ci (par exemple, remplacer MAG par Magazine, DOC par Documentaire, etc.), il te suffirait de jouer avec deux listes correpondantes.


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
jjalias
posté 1 Jun 2018, 09:57
Message #7


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Citation (CMJS @ 1 Jun 2018, 10:09) *
Pour appliquer une police, c'est
Code
set font to "Helvetica"
par exemple.
Plutôt que d'avoir 5 lignes avec
Code
set style of character…
tu peux le faire en une seule :
Code
set style of character 1 thru 5 to…

Il y a une boucle inutile : si tu appliques un style aux caractères 1 à 5 de tous les paragraphes de toutes les stories, il n'y a pas de raison de vouloir mettre à l'intérieur d'une boucle. C'est fait une fois pour toutes.
Tu peux également remplacer la série de remplacements de texte en rassemblant dans un ensemble tout ce que tu veux changer (par exemple,
Code
set Texte_a_remplacer to {"MAG","DOC","MUSIQUE","DIRECT","DIV"}
), puis dans une boucle opérer tes changements : par exemple,
Code
    tell document 1
        repeat with i from 1 to length of Texte_a_remplacer
            set (every text of every story where it is (item i of Texte_a_remplacer)) to "- "
        end repeat
    end tell

De la sorte, si tu as un ajout à faire, tu n'as pas besoin d'ajouter une ligne, mais juste le texte dans l'ensemble. Et si tu devais remplacer du texte en fonction de celui-ci (par exemple, remplacer MAG par Magazine, DOC par Documentaire, etc.), il te suffirait de jouer avec deux listes correpondantes.


Wow, merci beaucoup pour cette réponse si complète !

1) Pour le "set font to "Helvetica", j'avais trouvé ça sur le web, mais ça ne passe pas, je ne sais pas pq sad.gif
Exemple :
CODE
set font of every paragraph of text of every text of every story to "Formata-Medium"

Message d'erreur : "Erreur dans QuarkXPress : Le type de certaines données est incorrect."
ou
CODE
set font to "Formata-Medium"

Message d'erreur : "Erreur dans QuarkXPress : Il est impossible de régler font of document 1 à "Formata-Medium"."
(je précise que j'ai bien récupéré le nom Postcript de la police dans le livre des polices.

2) Pour la technique de réduire à 1 ligne les 5 lignes de codes pour mettre les 5 premiers caractères en gras, j'avais aussi essayé la méthode que tu dis, mais pareil, j'ai à chaque fois un message d'erreur :
"Erreur dans QuarkXPress : Il est impossible de régler style of characters 1 thru 5 of every paragraph of every text of every text of every story of document 1 à bold."
Mais en 5 lignes, il marche parfaitement sad.gif

3) Pour le "set Texte_a_remplacer to {"MAG","DOC","MUSIQUE","DIRECT","DIV"}", je vais essayer ça, et je te dirais si ça marche. C'est vrai que ça a l'air beaucoup plus propre, rapide et efficace.

Encore une fois merci pour ton aide !!

Ps: j'ai la version 9.5.4.1 de QuarkXpress
Go to the top of the page
 
+Quote Post
CMJS
posté 4 Jun 2018, 10:15
Message #8


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Attention, le langage AppleScript est très précis et il s'agit absolument d'associer les actions aux bons destinataires.

Si tu as :
Code
Message d'erreur : "Erreur dans QuarkXPress : Il est impossible de régler font of document 1 à "Formata-Medium"."
, c'est qu'une police ne peut pas être appliquée au document en tant que tel, mais au texte seulement. Tu dois donc "dire" au bon élément ce que tu veux faire, en l'occurrence insérer un bloc
Code
tell story 1 of current box
, par exemple, ou plutôt, comme tu veux modifier toutes les occurrences dans tous les blocs de texte :
Code
set font of every text of every story to "Formata-Medium"
.

2)
Code
"Erreur dans QuarkXPress : Il est impossible de régler style of characters 1 thru 5 of every paragraph of every text of every text of every story of document 1 à bold."
Idem : un style de caractère est appliqué à du texte, lui-même étant un élément d'une story, élément d'un document, donc il faudrait simplifier comme ceci :
Code
set style of characters 1 thru 5 of every story to bold.
(ici, j'ai supprimé of document 1 parce qu'on se trouve déjà dans un bloc tell document 1.

Tiens-nous au courant.

P.-S. — Bien que le forum ne soit plus vraiment actif, tu trouveras beaucoup de bons conseils sur Publi-Script. C'est en anglais, mais je suppose et j'espère que tu comprends cette langue (ça aide énormément pour l'AppleScript).

P.-S. 2 — Ci-joint une visualisation de la hiérarchie des éléments (screenshot du Dictionnaire de QuarkXPress 2017 dans Script Debugger).

Ce message a été modifié par CMJS - 4 Jun 2018, 10:18.
Fichier(s) joint(s)
Fichier joint  Capture_d_____cran_2018_06_04____11.09.55.png ( 339.18 Ko ) Nombre de téléchargements : 12
 


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
jjalias
posté 6 Jun 2018, 09:52
Message #9


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Merci pour ta réponse.
Malheureusement, ça ne marche toujours pas.
Regarde ce petit bout de code :

CODE
tell application "QuarkXPress"
tell document 1
tell every text of current box
set size to 8
set font to "Formata-Medium"
end tell
end tell
end tell


Le "set size to 8" fonctionne bien.
Le "set font to "Formata-Medium" me retourne :

CODE
tell application "QuarkXPress"
set size of every text of current box of document 1 to 8
set font of every text of current box of document 1 to "Formata-Medium"
--> error number -1703
Résultat :
error "Erreur dans QuarkXPress : Le type de certaines données est incorrect." number -1703 to item


Je n'arrive vraiment pas à comprendre le problème sad.gif
Go to the top of the page
 
+Quote Post
hellomorld
posté 6 Jun 2018, 13:05
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 150
Inscrit : 31 Oct 2003
Membre no 11 118



Et si au lieu de changer la police et la taille, tu changeais la feuille de style ?


--------------------
Go to the top of the page
 
+Quote Post
jjalias
posté 6 Jun 2018, 16:57
Message #11


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 30 May 2018
Membre no 205 028



Citation (hellomorld @ 6 Jun 2018, 14:05) *
Et si au lieu de changer la police et la taille, tu changeais la feuille de style ?


J'ai aussi essayé, mais j'ai aussi un message d'erreur à chaque fois sad.gif
Je t'aurais bien donné le code que j'ai essayé pour changer le style, mais c'est sur l'ordi du boulot, je te l'écris demain
Go to the top of the page
 
+Quote Post
CMJS
posté 8 Jun 2018, 08:40
Message #12


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Citation (jjalias @ 6 Jun 2018, 10:52) *
Malheureusement, ça ne marche toujours pas.
Regarde ce petit bout de code :

CODE
tell application "QuarkXPress"
tell document 1
tell every text of current box
set size to 8
set font to "Formata-Medium"
end tell
end tell
end tell


C'est parce que tu ne t'adresses pas correctement à l'objet texte (non-respect de la hiérarchie des éléments). Le texte ne fait pas partie des "box", mais des stories. Donc, essaie plutôt ceci :

CODE
tell application "QuarkXPress"
tell document 1
tell every text of story 1 of current box
set size to 8
set font to "Formata-Medium"
end tell
end tell
end tell


EDIT : Pour t'aider à mieux comprendre, je te donne des saisies d'écran de Script Debugger (vues du Dictionnaire de l'application > text). J'espère que cela t'aidera à mieux comprendre et visualiser la question de la hiérarchie des éléments (Where used). Sinon, dis-moi.

Ce message a été modifié par CMJS - 8 Jun 2018, 09:20.
Fichier(s) joint(s)
Fichier joint  Capture_d_____cran_2018_06_08____10.16.21.png ( 88.89 Ko ) Nombre de téléchargements : 2
Fichier joint  Capture_d_____cran_2018_06_08____10.16.04.png ( 207.99 Ko ) Nombre de téléchargements : 1
Fichier joint  Capture_d_____cran_2018_06_08____10.15.27.png ( 20.84 Ko ) Nombre de téléchargements : 3
 


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th April 2024 - 18:48