Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
skenerista, osvitář
Adobe InDesign CS3 zblízka: GREP
4. září 2007, 00.00 | Jednou ze zásadních, byť na první pohled nenápadných novinek v InDesignu CS3 je rozšíření funkce hledání a záměn v textu o podporu technologie GREP, resp. regulárních výrazů. Zvládnout GREP není úplně snadné, ale výsledek stojí za to, protože s pomocí tohoto nástroje lze v textu provádět skutečně rozličná kouzla, ať už se to týká oprav, formátování nebo dalších speciálních úprav. Podrobnější popis možností dané funkce, včetně praktických ukázek, naleznete v tomto článku.
Nástroje pro hledání a nahrazování textu patří v případě aplikací pro počítačovou sazbu k jedněm z nejčastěji používaných prostředků. V podstatě v každé publikaci je totiž třeba korigovat různé prohřešky proti typografickým normám, často se pak stává, že se třeba až na poslední chvíli musí v textu, někdy i na mnoha místech, aktualizovat, respektive změnit údaje typu jména, telefonního čísla, ceny apod., typickým úkolem je rovněž jednotné formátování textových řetězců určitého typu (například e-mailové či webové adresy, jmen apod.). Hromadné hledání a nahrazování může být v takovýchto i dalších případech neocenitelným pomocníkem, který je nesrovnatelně rychlejší a obvykle i spolehlivější nežli manuální úpravy.
Vysoce užitečným nástrojem pro všechny, kdo se často potýkají s naznačenou problematikou, je nové rozšíření hledací funkce Adobe InDesignu CS3 o podporu technologie GREP, dovolující při hledání a nahrazování textu používat tzv. regulární výrazy. Jak daná funkce pracuje a k čemu všemu může být dobrá? To jsou otázky, na které bychom rádi odpověděli v tomto článku.
Co je GREP?
Původně se pod označením grep skrývala z příkazového řádku spravovaná utilita, určená ke zpracování textu v různých unixových systémech (blíže viz například příslušné heslo Wikipedie). K hledání a záměnám textového obsahu je v tomto softwaru použito jazyka regulárních výrazů. S nástupem dalších operačních systémů (a grafického rozhraní) grep ani jeho algoritmy neztratily na významu. Jednak vznikla řada jeho derivátu právě pro tyto systémy a dále byly jeho funkce či podpora zpracování na bázi regulárních výrazů zabudovány do různých programovacích či skriptovacích jazyků (JavaScript, Perl, Tk aj.). V současnosti je přitom použití grep technologie stále velmi významné nejen při správě operačního systému (prohledávání, analýza či transformace konfiguračních souborů, systémových protokolů aj.), ale zejména v serverových technologiích užívaných při webovém publikování (skripty pro zpracování textového vstupu od uživatelů, správu serverových zdrojů aj.), zpracování na bázi regulárních výrazů se pak hodí a je podporováno zejména v textových editorech či procesorech nebo utilitách pro hromadné zpracování textu. Za svou oblibu a rozšířenost přitom grep vděčí právě použití regulárních výrazů, jež dovolují velmi sofistikovaně a komplexně popsat sadu hledaných textových řetězců i způsob jejího zpracování (záměny).
Skutečnost, že Adobe přišla s podporou GREP, resp. regulárních výrazů, tedy znamená především novou kvalitu při hledání a nahrazování textu, pro které bylo zatím v uživatelském prostředí daného programu možno nasadit pouze zástupné znaky (metaznaky), což pro mnoho typických textových záměn nedostačuje. Jinou věcí je, že sofistikovanější náhrady bylo i dříve možno v InDesignu řešit s pomocí skriptování, v případ nasazení JavaScriptu k danému účelu i s použitím regulárních výrazů - více jsme se danou problematikou zabývali podrobněji v našem seriálu o skriptování InDesignu. Skriptování nicméně vyžaduje znalosti z oblasti programování a nelze si jej osvojit úplně rychle, zatímco GREP je v InDesignu CS3 zabudován organicky do vyhledávacího dialogu daného programu a je výrazně snazší ke zvládnutí.
I přes uvedené zjednodušení je ovšem stále třeba, aby uživatel zvládal syntaxi regulárních výrazů. To není tak úplně snadné. Nicméně protože grep a regulární výrazy jsou zde již od časů počítačové prehistorie a jsou přitom významně využívány i v dnešní době (viz výklad výše), může mnohdy uživatel InDesignu často sáhnout po připravených vyhledávacích výrazech a tyto přímo či s drobnými modifikacemi použít pro své potřeby.
Tolik k technologii obecně. Pojďme se nyní podívat na její implementaci v prostředí InDesignu CS3.
GREP v InDesignu CS3
Funkce GREP je uživateli dostupná přes dialog vyhledávací funkce vyvolaný příkazem Úpravy-Hledat a nahradit (klávesové zkratka Ctrl+F/Option+F). V dialogu se nyní vedle dřívější záložky pro textové záměny a záložky GREP nachází rovněž záložky dalších nových nástrojů pro náhrady glyfů a objektů (jejich použití bychom se rádi věnovali někdy příště).
Na záložce GREP se v poli Hledat zadává výraz určující hledané řetězce, v poli Změnit na se pak určuje způsob, jakým mají být vyhledané řetězce zaměněny. Pokud do daného pole uživatel nic nevyplní a zadá příkaz k náhradě, dojde k odstranění vyhledaných řetězců z dokumentu. Regulární výrazy pak lze zadávat buďto manuálně nebo je možné jejich sestavení s pomocí seznamů přístupných prostřednictvím tlačítek na boku uvedených polí (Speciální znaky pro hledání/nahrazování). K dispozici jsou přitom nejen prostředky pro obvyklé regulární výrazy (včetně tzv. Posix rozšíření), ale také odpovídající symbolická vyjádření pro speciální znaky, proměnné a další prvky (např. zalomení sloupce či rámečku, konec vnořeného stylu aj.) specifické pro InDesign.
Dalším specifikem oproti obvyklým regulárním výrazům je možnost určit způsob formátování hledaného a zaměňovaného řetězce v odpovídajících polích. Dále pak lze - stejně jako u vyhledávacích funkcí pro jiný typ obsahu - flexibilně stanovit rozsah, kterého se má zpracování týkat (opět významné rozšíření oproti dřívější vyhledávací funkci předchozích verzí InDesignu). V poli Prohledat lze takto určit, zda se prohledání vztáhne na celý aktuální dokument, všechny dokumenty otevřené v InDesignu, aktuální článek, text do konce článku či aktuální výběr. Rozšířená kritéria, mající podobu odpovídajících tlačítek, pak dovolují rozsah hledání rozšířit i na uzamčené vrstvy či články, skryté vrstvy, vzorové stránky nebo poznámky pod čarou. Samotné hledání pak lze řídit s pomocí obvyklé série tlačítek (Hledat, Nahradit, Nahradit vše apod.).
Dotazy
Stejně jako ostatní vyhledávací nástroje InDesignu zmíněné výše dovoluje i GREP uložit nastavení vyhledávání pro opakované použití v podobě tzv. dotazu. Zvláště v tomto případě se jedná o vysoce užitečnou možnost, protože vytvořit regulární výraz, resp. tento rekonstruovat s odstupem času nemusí být rozhodně snadné.
Tvorba dotazu je jednoduchá: poté co má uživatel nastaveny všechny volby vyhledávacího dialogu podle svých požadavků, klepne na panelu GREP na tlačítko Uložit dotaz a zadá název dotazu. Poté je dotaz uložen. Dotazy pak lze aplikovat tím způsobem, že se v seznamu Dotaz vybere odpovídající název dotazu, následně se automaticky nastaví příslušné volby. Pokud chce uživatel dotaz odstranit, nejprve jej vybere a poté stiskne tlačítko Odstranit dotaz.
Poměrně překvapivě nenabízí Adobe pro dotazy daného typu úplně jednoduchý způsob jejich přenosu mezi počítači. Namísto, aby byla k dispozici odpovídající volba pro import a export je třeba případný přenos řešit přenosem odpovídajících XML konfiguračních souborů. Tyto se nachází jak na destinaci společné pro všechny uživatele dané instalace InDesignu, tak i na umístění, odpovídajícím přihlášenému uživateli v systému. Ve Windows XP se takto kupříkladu při standardní instalaci nachází podle našeho zjištění společné dotazy pro GREP ve složce
Program Files\Adobe\Adobe InDesign CS3\Presets\Find-Change Queries\GREP\ |
a dotazy pro jednotlivé uživatele pak ve složce
Document and Settings\[jméno uživatele]\Data aplikací\Adobe\InDesign\Verze 5.0\Find-Change Queries\GREP\ |
Umístění dotazů pro ostatní podporované operační systémy (Mac OS X, Windows Vista) lze dohledat v nápovědě InDesignu (kde mimochodem popis umístění pro XP neodpovídá naši konfiguraci, vždy je ale možno v daném operačním systému nechat vyhledat složku Find-Change Queries). Dotazy se v prostředí InDesignu zpřístupní ihned po jejich nahrání, tj. není zapotřebí restart dané aplikace.
Za zmínku pak v souvislosti s dotazy stojí ještě skutečnost, že s InDesignem CS3 je dodáváno několik ukázkových dotazů určených pro GREP. Tyto lze použít například k převodu pomlček či transformaci zápisu telefonních čísel v dokumentu.
Ukázky
Syntaxe regulárních výrazů je značně komplexní a pokoušet se v tomto článku o její - byť třeba jen rámcové - nastínění nebudeme. Zvídavého čtenáře zde můžeme odkázat na nápovědu InDesignu, odpovídající heslo Wikipedie, ve kterém lze najít odkazy na další relevantní informační zdroje, a nebo též náš výklad o regulárních výrazech, spojený se skriptováním InDesignu. I bez těchto teoretických základů bude možná pro leckterého čtenáře inspirativní následujících několik ukázek použití dané technologie. Netvrdíme pak, že minimálně některé z dále uvedených příkladů nelze řešit s pomocí normální funkce pro textové záměny, tedy s použitím metaznaků, regulární výrazy ovšem bývají obvykle flexibilnějším a účinnějším nástrojem. Dále uvedené příklady nemusí nutně fungovat za všech situací, mnohý regulární výraz lze zapsat různými způsoby pro tentýž výsledek, rozhodně pak doporučujeme záměny zkoušet na zálohovaných dokumentech!
Čištění textu
GREP může hodně napomoci tomu, aby se v textu opravily řetězce, jež neodpovídají typografickým normám, resp. narušuji formální či vizuální bezchybnost dokumentu. Pojďme se podívat na několik typických transformací.
Vícenásobné mezery na jedinou mezeru:
Hledat: [~m~>~f~|~S~s~<~/~.~3~4~% ]{2,}
Změnit na: \s
Více konců odstavce na jeden:
Hledat: ~b~b+
Změnit na: \r
Mezery před interpunkčními znaménky::
Hledat: \s+([.,:;\!\?])
Změnit na: $1
Poznámka: Některé symboly mají v regulárních výrazech speciální význam a proto je třeba před ně vložit obrácené lomítko, pokud chceme ve výrazu odkazovat přímo na ně. Při nahrazení je v tomto příkladu využito tzv. skupin (viz výraz $1 použitý při záměně, v poli Hledat je definice skupiny uzavřena do kulatých závorek).
Jednoznakové předložky:
Hledat: (\<[szkvaiouSZKVAIOU])[ ]+
Změnit na: $1~S
Převody
Regulární výrazy je dále možno použít i k různým převodům nesprávně zapsaných údajů. V poli Změnit na formát lze přitom nastavit znakový styl, kterým můžeme rovnou při opravě vytvořený řetězec formátovat.
Změna zápisu PSČ z tvaru XXXXX na XXXpevnámezeraXX:
Hledat: \b(\d{3})(\d{2})\b
Změnit na: $1~s$2
Formátování e-mailových adres a URL
Zajímavá je možnost použít regulárních výrazů k nalezení řetězců typu e-mailové adresy či URL (tedy webového odkazu) v dokumentu a jeho následnému stylizování pomocí znakového stylu. Dále uvedené regulární výrazy jsou přitom jedny z mnoha možných, jež lze pro daný typ obsahu použít.
Formátování e-mailové adresy znakovým stylem E-mail:
Hledat: ([a-zA-Z_.]+@[a-zA-Z_.]+)
Změnit na: ponechat prázdné
Změnit na formát: znakový styl E-mail (musí být definován)
Formátování URL znakovým stylem URL:
Hledat: (http:\/\/[a-zA-Z_.]+)
Změnit na: ponechat prázdné
Změnit na formát: znakový styl URL (musí být definován)
Formátování tagovaného textu
Náhrady lze efektivně použít k formátování textu, ve kterém jsou formátovací charakteristiky vyznačeny značkami - tagy, ať už zde hovoříme o HTML, nebo též třeba tagovaném textu PageMakeru, QuarkXPressu nebo InDesignu či makrech TeXu. Samozřejmě, pokud je použito v textu použito vícero druhů značek, je třeba provést celou sérii záměn, zde může pomoci skriptování, o kterém hovoříme dále.
Formátování řetězce vyznačeného HTML tagy <b> a </b> znakovým stylem "Tučný" (tagy se zároveň odstraní z dokumentu):
Hledat: <b>(.*?)<\/b>
Změnit na: $1
Změnit na formát: znakový styl Tučný (musí být definován)
Formátování řetězce vyznačeného makrem LaTeXu \bf{} znakovým stylem "Tučný" (zápis makra se odstraní z dokumentu):
Hledat: \\bf\{([^\}]+)\}
Změnit na: $1
Změnit na formát: znakový styl Tučný (musí být definován)
GREP a skriptování
GREP může být využit velmi efektivně v případě nasazení skriptování. Týká se to především situací, kdy potřebujeme provést v dokumentu hned celou sérii záměn, typicky například čištění textu nebo převod textu obsahujícího tagy. Co je pak možná ještě zajímavější, podpora tzv. událostí (events) ve skriptovacím modelu InDesignu CS3 dovoluje spouštět skripty - tedy i ty, jež používají GREP - v případě určité akce provedené v InDesignu uživatelem. Konkrétně je takto možno nechat skript spustit například při každém otevření či uložení dokumentu nebo též importu textového obsahu. Využití v případě GREPu se zde naskýtá například v případě čištění textu nebo provedení určitých netradičních kontrol (například výskyt zdvojených slov v dokumentu, číselných či jiných hodnot uvedených v nesprávném formátu apod.), které se takto provede jak při otevření dokumentu či importu textového obsahu, tak třeba při každém uložení. Jedná se o hodně zajímavou možnost automatizace zpracování, kterou hodláme zanedlouho probrat podrobněji ve zvláštním článku.
Závěrem
Tolik zatím k použití funkce GREP. Přivítáme, pokud se čtenáři v diskusním fóru tohoto článku podělí o své vlastní zkušenosti s používáním funkce GREP a případně třeba i uvedou vlastní regulární výrazy, které při práci s danou funkcí používají.
Tématické zařazení:
» Rubriky » Polygrafie
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
5. ledna 2017
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
10. prosince 2024