Forums Développement Multimédia

Aller au contenu

Grep pour espace insécable entre des chiffres et un mot

grep insécable

13 réponses à ce sujet

#1 louisede

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 08 September 2015 - 11:25 AM

Bonjour,

Je cherche à appliquer un style Grep certainement très simple mais que je n'arrive pas à trouver.
Je dois mettre en page des textes qui contiennent régulièrement des chiffres associés à des mots : 450 marches, 70 temples…
Je cherche donc une manière d'appliquer automatiquement une espace insécable entre ces 2 informations.

Merci beaucoup pour votre aide
Louise

#2 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 11:39 AM

Disons que : \d\K\h + Char style : NoBreak devrait suffire ! :eusa_doh:
Que la Force soit avec nous !...

#3 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 11:48 AM

… Toutefois, si les nombres sont avec séparateur de millier (espace fine), sauf erreur, ce code t'évitera d'embarquer les années !

(?<!\d)\d{1,3}\K\h
Que la Force soit avec nous !...

#4 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 08 September 2015 - 12:08 PM

\d\s devrait suffire, non ?

#5 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 14:02 PM

Pas utile de cibler le chiffre, l'espace sera suffisant.
Le contexte peut s'en contenter mais c'est un code "gourmand" qui va se "goinfrer" de dates !
Au cas où les chiffres ne comporteraient pas de séparateur de milliers et qu'il y aurait des dates, un code d'exclusion (manuel) pourrait s'avérer utile :
\d(?!~j)\K\h

Que la Force soit avec nous !...

#6 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 08 September 2015 - 14:14 PM

Mmmmm… sans doute :)

Maintenant :
– comme tu le dis, le contexte peut s'en contenter
– quand on débute, comprendre les styles grep que l'on utilise, c'est bien aussi
– enfin, perso, les dates, je les aime bien aussi en insécable… Le 21
12 96, je trouve pas ça terrible ;-)

#7 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 14:36 PM

Didier, je pensais plutôt à : "… Il collectionnait en 1980 voitures et mannequins … !" ;-)

Pour ce qui est de la méthode, j'en conviens, Grep nécessite … un certain apprentissage !
Que la Force soit avec nous !...

#8 louisede

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 08 September 2015 - 15:04 PM

Merci à tous les 2 pour vos éclairages!

#9 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 08 September 2015 - 15:52 PM

Il collectionnait, en 1980, voitures et mannequins…
En 1980, il collectionnait voitures et mannequins…
Il collectionnait voitures et mannequins en 1980…
Aucun souci…

Spoiler


Après, comme tu le dis, on trouve toujours des cas litigieux et il n'y a, dans ce cas, qu'une gestion manuelle pour s'en sortir. Il me semble plutôt inutile de tenter de trouver un GREP pour gérer :

C'est en l'an de grâce795 que LéonIII gravit les 12marches du chœur de la basilique de Rome pour succéder à AdrienI.

#10 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 08 September 2015 - 16:16 PM

Bonjour.

Voir le messagelouisede, le 08 September 2015 - 11:25 AM, dit :

Je cherche à appliquer un style Grep certainement très simple mais que je n'arrive pas à trouver.
Je dois mettre en page des textes qui contiennent régulièrement des chiffres associés à des mots : 450 marches, 70 temples…
Je cherche donc une manière d'appliquer automatiquement une espace insécable entre ces 2 informations.

Un Style GREP ne peut qu'appliquer un Style de caractère, pour remplacer une espace par une insécable il faut nécessairement utiliser le Rechercher-Remplacer.


Donc un changement de méthode s'impose :

- il faut oublier l'espace insécable, InDesign propose l'attribut "Sans Retour (automatique)", ou "No Break" en anglais, qui permet d'éviter coupures ou césures (Dans le panneau Caractères).

En plus d'être applicable directement via un Style GREP (sans R/Remplacer) cet attribut dynamique à l'énorme avantage de ne pas modifier le texte lui-même. Ce qui est très important en cas de multi-publication, notamment pour les eBooks car rares sont les liseuses qui apprécient les insécables.

- Concernant la requête à utiliser, il faut y insérer les mots concernés. Je n'ai pas mieux à proposer que :
\d+\s(?=marches?|temples?|etc)

(Le point d'interrogation après les mots rend le "s" facultatif.)
Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#11 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 08 September 2015 - 16:25 PM

Voir le messagedldler, le 08 September 2015 - 15:52 PM, dit :

C'est en l'an de grâce795 que LéonIII gravit les 12marches du chœur de la basilique de Rome pour succéder à AdrienI.

J'ai déjà eu affaire à certains de ces lascars numérotés dans un livre, voici une requête à enrichir :

(?:Charles|Louis|François|Henri|Jean|Eudes|Robert|Philippe|Urbain|Benoît|Pie|Paul|Alexandre|Jules)\s(?:I|V|X|L|C)+
Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#12 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 16:49 PM

Aha ! Didier, mauvais exemple. Au contraire, il est tout à fait possible ici d'aborder la question sous l'angle de Grep !
Mais pas avec des styles Grep qui vont alourdir la réactivité d'ID.
En utilisant Multi-Find/Change (beaucoup plus souple que FindChangeByList), on peut arriver à une gestion particulièrement fine.
Pour répondre à Jean-Renaud, c'est effectivement, partiellement, ainsi que je procède, mais j'y apporte un gros bémol : J'ai dans un sens une liste triée sur la première lettre [ ex. : (?i)(?<=\d)\h(?=(agents?|ans?|années?|annuités?|articles?)\b ]. De l'autre, des exclusions [ ex. : (?i)(\b(art(icles?)?)\b\.?)\K\h(?=\d) ].
Pour gérer les deux ensemble comme ici : "je n'emploie plus de polices type 1 dans mes mises en page", j'utilise une approche complémentaire : des conditions !
Ici, Grep prendra l'espace après le "1" si et seulement s'il n'est pas précédé par une espace à laquelle j'ai déjà appliqué une condition. Comme, ici, "1" est lié à "type", mon grep a déjà appliqué une condition à l'espace entre les 2. Donc, mon grep suivant ne peut plus le prendre en compte !! C'est particulièrement redoutable pour gérer les "faux-insécables" : certains auteurs en mettent n'importe où ! et cela mérite une certaine attention : il est beaucoup plus rapide de corriger 1 % problématique que de se taper la lecture des 100 % alors que les 99 % restant sont valides, surtout quand le 100 % fait référence à 10 000 occurrences !

Je suis d'accord sur le fait qu'il n'y a pas de regex-miracle mais on a tout l'attirail pour partir en croisade en l'an de grâce 2015 ! :smile:
Que la Force soit avec nous !...

#13 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 08 September 2015 - 20:34 PM

Sans surprise, je plussoie l'usage du rechercher remplacer associé à des GREPs simples. L'usage du bon caractère règle à lui seul tellement de difficultés...
En même temps, je ne m'occupe pas si souvent que ça de textes de longue taille.

#14 Obi-wan Kenobi

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 259 messages

Posté 08 September 2015 - 21:05 PM

Je te laisse donc apprécier ! 466 pages InDesign (parfaitement stylées) en 4 minutes à partir de sources Excel !

https://youtu.be/VEqcgKEr6lk

La pierre angulaire du process : une tripotée de regex pilotées pour l'essentiel via Applescript dans TextWrangler !

Amusant ! ;-)
Que la Force soit avec nous !...



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP