Laatst liep ik tegen een klusje aan waarbij ik kon kiezen voor óf monnikenwerk óf een druk op de knop. Ik koos (uiteraard) voor de laatste optie. Ik moest in een groot document alle getallen omzetten van Europese naar Brits-Amerikaanse schrijfwijze. Oftewel: het omwisselen van punten en komma’s. Dus bijvoorbeeld 4,75 x 3,50 mm naar 4.75 x 3.50 mm en € 2.500,00 naar € 2,500.00
Ik laat je stap voor stap zien hoe ik dat heb opgelost.
Platform:
Mac & Windows
Programma:
Adobe InDesign
Level: Ervaren

Een domme poging
Zoek alle punten en verander die in komma’s. Zoek alle komma’s en verander die in punten.
Resultaat: alle punten en komma’s zijn punten geworden.
Op zich een logische poging
Zoek alle punten en verander die (tijdelijk) in ehh… xx. Zoek alle komma’s en verander die in punten. Zoek alle ‘xx’ en verander die in een komma.
Resultaat: alle punten zijn komma’s geworden en andersom. Nice. Maar… aan het eind van elke zin staat nu een komma en midden in een zin staat nu opeens een punt… Oeps.
Bovenstaande zou je kunnen overkomen als je niet goed (genoeg) nadenkt over wat je precies zoekt en wilt veranderen. Plannen is key.
Wat er precies moet gebeuren
1. Punt in de duizendtallen (tijdelijk) vervangen door ‘xx’
Een duizendtal herken je omdat er minstens één getal voor de punt staat en exact drie erna. Ook zijn er geen andere leestekens in het spel dan cijfers en een punt. Uitgeschreven ziet dat er zo uit:
Een willekeurig cijfer
gevolgd door een punt
gevolgd door exact 3 willekeurige cijfers
Ik zoek alleen de punt en niet de cijfers. De cijfers hebben alleen met de voorwaarde te maken.
In GREP levert dit de volgende zoekstring op (werkt ook met miljoenen etc.):
Zoeken naar:
(?<=\d)\.(?=\d{3})
Wijzigen in:
xx
Uitleg gemaakt met InDesign script: WhatTheGrep.js
2. Decimaalkomma’s in afmetingen vervangen door een punt
Een decimaalkomma in een afmeting heeft minimaal 1 cijfer ervoor en minimaal 1 cijfer erna. Daarna kan een spatie volgen (maar dat hoeft niet). Als laatste volgt een eenheid. In mijn geval was dat cm, mm, in, x, *. Je kunt zelf natuurlijk nog andere eenheden toevoegen zoals km, dm, ft, etc.
Een willekeurig cijfer
gevolgd door een komma
gevolgd door één of meer willekeurige cijfers
gevolgd door misschien een spatie
gevolgd door een eenheid (cm|mm|in|x|*)
Ik zoek alleen de komma en niet de cijfers en alles wat daarachter staat. De cijfers en eenheden hebben alleen met de voorwaarde te maken.
In GREP levert dit de volgende zoekstring op:
Zoeken naar:
(?<=\d),(?=\d+ *(cm|mm|in|x|\*))
Wijzigen in:
.
3. Decimaalkomma’s in valuta vervangen door een punt
Valutagetallen hebben altijd een valutateken ervoor (€, $ of £). Daarna misschien een spatie. Een decimaalkomma in valuta heeft minimaal 1 cijfer ervoor en exact 2 cijfers erna. Omdat we eerder de punt in de duizendtallen vervangen hadden door ‘xx’ zoeken we evt. naar getallen met ‘xx’ ertussen.
Een valutateken (€£$)
gevolgd door misschien een of meer spaties
gevolg door één of meer keren een willekeurig cijfer of ‘xx’
gevolgd door een komma
gevolgd door exact twee cijfers of een liggend streepje (lang of kort)
Ik zoek alleen de komma en niet de valutatekens of de cijfers. Die hebben alleen met de voorwaarde te maken.
In GREP levert dit de volgende zoekstring op:
Zoeken naar:
[€£$] *(\d|xx)+\K,(?=(\d{2}|[-~=~_]))
Wijzigen in:
.
4. Decimaalkomma’s in alle overige getallen vervangen door een punt
Een decimaalkomma in getallen heeft minimaal 1 cijfer ervoor en minimaal 1 cijfer erna. Omdat we eerder de punt in de duizendtallen vervangen hadden door ‘xx’ zoeken we evt. naar getallen met ‘xx’ ertussen.
Eén of meer keren een willekeurig cijfer of ‘xx’
gevolgd door een komma
gevolgd door minimaal 1 cijfer
Ik zoek alleen de komma en niet de cijfers. Die hebben alleen met de voorwaarde te maken.
In GREP levert dit de volgende zoekstring op:
Zoeken naar:
(\d|xx)+\K,(?=\d{1,})
Wijzigen in:
.
5. Duizendtallen voorzien van een komma
De tijdelijke ‘xx’ van de duizendtallen moeten worden omgezet naar een komma. Simpelweg zoeken naar ‘xx’ en die veranderen in een komma is gevaarlijk. Wie weet wordt er ergens in de tekst wel gebruik gemaakt van xx of meer x’en. De ‘xx’ die ik zoek heeft sowieso 1 cijfer vóór zich staan en exact 3 cijfers erachter, zonder spaties. Uitgeschreven:
Een willekeurig cijfer
gevolgd door ‘xx’
gevolgd door exact drie cijfers
Ik zoek alleen de ‘xx’ en niet de cijfers. Die hebben alleen met de voorwaarde te maken.
In GREP levert dit de volgende zoekstring op:
Zoeken naar:
(?<=\d)xx(?=\d{3})
Wijzigen in:
,
Klaar
Tja, heel handig allemaal. En het werkt. Maar het zijn wel veel handelingen. Vijf keer ‘Zoeken/wijzigen’ … met codes. Je kunt ze natuurlijk opslaan als voorinstelling in je zoekvenster. Maar dan is het nog steeds (te) veel werk. Met ook nog de kans dat je de zoekacties in de verkeerde volgorde doet…
Het kan nóg handiger én sneller
Ik heb zelf een script geschreven dat al deze ‘Zoeken/wijzigen’ acties allemaal achter elkaar uitvoert. Van EU naar UK/US schrijfwijze… en eentje van UK/US terug naar EU schrijfwijze!
Wil jij deze InDesign-scripts ontvangen? Stuur een e-mail met je naam en telefoonnummer naar advies@rolandmol.nl
Echt fascinerend, goed werk en veel dank voor het delen van de uitstekende details.
Graag gedaan, en zoals gezegd: als je het script zou willen ontvangen om alles in één keer goed om te zetten van EU naar US of van US naar EU… stuur mij een mailtje en ik zend ’m je toe.
Great and also amazing blog. I truly wish to thanks, for providing us better details.