Czym są kody GREP? Jak usprawnić pracę, korzystając z opcji ZNAJDŹ-ZASTĄP i zakładki GREP? Jeśli interesuje Cię tematyka składu – zapraszam do lektury artykułu.
GREP – co to jest?
Nazwa GREP pochodzi od angielskiego wyrażenia global regular expression parser (globalny analizator wyrażeń regularnych). To wyrażenia regularne, które możemy łączyć w różnorakie formuły, usprawniając pracę z tekstem. Warto wiedzieć, że chociaż o kodach GREP i wyrażeniach regularnych mówi się głównie w kontekście programu InDesign i składu, również podczas prac w edytorach tekstu z tych części tych kodów można korzystać.
Znajdź/Zastąp w pracy redaktora
Warto bardzo ostrożnie korzystać z funkcji Zamień wszystko. Niech pierwszy rzuci kamień ten, komu nigdy nie zdarzyła się pomyłka przy zmianie, dajmy na to, skrótu „r.” na „rok/roku”… Tak, pamiętam teksty z kwiatkami w stylu „repertuaroku.” czy „wieczóroku.”. Umiejętne korzystanie z wyrażeń regularnych pozwala uniknąć takich sytuacji.
Niestety – nie może być za łatwo. O ile większość wyrażeń regularnych stosowanych w InDesignie działa w programie Libre Office… To z Wordem już tak różowo nie jest. W okienku „Zaawansowane znajdowanie i zamienianie” możemy, owszem, skorzystać z symboli wieloznacznych. Są one jednak inne i w oficjalnym supporcie trudno doszukać się nawet wzmianki o tej funkcjonalności. Dlatego też skomplikowane operacje na tekście i globalne zamiany wolę wykonywać w InDesignie. W Wordzie ograniczam się do zmian zwielokrotnionych spacji, dywizów na półpauzy itp. czy np. zamiany skrótów na rozwinięte formy (i na odwrót).
W redakcji narzędzie Znajdź/Zamień znajduje zastosowanie zwłaszcza w przypadku ujednoliceń. Bardziej zaawansowane zamiany z reguły wykonuję już w programie InDesign podczas składu lub w ramach czyszczenia tekstu, jeśli jest taka potrzeba.
Podstawowe symbole w GREP i ich wyjaśnienie
O podstawowych, najczęściej używanych przeze mnie znacznikach mówię w darmowej lekcji z kursu Skład dla redaktora. Film Wprowadzenie do GREP znajduje się na YouTube .
Zamiany w InDesign – GREP
Aby budować podstawowe komendy w InDesign – nie potrzebujemy znać metaznaków na pamięć. Możemy wybrać interesujące nas znaki z listy rozwijanej:
\
Jest kilka ciekawych możliwości, które niekoniecznie są widoczne na pierwszy rzut oka. Jeśli zrozumiemy, jak metajęzyk działa, będziemy w stanie odszukać w tekście bardzo wiele specyficznych, powtarzalnych miejsc i sytuacji. Warto wyjaśnić sobie kilka wzorców, które ilustruje poniższa tabela.
Kryteria wyszukiwania | Wyrażenie GREP | Przykład |
---|---|---|
Klasa znaków | [] | Wpisz następujące polecenie, aby znaleźć a, b lub c: [abc] |
Ujemne wybieganie naprzód | (?!wzór) | Za pomocą tej wartości można uniknąć określonego wzorca wyszukiwania. Na przykład, aby uniknąć wyszukiwania wersji InDesign CS z listy wersji InDesign, wpisz: InDesign (?!CS.*?) |
Dodatnie wybieganie naprzód | (?=wzór) | Za pomocą tej wartości można znaleźć określony wzór. Na przykład, aby znaleźć TYLKO wersje InDesign CS z listy wersji InDesign, wpisz: InDesign (?!CS.*?) [Mój przykład – poniżej] |
Wł. nieuwzględnianie wielkości liter | (?i) | Służy do wyszukiwania tekstu niezależnie od wielkości liter. Na przykład, jeśli chcesz znaleźć Apple w dowolnym zapisie wielkości liter (apple, APPLE itd.), wpisz następujące polecenie: (?i)jabłko [Ja używam tego kodu np. przy wyszukiwaniu zawieszek]. |
Wył. nieuwzględnianie wielkości liter | (?-i) | Służy do znajdowania tekstu z rozróżnianiem wielkości liter. Na przykład, jeśli chcesz wyszukać tylko firmę Apple (nie apple, APPLE itd.), wpisz następujące polecenie: (?-i)jabłko |
Znajdź znak lub słowo określoną liczbę razy | { } | Wpisz dowolną z poniższych opcji, aby wyszukać powtarzający się numer znaku lub wyrazu: b{3} — dokładnie 3 razy b(3,} — przynajmniej 3 razy b{3,}? — dopasowanie TYLKO 3 razy b{2,3} — przynajmniej 2 razy i nie więcej niż 3 razy |
Tym, co będzie nas interesować, i jest bardzo przydatne podczas wyszukiwania specyficznych sytuacji np. aby ostylować dany akapit, jest wybieganie naprzód. Korzystam z tych funkcjonalności wtedy, gdy chcę np. zaznaczyć spację tylko jeśli ZA NIĄ znajduje się, przykładowo, skrót, którego nie chcę oddzielać od jednostki. Mielibyśmy zatem taki zapis:
\x{20}(?=cm|mm|m)
\x{20} – spacja, równie dobrze możemy wpisać z palca z klawiatury. \x sygnalizuje, że będziemy odwoływać się do szesnastkowego zapisu znaków (tabelę z kodami znajdziemy m.in. na stronie algorytm.edu.pl).
Jak zaznaczymy już te spacje, możemy nadać im atrybut „bez dzielenia”:
Lub wpisać taki kod w styl akapitowy (w sekcji Styl GREP) ze stylem znakowym z atrybutem bez dzielenia.
Innym przydatnym znacznikiem do takich kombinacji jest “\K”. Dzięki niemu program zaznaczy dopiero to, co znajdzie się za tym metaznakiem. Bardzo często z niego korzystam. Dla przykładu: wyobraźmy sobie, że mamy wiele znaczników końca akapitu pod sobą (puste entery). Chcemy, aby po takiej przerwie, zawsze pierwszy akapit był bez wcięcia. Jak można to zrobić? Na przykład – właśnie korzystając ze znacznika \K.
W polu znajdź: \r{2,}\K. (enter powtórzony raz lub więcej razy i występujący po tych enterach dowolny znak)
W polu zamień: [pusto]
Zmień format: *wybieramy właściwy dla akapitu bez wcięcia styl akapitowy*
Kilka innych przykładów zamian przy pomocy GREP:
- Wiele spacji na jedną spację
Podstawowa zamiana. Jak to często bywa – wszystkie drogi prowadzą do Rzymu, bo jest kilka sposobów na osiągnięcie tego celu. Najprostszy: wystarczy w polu Znajdź wstawić z klawiatury dwie spacje, w Zamień jedną i klikać “Zamień wszystko” – do skutku, aż liczba znalezionych elementów będzie równa 0.
Jeżeli chcemy zamienić wszystkie powielone spacje na jedną za jednym kliknięciem, możemy skorzystać w InDesignie z wyrażeń regularnych.
Opcja ta działa również w LibreOffice
Znajdź: \x{20}{2,}
Zamień: *wpisujemy spację z klawiatury*
Co oznacza ten tajemniczy zapis? \x{20} to, jak już pisałam, po prostu spacja. {2,} to – zgodnie z powyższą tabelą – ‘powtórzone dwa lub więcej razy’.
- Zamiana wieku na w.
Jako inny przykład zmiany z wykorzystaniem wyrażeń regularnych weźmy następującą sytuację: musimy zamienić wszystkie występujące w tekście po cyfrach rzymskich wyrazy “wieku” na skrót “w.”. Jak możemy to zrobić, by zmieniły się tylko te miejsca, które chcemy? Sposobów będzie kilka. Sprawdziłam, że zarówno w InDesignie, jak i Libre Office zadziała następujący, składający się z dwóch kroków:
- Znajdź: (\b[IVXLM]{2,}\b) \wieku\.
Zamień: $1~Sw. - Znajdź: (\b[IVXLM]{2,}\b) \wieku
Zamień: $1~Sw.
Co te kody oznaczają? Najpierw szukamy: \b – początek wyrazu [IVXLM]{2,} – składającego się ze znaków IVXLM powtórzonych 1 lub więcej razy \b – koniec wyrazu i całość w nawiasie, czyli traktowane jako jedno wyrażenie. Następnie mamy spację – wpisaną z klawiatury i – \wieku\. czyli nasz wyraz zakończony \. – kropką. (sama kropka w metajęzyku oznacza dowolny znak, dlatego musimy poprzedzić ją znakiem “\” – by było wiadomo, że chodzi faktycznie o kropkę).
Pole zamień to $1 – znaleziono 1 – ten fragment znalezionego tekstu, który odpowiada metaznakom ujętym w nawiasie okrągłym. Następnie ~S – twarda spacja i nasze “w.”.
Lista używanych przeze mnie kodów i propozycje, które kody warto wpisać w style akapitowe, znajduje się w materiałach Skład dla redaktora. Zapraszam również do obejrzenia filmu, w którym pokazuję kilka wyrażeń i wyjaśniam ich działanie.