Pokazywanie postów oznaczonych etykietą grep. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą grep. Pokaż wszystkie posty

piątek, 4 marca 2011

GREP w InDesign

Z przyjemnością informuję, że na polskim rynku ukazała się książka „GREP w InDesign” autorstwa Marka Włodarza. Jest mi tym bardziej miło, że mam w tym przedsięwzięciu swój wkład, choć naprawdę niewielki. Oto fragment przedmowy:
Począwszy od wersji CS3, Adobe InDesign dysponuje potężnym narzędziem edycyjnym - wyszukiwaniem i zastępowaniem tekstu przy użyciu wyrażeń regularnych. Nie da się przecenić wynikającej stąd możliwości zautomatyzowania zadań, które dotąd można było wykonać tylko ręcznie lub zewnętrznymi narzędziami.
Wyrażenia regularne są jednak na tyle złożone, że trudno z nich skorzystać bez przygotowania i nauki. Sam InDesign jest praktycznie pozbawiony wskazówek na ten temat, a i niewiele więcej można znaleźć w dostępnych podręcznikach. Książka ta ma na celu wypełnić tę lukę.
Choć zamieściłem w niej dziesiątki przykładów, książka nie zawiera (i nie może) rozwiązań wszystkich problemów, które można napotkać przy pracy nad tekstem. Wskazuje jednak kierunki, w których można szukać tych rozwiązań, a także niebezpieczne rafy i mielizny, które trzeba się nauczyć omijać.
W trzy dni wykonać pracę, która dotychczas zajmowała trzy tygodnie? Tak, to jest możliwe, a przedstawione w książce koncepcje i narzędzia stanowią część rozwiązania.
Szczegóły są dostępne na stronie wydawcy. Książkę zamierzam przeczytać w najbliższym czasie, więc spodziewajcie się recenzji :)

poniedziałek, 2 lutego 2009

Wiszące spójniki w ID CS4

W ID CS4 pojawiło się nowe narzędzie - tzw. GREP styles. Jest bardzo potężny mechanizm pozwalający na nadawanie stylów znakowych „w locie” tekstom które pasują do danego wzorca GREP. W bardzo łatwy sposób można wykorzystać je do usuwania wiszących spójników.


Wyrażenie GREP, które znajdzie owe spójniki jest, rzecz jasna, takie samo jak w CS3:

(\b)(a|i|o|u|w|z)(\b\s)

Należy wprowadzić je w okienku GREP styles w opcjach akapitu:



Klikamy na „New GREP Style”. W liście stylów GREP pojawi się nowy element:



Przez kliknięcie na nim przechodzimy do jego edycji. Najpierw wybieramy styl który chcemy nadać — albo już istniejący (definiujący tylko jeden atrybut: „No Break”) albo nowy (przez opcję „New Character Style...”).
Następnie w polu „To Text:” umieszczamy wyrażenie GREP wyszukujące zawieszone spójniki:

poniedziałek, 5 maja 2008

Wiszące spójniki w CS3

Tekst archiwalny, opublikowany także na stronie polskiej Adobe User Group

Jak zmusić ID do niełamania wiersza w określonych miejscach? Można użyć twardej spacji (zły pomysł - w CS2 ma stałą szerokość) albo nadać tekstowi atrybut No Break. Ale robić to ręcznie dla spójników? Przecież to coś powtarzalnego, coś co da się zdefiniować w regułę; komputery są stworzone do tego rodzaju zadań. Pewnie dlatego istnieją przynajmniej trzy polskie skrypty, rozwiązujące tego rodzaju problemy.

Nowa wersja ID przyniosła wiele zmian - między innymi znaną z innego oprogramowania justowalną twardą spację a także zupełnie nowy system wyszukiwania.[Rys. 1]. Niestety, przy okazji, ulepszenia popsuły obsługę skryptów przeznaczonych dla wcześniejszych wersji. Stare, dobre rozwiązania mogą przestać działać.


Rys. 1

Jak widać nowe okienko wyszukiwania ma teraz kilka zakładek. Dla nas najważniejsza jest zakładka GREP, pod którą kryje się wyszukiwanie oparte na wyrażeniach regularnych. Wyrażenia regularne (ang. regular expression, w skrócie regex) to bardzo silne narzędzie służące do przeszukiwania tekstu oraz ewentualnych zmian z wykorzystaniem odnalezionych fragmentów. Bardziej zainteresowanym polecam artykuł na wikipedii (http://pl.wikipedia.org/wiki/Wyrażenie_regularne). Zawarte tam informacje powinny pomóc w zrozumieniu podanego tu rozwiązania. Co dość ważne, Adobe na całe szczęście nie stworzył nowego standardu regexów i przyjął składnię stosowaną przez unixowe narzędzie nazywające się. grep (zaskakujące, nieprawdaż?)

Chcemy, by po każdym jednoliterowym spójniku znalazła się taka spacja, która nie będzie się dzieliła na końcu wiersza. W ID CS3 możemy osiągnąć ten cel na dwa sposoby: albo stosując zwykłą spację z atrybutem NoBreak, albo używając nowej twardej justyfikowalnej spacji. Najpierw ustalmy gdzie chcemy mieć taką spację: po spójnikach 'a', 'i', 'o', 'u', 'w', 'z'.

Zapisując to za pomocą wyrażenia regularnego (nawiasy tworzą tzw. grupy, które za chwilę nam się przydadzą):

(\b)(a|i|o|u|w|z)(\b\s)

Wyrażenie to mówi dokładnie: znajdź wszystkie takie miejsca gdzie zaczyna się nowy wyraz (pierwszy nawias), a dokładniej gdzie jest któraś z liter 'a', 'i', 'o', 'u', 'w', 'z' (to w drugim nawiasie) a po niej koniec wyrazu i spacja (trzeci nawias).

W ten sposób znajdziemy wszystkie potencjalne wiszące spójniki. To jednak dopiero połowa sukcesu - przecież zamianę też chcemy zautomatyzować! Tutaj przydają się nam grupy. Grupa to każdy nawias; są one numerowane wg kolejności otwierania. Tak więc tutaj potrzebujemy grupy drugiej (wyszukany spójnik) a następnie spacji (czyli trzeciej grupy).


Rys. 2

Wybieramy więc [Rys 2.] menu specjalnych znaków (1), a następnie 'Found' -> 'Found 2' (2) i 'Found 3'. Ustawiamy dla tekstu podmieniającego atrybut 'no break' i odpalamy "Change all" [Rys 3.].


Rys. 3

Czy to wszystko? Oczywiście nie! Możemy przecież użyć twardej justyfikowalnej spacji zamiast spacji z atrybutem NoBreak. Wtedy w polu 'Change to' należałoby umieścić taki napis: '$2~S', a formatowanie wyczyścilibyśmy.

No tak, ale wklepać za każdym razem całe wyrażenie jest dość trudno, za to łatwo się pomylić. Adobe pomyślało i o tym. Możemy zapisać nasze wyszukiwanie klikając na ikonie dyskietki [Rys. 4], a potem nawet podzielić się nim z innymi, co i ja robię ;)


Rys. 4