Gymnázium Brno, třída Kapitána Jaroše, příspěvková organizace Formátování textu pomocí regulárních výrazů Závěrečná práce Vedoucí práce: Mgr. Marek Blaha Anna Řechtáčková Brno 2016
Děkuji Marku Blahovi za vedení a rady a Tomáši Bílkovi za AltSearch, protože bez něj bych neměla o čem psát. 2
3 Prohlašuji, že jsem tuto práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu. V Brně dne 12. března 2016....................................................
4 Anotace Má práce uvádí možnosti použití regulárních výrazů pro účely hromadných úprav textu, důraz je kladen na nejčastější typografické chyby a nedostatky. Klíčová slova: typografie; regulární výrazy; AltSearch Annotation My thesis shows the possibilities of using regular expressions for purposes of general text editing, my focus is on the most common typographical mistakes and flaws. Keywords: typography; regular expressions; AltSearch
Obsah Vysvětlivky k podobě výrazů a příkladů 7 Úvod 8 1 AltSearch a regulární výrazy 9 1.1 Co jsou regulární výrazy?............................ 9 1.1.1 Přehled základních metaznaků a jejich významu v AltSearch..... 9 1.2 AltSearch..................................... 11 1.2.1 Co je AltSearch?............................. 11 1.2.2 Jak ho získat?............................... 11 1.2.3 Jak vypadá?............................... 11 1.3 Dávky....................................... 14 1.3.1 Co jsou dávky?.............................. 14 1.3.2 Syntax................................... 14 2 Typografie 17 2.1 Co je typografie?................................. 17 2.2 Nejčastější problémy............................... 17 3 Formátování typografie textu 19 3.1 Všechny špatné znaky.............................. 19 3.2 Bílé znaky (horizontální)............................. 20 3.2.1 Ve špatných počtech........................... 20 3.2.2 Na špatných místech........................... 20 3.2.3 Nezlomitelné mezery........................... 23 3.3 Výpustky..................................... 25 3.4 Uvozovky..................................... 26 3.4.1 Dvojité, jednoduché uvozovky...................... 26 3.4.2 Uvozovky na řádku............................ 28 3.5 Špatně rozdělené odstavce............................ 28 3.5.1 Řešení s využitím malých písmen.................... 28 3.5.2 Řešení s využitím uvozovek....................... 29 3.5.3 Řešení s využitím odstavců oddělených prázdným řádkem...... 29 3.6 Ruční zalomení stránek............................. 30 3.7 Shrnutí do dávek................................. 31 5
6 4 Formátování bloků textu 32 4.1 Formátování názvů sekcí............................. 32 4.2 Formátování obrázků............................... 33 5 Limitace a alternativy 34 5.1 Limitace...................................... 34 5.1.1 Úpravy dle obsahu............................ 34 5.1.2 Datum................................... 34 5.2 Alternativy.................................... 35 5.2.1 typojtb.................................. 35 5.2.2 calibre................................... 35 Závěr 36
Vysvětlivky k podobě výrazů a příkladů Regulární výrazy a příklady ve své práci presentuji jistým způsobem, který bych, ještě před začátkem práce samotné, ráda objasnila. Každý výraz tedy vypadá takto: Nejstručnější shrnutí funkce výrazu výraz samotný (vysvětlivky k němu) Pokud je třeba výraz za něco nahradit, následuje další sekce: výraz samotný (vysvětlivky k němu) Pokud vysvětlivky chybí, tak proto, že se současný výraz významě podobá předchozímu a vysvětlení je tedy analogické. Některým výrazům, nebo skupinám výrazů, následuje i příklad jejich učinku. Takový příklad má následující formu: Zde se nachází text, na který byly výrazy aplikovány. Co je v rozporu s typografickými pravidly, je podbarveno červeně. Správná podoba je modře. 7
Úvod Vědecká práce musí být gramaticky i typograficky správně. Ke kontrole pravopisu slouží množství nejrůznějších programů, dosáhnout správné typografie je o poznání složitější. Pochybuji (a teď už nemluvím jen o vědeckých pracích), že by se někdo vyžíval ve vyhledávání předložek a spojek a vkládal za ně pevné mezery, nebo kontrolovat celý text, zda má vždy všude právě jednu mezeru, že se interpunkce příslušným způsobem přimyká ke slovům. Ne každý dokáže napsat správné české uvozovky, nebo výpustku. A proto mi představa, že se většina těchto problémů dá vyřešit několika kliknutími, připadá tak působivá. Ve své práci jsem se zaměřila na řešení typografických nedostatků pomocí regulárních výrazů. Mezi řešené problémy patří všechny výše zmíněné, a navíc opravy chyb vzniklých konverzí z PDF do editovatelného souboru (nesprávně rozdělené odstavce, ruční zalomení stránek) a také možnost upravení podoby názvů kapitol apod. v celém textu najednou. Vyhledávání regulárních výrazů však není běžnou součástí textových editorů. Ve své práci jsem využila makra AltSearch, volně dostupného rozšíření pro Libre- a OpenOffice. 8
Kapitola 1 AltSearch a regulární výrazy 1.1 Co jsou regulární výrazy? Regulární výraz (anglicky regular expression, zkráceně regex nebo regexp) jest posloupnost znaků, které obecně definují hledaný vzor. Jejich koncept v 50. letech minulého století představil americký matematik Stephen Kleene, jakožto formální popis regulárního jazyka. [1] Původní myšlenka se však velmi záhy rozrostla za hranice Kleeneho definice, takže regulární výrazy tak, jak jsou chápány nyní (někdy označovány jako rozšířené regulární výrazy), nepodléhají témuž teoretickému základu. [2] Nejčastěji se používají pro vyhledávání a řešení problémů v textu a manipulaci s ním, ke kontrole dat zadávaných do formulářů. Použití regulární výrazy v současné době umožňuje mnoho programovacích a skriptovacích jazyků (například Perl, Java, JavaScript, PHP, Python, C#) a editorů (awk, sed, vi atd.). [2, 3, 4] Existuje několik odnoží regulárních výrazů, nejznámější jsou POSIX (portable operating system interface for Unix) a Perl-compatible (z ní vychází balíček ICU Regular Expressions, užívaný i právě rozšířením AltSearch). [4, 5, 6, 7] 1.1.1 Přehled základních metaznaků a jejich významu v AltSearch To, co z regulárních výrazů dělá víc než jen Najít a nahradit jsou právě metaznaky (tj. znaky se speciálním významem). Mnoho z nich je popsáno přímo v dialogovém okně AltSearch. Některé z nich tedy popisují následující tabulky. Metaznak Význam Tabulka 1.1: Skupiny výrazů. Libovolný znak \l Libovolné pismeno \d Libovolná číslice \w Libovolný alfanumerický znak, podtržítko \s Bílý znak (mezera, tabulátor,... ) 9
1.1 Co jsou regulární výrazy? 10 Tabulka 1.2: Kvantifikátory Metaznak Význam Příklad * Výskyt žádný a víckrát pes* najde pesssssss i pe + Výskyt jeden a víckrát pes+ najde pesssssss i pes? Výskyt žádný nebo jedenkrát pes? najde pes i pe {n} Výskyt právě n-krát pes{3} najde pesss {n,} Výskyt n a víckrát ({,n} nefunguje) pes{3,} najde pesss i pesssssssss {n,m} Výskyt n až m-krát pes{1,3} najde pes, pess i pesss Metaznak Význam Tabulka 1.3: Hranice ^ Začátek odstavce $ Konec odstavce \< Začátek slova \> Konec slova \b Hranice slova (začátek, pokud je před řetězcem; konec, pokud je za ním) Tabulka 1.4: Závorky, seskupení, zpětné reference Metaznak Význam Příklad [ ] Libovolný znak z výčtu v závorkách le[dpk] najde led, lep i lek [^ ] [ - ] Libovolný znak kromě těch za stříškou Libovolný znak ze jmenovaného intervalu le[^dpk] najde lea, lez i le2, le# led, lep a lek nikoli le[a-k] najde lea, leb, lec atd. le[1-9] najde le1, le2, le3,... ( ) Seskupení; možnosti lze oddělit lá(va tka) najde láva a látka \n (V AltSearch pouze v nahrazení) Zpětná reference, odkazuje na obsah ntého nalezeného seskupení ne([a-z]+) najde nebyl, nechal, nemoc \1 je nahradí za byl, chal, moc Tabulka 1.5: Další metaznaky Metaznak Význam \p Znak \t Tabulátor \S Nezlomitelná mezera \n Ruční zalomení řádku \m Ruční zalomení stránky \ Ruší speciální význam znaků jako. * +? { } [ ] ( ) ^ $ \ Umožňuje několikanásobné nalezení (a nahrazení) & (Pouze v nahrazení) Nalezený text
1.2 AltSearch 11 1.2 AltSearch 1.2.1 Co je AltSearch? AltSearch, jinými slovy alternativní dialog pro hledání a nahrazení ve Writeru, je freeware rozšíření pro příslušnou součást OpenOffice nebo LibreOffice. Jeho tvůrcem je Tomáš Bílek. Vývoj probíhal v letech 2007 2014, poslední verze (1.4) je však stále kompatibilní se současnou verzí OpenOffice i LibreOffice. [5] V jádru je AltSearch makro (v tomto kontextu posloupnost akcí, funkcí nebo příkazů, které usnadňují určitou činnost ) napsané v jazyce StarOffice Basic. [8, 9] AltSearch umožňuje uživateli pokročilou práci s textem, oproti obyčejnému Najít a nahradit dokáže pracovat právě s regulárními výrazy, dokáže najít a nahradit blok obsahující více odstavců, umožňuje vyhledávání v rámci závorek, poznámek pod čarou, obrázků, tabulek a záložek. Je schopný vyhledávat konkrétní styly nebo atributy (kurzíva, tučné písmo, podtržení, indexy; podle velikosti písma, jeho barvy, barvy pozadí a mnoha dalších parametrů). [10] AltSearch podléhá licenci GNU Lesser General Public License (což ve zkratce znamená, že každý může AltSearch volně používat, kopírovat, šířit, dovoluje i měnit části kódu, pokud je dáno jasně najevo, které změny jsou cizí práce). Celá verze z roku 2007 je dostupná na adrese http://www.gnu.org/licenses/lgpl.html. Tato práce popisuje jen malou část jeho možností. 1.2.2 Jak ho získat? AltSearch je dostupný buď z oficiální stránky rozšíření pro LibreOffice, http:// extensions.libreoffice.org/extension-center/alternative-dialog-find-replacefor-writer, nebo z vlastní stránky tvůrce, http://mujweb.cz/macrojtb/altsearch_cs. html Instalaci 1 lze provést buď přímo dvojitým poklepáním na stažený soubor, nebo je možné spustit Writer, ve vrchní liště zvolit Nástroje Správce rozšíření. V nově otevřeném okně zvolit Přidat a z nabídky vybrat příslušný soubor (v systému Windows většinou ve složce Stažené soubory). Pro dokončení je třeba Writer restartovat. Ve Správci rozšíření je také možné rozšíření zakázat, nebo odstranit. Všechna nainstalovaná rozšíření lze také spustit přes Nástroje Rozšíření. 1.2.3 Jak vypadá? Při úspěšné instalaci se v nástrojové liště objeví ikona zeleného dalekohledu (obrázek 1.1). Při poklepání na ni se otevře dialogové okno (obrázek 1.2). Jeho možnosti popisují tabulky 1.6 až 1.9. 1 Dále je popisován postup pro LibreOffice, postup pro OpenOffice je však podobný. Samozřejmě je také nutné mít LibreOffice již nainstalovaný.
1.2 AltSearch 12 Obrázek 1.1: AltSearch, ikona Obrázek 1.2: AltSearch Tabulka 1.6: AltSearch, textboxy První textbox slouží k zadání hledaného výrazu Druhý textbox slouží k zadání výrazu k nahrazení
1.2 AltSearch 13 Tabulka 1.7: AltSearch, tlačítka Najít označí další výskyt hledaného výrazu za kurzorem Najít vše označí všechny výskyty hledaného výrazu kromě prvního Spočítat vrátí počet výskytů hledaného výrazu v dokumentu Nahradit nahradí jeden výskyt hledaného výrazu nahrazovaným Nahradit všechny nahradí všechny výskyty v dokumentu Načíst vlastnosti načte parametry výběru do vedlejší rolety? otevře soubor s pomocí Dávky» přepne na okno správy dávek (o nich později) Uložit dávku uloží aktuální dvojici hledaného a (volitelně) nahrazovaného výrazu i s nastavenými parametry Zavřít zavře dialogové okno Tabulka 1.8: AltSearch, rolety Regulární přehled některých regulárních výrazů Rozšířené vyhledávání složitějších jevů (tabulku, obrázek, výsledek přes několik odstavců, zúžení/rozšíření vyhledaného výrazu, vícenásobné nahrazení atd.) Atributy umožňuje vyhledávání dle atributů a stylů u prvního textboxu archivuje naposledy vyhledávané výrazy Nahradit přehled některých nestandardních nahraditelných výrazů (nalezený text, odstavec, pevná mezera, ruční zalomení, vysvětlivka, poznámka, obsah stránky atd.) u Načíst vlastnosti z rolety je možné vybrat konkrétní vlastnost a tu přiřadit nahrazovanému textu u druhého textboxu archivuje naposledy nahrazované výrazy
1.3 Dávky 14 Tabulka 1.9: AltSearch, checkboxy Rozlišovat velikost bude při vyhledávání rozlišovat velikost písma Zachovat vel(k)á písmena nahradí slova psaná / začínající na velké písmeno písmeny příslušné velikosti Pouze celá slova najde slova, která neobsahují nic než zadaný výraz Odstavcové styly vyhledává bloky textu, jejichž styl odpovídá zadanému Regulární výrazy umožní používat regulární výrazy Pouze současný výběr zajistí vyhledávání pouze ve vybraném bloku Pozpátku bude vyhledávat v intervalu od kurzoru k začátku dokumentu 1.3 Dávky 1.3.1 Co jsou dávky? Dávky jsou (v AltSearch terminologii) uložené parametry vyhledávání a nahrazování. Do jedné dávky je možné uložit i několik hledání a nahrazení za sebou. Správa dávek umožňuje dávky ukládat, upravovat a znova jednoduše vyvolat. Dialogové okno se otevře klepnutím na tlačítko Dávky» ve vyhledávacím okně (obrázek 1.3). Popisuje ho tabulka 1.10. AltSearch samotný obsahuje několik dávek, většinou se ale nebudu dále zabývat. 1.3.2 Syntax Dávky se ukládají do souboru AltSearchScript.txt, a to buď tlačítkem Uložit dávku, nebo si ho můžete otevřít a zapsat dívku přímo do něj. AltSearch samozřejmě vyžaduje správnou syntax, která je však popsána přímo v dokumentu, kam se dávky ukládají. Příkaz stojí přímo (až na bílé znaky) na začátku řádku a je uzavřený v hranatých závorkách. Mezery před ním se ignorují. Všechny znaky za ním, včetně mezer, jsou považovány za parametry. Zbytek popisuje tabulka 1.11.
1.3 Dávky 15 Obrázek 1.3: AltSearch, dávky Tabulka 1.10: Tlačítka Správy dávek Klávesové zkratky umožní nastavit klávesovou zkratku pro spuštění dávky Vícenásobné spuštění» pro spuštění dávky na více dokumentech Spustit spustí dávku (taktéž funguje doubleclick) Přenést přenese dávku do textboxů pro hledání a nahrazení Uložit dávku uloží aktuální dvojici hledaného a (volitelně) nahrazovaného výrazu i s nastavenými parametry Upravit otevře soubor AltSearchScript.txt pro úpravu dávek Občerstvit aktualizuje seznam dávek po změnách v AltSearch- Script.txt? otevře soubor s pomocí «Hledání přepne zpět na hlavní dialogové okno Zavřít zavře dialogové okno
1.3 Dávky 16 Příkaz Význam Tabulka 1.11: Příkazy Určuje název nové dávky, za ní následuje název, který se poté zobrazí v seznamu ve Správě dávek [Nazev] [Hledej] Následuje hledaný řetězec [Nahrad] Následuje nahrazovaný řetězec (volitelně) Ovládá příslušné checkboxy: Velikost ZachovatVelkaPismena CelaSlova StylyOdst Regularni Soucasny- Vyber Pozpatku [Parametry] Navíc nabízí dvě další možnosti: BezHlaseni potlačí většinu hlášení jednotlivých hledání BezSouhrnu potlačí i závěrečné hlášení Určuje způsob provedení, tedy: [Prikaz] Hledat, HledatVse, Spocitat, Nahradit, NahraditVse [Konec] Určuje konec poslední dávky ; Pokud je před příkazem, vše za ním je komentář
Kapitola 2 Typografie 2.1 Co je typografie? Slovo typografie dříve označovalo obecně tiskárenský průmysl, později jen grafickou úpravu tiskovin, nyní se s ním většinou setkáme v souvislosti s písmem, respektive naukou o něm, jeho zákonitostmi a správným užitím, zaobírá se prací s písmem a jeho uspořádáním, sazbou a kompozicí a tak dále. [12] Dodržování typografických pravidel učiní text přehlednější a čitelnější, lépe působí na čtenáře. [13] 2.2 Nejčastější problémy Existuje tedy několik základních nedostatků, které mohou text postihnout: Před.,?! ; : mezera není a za nimi následuje. Výjimkou pro tečku je číslování kapitol a podkapitol, webové adresy, přípony souborů, pro čárku desetinná čísla, pro dvojtečku poměr a další. [14] Závorky se od textu vně oddělují mezerou, od textu uvnitř nikoli. Pokud text v závorce zapadá do věty, tedy je její součástí, její obsah začíná malým písmenem (nejedná-li se o vlastní jméno apod.) a tečka následuje až za uzavírající závorkou (a vypadá to tedy takto). Pokud text v závorce jest větou samostatnou, začíná velkým písmenem a tečka je uvnitř. (Vypadá to tedy takto.) Pokud obsah závorky končí na zkratku, tečka je samozřejmě uvnitř. [15] Jednopísmenné předložky nesmí stát samotné na konci řádku. Je třeba vložit za ně nezlomitelnou mezeru. To samé platí i pro čísla (pokud oddělujeme tisíce mezerou, nesmí se mezi ně vetřít konec řádku) a jednotky (100 ml i 2 521 psů musí zůstat pohromadě). V tomto směru však pozor na značku %. 20 % jest dvacet procent, 20% znamená dvacetiprocentní. [15] Znak mnohdy používaný jako uvozovky (" je ve skutečnosti značka pro palcovou míru) s uvozovkami nemá mnoho společného. Správná podoba českých uvozovek je 99 dole a 66 nahoře. K textu jsou připojeny bez mezer a od okolí mezerou odděleny. Přímá řeč tedy vypadá takto. (Anglické uvozovky mají tvar 6699, obojí nahoře. So it looks like this. ) Mnoho textových editorů zaměňuje " za opravdové uvozovky automaticky. [16] 17
2.2 Nejčastější problémy 18 Dalším matoucím prvkem jsou spojovníky, pomlčky a mínusy. Znak na klávesnici - jest spojovník. Ten se používá pro naznačení dvou jevů na stejné úrovní (modro-bílá, kuchařčíšník, Tereza Malá-Velká, Brno-sever), oddělení -li (bude-li), v internetových adresách, při dělení slov na konci řádku atd. [17] Krátké (půlčtverčíkové) pomlčky se používají pro vyjádření rozsahu (linka Brno Praha, 1948 1989, 8 18 hod., červenec srpen), vztahu (pes kočka), u víceslovných místních jmen (Brno Černá Pole), ceny (200, ) nebo pro označení přestávky v řeči ( Já tě přetrhnu, ty nedobroto. ) [18] Někdy je možné se setkat ještě s dlouhou (čtverčíkovou) pomlčkou, místy používanou místo čárky. Mínus se používá výhradně v matematických rovnicích. [15] Jen srovnejte - Tři tečky... je vhodné nahradit jednoznakou výpustkou... ačkoli vypadají téměř identicky. [15] Toto všechno jsou tedy speciální znaky a většinu z nich není možné najít na klávesnici. Do textu je tedy lze dostat dvěma způsoby. V LibreOffice vybrat Vložit Speciální znak... a znak najít v seznamu. Ve Windows je možné zapsat speciální znak pomocí klávesy Alt (levý) a číselného kódu zadaného na numerické klávesnici (kódy popisuje tabulka 2.1). Tabulka 2.1: Speciální znaky, způsob vložení pro Windows Uvozovky 99 dolní Alt + 0132 Výpustka... Alt + 0133 Uvozovky 66 horní Alt + 0147 Krátká pomlčka Alt + 0150 Uvozovky 9 dolní Alt + 0130 Dlouhá pomlčka Alt + 0151 Uvozovky 6 horní Alt + 0145 Nezlomitelná mezera Alt + 0160 Je také vhodné celý text zarovnat do bloku (ve většině případů) a odsadit první řádek každého odstavce (ačkoli první odstavce v bloku odstavců by odsazený být neměl). Pokud tedy píšete kratší text, toto všechno se dá ohlídat a spravit ručně. Pokud pracujete s dokumentem rozsáhlejším, může se vám hodit AltSearch a regulární výrazy.
Kapitola 3 Formátování typografie textu Zde tedy začíná praktická část mé práce. Chci jen poznamenat, že pro úspěšné formátování je potřeba mít alespoň částečné povědomí o obsahu a uspořádání textu. Pokud víte, že v textu je například místo všech dolních uvozovek :) a místo všech horních :( nevyplatí se hledat ". Mé příklady a řešení odpovídají nejčastějším podobám problémů. Všechny výrazy jsou vypsány v sekci Shrnutí do dávek (i s patřičnou syntaxí). 3.1 Všechny špatné znaky Dokument, obzvlášť takový, který byl naskenován jak PDF soubor umožňující vyhledávání a poté převeden do editovatelného formátu (.doc,.docx,.odt a další), může obsahovat znaky, které s jeho obsahem nemají co dělat (ˆ místo, } místo?). Nepatřičné znaky je možné najít takto: Nepatřičné znaky [ˆa-zěščřžýáíéúůóáďťň\s\.,\?!;:\... ] (všechny znaky kromě vyjmenovaných) Pokud víte, že dokument může obsahovat i čísla a podtržítka: Nepatřičné znaky jinak [ˆ\w\s\.,\?!;:\... ] (všechny znaky kromě alfanumerických, podtržítek a ostatních vyjmenovaných) Výraz lze samozřejmě upravit přidáním jakéhokoli znaku, který poté nebude vyhledáván jako nepatřičný. Naneštěstí není možné nalezené znaky jednoduše nahradit, protože symboly, které zastupují, mohou být pokaždé jiné. Je tedy třeba pasáž prohlédnout a opravit znak ručně. 19
3.2 Bílé znaky (horizontální) 20 3.2 Bílé znaky (horizontální) Výraz \s zastupuje jakýkoli horizontální bílý znak (obyčejnou mezeru, nezlomitelnou mezeru, tabulátor atd.). Je sice možné vyhledávat a nahrazovat i (tedy přímo mezeru), ale já budu používat \#32 nebo \s, protože mezera se jinak v textu moc nevyjímá. V některých situacích (především při hledáních a nahrazováních opravných a doplňujících) je lepší použít \#32, protože takto napsaný výraz už znova nehledá a nenahrazuje například již správně umístěné pevné mezery. 3.2.1 Ve špatných počtech Slova vždy odděluje právě jedna mezera. Takto lze najít dvě a více mezer za sebou: Před: Několikanásobné mezery \s{2,} (dva a více bílých znaků za sebou) \#32 (mezera) Tady je spousta mezer. Tady taky. Po: Tady je spousta mezer. Tady taky. 3.2.2 Na špatných místech Jako první je dobré najít mezery na začátku a na konci odstavce (smaže i tabulátory použité místo odsazení apod.). Mezery na hranici ˆ\s \s$ (bílý znak na začátku řádku, nebo bílý znak na konci řádku) Zde je třeba nechat textbox pro nahrazení prázdný, jen kliknout na Nahradit vše, protože mezeru na začátku/konci řádku chceme smazat úplně. Následně je třeba vypořádat se s mezerami ve špatném vztahu k interpunkčním znaménkům. Před.,?! ; : ) ] } mezera (většinou) není a (většinou) za nimi následuje. (Výpustce se budu věnovat v sekci 3.3.) Výjimky většinou nastávají kolem čísel.
3.2 Bílé znaky (horizontální) 21 Pokud budeme výjimky ignorovat, hledáme interpunkční znaménko kterému předchází nebo za nímž nenásleduje mezera. Pro úplnost se vyplatí rozdělit problém na dvě části. Mezera nenásleduje ([\.,\?!;: \)\]\}])([ˆ\s]) (znak z výčtu, znak jiný než mezera) \1\#32\2 (obsah prvního seskupení, mezera, obsah druhého seskupení) Mezera předchází \s+([\.,\?!;: \)\]\}]) (jeden a více bílých znaků, znak z výčtu) \1 (obsah prvního seskupení) Před ( [ { mezera je a nenásleduje za nimi. Hledáme místa, kde před těmito znaky mezera není nebo za nimi následuje. Mezera nepředchází ([ˆ\s])([ \(\[\{]) (znak jiný než mezera, znak z výčtu) \1\#32\2 (obsah prvního seskupení, mezera, obsah druhého seskupení) Mezera následuje ([ \(\[\{])\s+ (znak z výčtu, jedna a víc mezer) \1 (obsah prvního seskupení) Pokud se tedy vrátím k výjimkám, některé skupiny čísel by měly být spojeny bez mezery (číslování kapitol, desetinná čísla, poměr). Zde vyvstává drobný problém, neboť je třeba zvlášť vyhledat výskyty tří a dvou čísel za sebou, protože dvě čísla jsou podmnožinou tří a vyhledané bloky se nemůžou překrývat.
3.2 Bílé znaky (horizontální) 22 Tři čísla za sebou (\d[\.:])\s*(\d+[\.:])\s*(\d) (číslice a interpunkce, bílý znak, číslo nebo čísla a interpunkce, bílý znak, číslice) Zde není v rámci interpunkce třeba vyhledávat, protože nic jako 3,2,5 k vidění běžně není. \1\2\3 (obsah prvního seskupení, obsah druhého seskupení, obsah třetího seskupení) Dvě čísla za sebou (\d[\.,:])\s(\d) (číslice, interpunkce, mezera, číslice) \1\2 (obsah prvního seskupení, obsah druhého seskupení) Pokud bychom tedy všechny tyto výrazy použili na ošklivý text: Toto je náhodný příkladný text, který ukazuje,co se stane,když použijeme regulární výrazy. A tady je mezera na začátku řádku.(kdyby jich bylo víc, byly by [ možná {jenom možná } ]lépe vidět. ) Právě se nacházíme v podsekci 3.2.2. Po ní následuje 3. 2.3 a možná se dostaneme i k sekci 3. 3, nebo dokonce i 3. 4. Řekli: Taky jsme potkali 2, 5 trpaslíka a 8, 11 Sněhurky. Sirup je nejlepší ředit v poměru 1 :1. Právě je 10 : 28, 22. 5. 1784. Po výrazech obstarávajících ukončující a uvozující interpunkci: Toto je náhodný příkladný text, který ukazuje, co se stane, když použijeme regulární výrazy. A tady je mezera na začátku řádku. (Kdyby jich bylo víc, byly by [možná {jenom možná}] lépe vidět.) Právě se nacházíme v podsekci 3. 2. 2. Po ní následuje 3. 2. 3 a možná se dostaneme i k sekci 3. 3, nebo dokonce i 3. 4. Řekli: Taky jsme potkali 2, 5 trpaslíka a 8, 11 Sněhurky. Sirup je nejlepší ředit v poměru 1: 1. Právě je 10: 28, 22. 5. 1784.
3.2 Bílé znaky (horizontální) 23 Po výrazech obstarávajících některé výjimky: Toto je náhodný příkladný text, který ukazuje, co se stane, když použijeme regulární výrazy. A tady je mezera na začátku řádku. (Kdyby jich bylo víc, byly by [možná {jenom možná}] lépe vidět.) Právě se nacházíme v podsekci 3.2.2. Po ní následuje 3.2.3 a možná se dostaneme i k sekci 3.3, nebo dokonce i 3.4. Řekli: Taky jsme potkali 2,5 trpaslíka a 8,11 Sněhurky. Sirup je nejlepší ředit v poměru 1:1. Právě je 10:28,22.5.1784. Povšimněte si, co se stalo s datem. Více k němu v podsekci 5.1.2. 3.2.3 Nezlomitelné mezery Samotné písmeno nesmí stát na konci řádku, tedy musí po něm následovat nezlomitelná mezera. Dávka toto obstarávající je přímo součástí AltSearch, v této podobě: Jednopísmenné (\<a \<v \<i \<o \<ó \<u \<s) + (a na začátku slova, nebo v na začátku slova, nebo i na začátku slova atd., mezera jednou a víckrát) \1\S (obsah prvního seskupení, nezlomitelná mezera) Ve hledaném výrazu z neznámého důvodu chybí předložky k a z. Výraz by tedy měl vypadat takto: Nebo alternativně takto: Jednopísmenné doplněné (\<a \<v \<i \<o \<ó \<u \<s \<k \<z) + Jednopísmenné jinak (\<[avioóuskz])\#32 Další situací, kdy by měla být použita pevná mezera, je dělení čísel (telefonních, tisíců). Číselné (\d)\#32(\d) (číslice, mezera, číslice)
3.2 Bílé znaky (horizontální) 24 \1\S\2 (první seskupení, nezlomitelná mezera, druhé seskupení) Nezlomitelná mezera by měla spojovat čísla s jednotkami, řadové číslovky s podstatným jménem, zkratky navzájem, zkratky jmen se jmény samotnými, tituly se jmény, čísla v rámci data a mnohem víc. Odvážně by se tedy dalo říct, že pokud se najde slovo sestávající se z malých písmen (nebo číslic), za nímž následuje tečka, mezera a jiné, než velké písmeno, jde o zkratku, a tudíž ona mezera musí být nezlomitelná. Výraz by vypadal takto (samozřejmě je třeba rozlišovat velikost): Výjimečné (\<[a-zěščřžýáíéúůďťň0-9]+)\.\#32([ˆa-zščřžáíéú]) ( zkratka, tečka, mezera, jiné, než velké písmeno ) \1.\S\2 (obsah prvního seskupení, tečka, nezlomitelná mezera, obsah druhého seskupení) Tuto dvojici výrazů je třeba použít víckrát, protože při prvním průchodu nenahradí všechny mezery ve zkratkách s více částmi (př. n. l.). Pokud předchozí výrazy použijeme na text: Můj pes je hranatý, tzv. perský. Teprve v roce 2 551 n. l. se naučil štěkat. Váží 3,5 kg, jeho hustota je 990 kg/m 3. Kdybyste chtěli, prodává ho firma Hafíci a. s., ale možná je to s. r. o. Žije s námi ve výšce 11 500 m. n. m., v bytě č. 3, ve 13. poschodí. 5. 5. 2553 získal svůj další titul. Teď se jmenuje pp. VVk. Pes, HjH. Text bude vypadat takto: Můj pes je hranatý, tzv. perský. Teprve v roce 2 551 n. l. se naučil štěkat. Váží 3,5 kg, jeho hustota je 990 kg/m 3. Kdybyste chtěli, prodává ho firma Hafíci a. s., ale možná je to s. r. o. Žije s námi ve výšce 11 500 m. n. m., v bytě č. 3, ve 13. poschodí. 5. 5. 2553 získal další titul. Teď se jmenuje pp. VVk. Pes, HjH. Ve většině případů tedy výrazy fungují dle očekávání. Problém nastává pokud za zkratkou následuje slovo začínající velkým písmenem (u titulů), což je způsobeno oním zákazem velkých písmen po tečce. Kdyby však byla velká písmena za zkratkou povolena, pevná mezera by byla vložena i za každý konec věty. Nevkládá také pevné mezery před zkratky, před kterými by z logiky věcí být měly.
3.3 Výpustky 25 Nezlomitelná mezera se také nepatřičně objevuje za n. l. a před 5. 5. 2553, ovšem toho není možné se zbavit, aniž by se nevyskytly jiné problémy. Předchozí dávky se také nedokážou vypořádat s jednotkami. Obecný zápis, který by je zároveň jasně vymezoval, není možné jednoduše formulovat. Jednotky mohou obsahovat velká i malá písmena, zvláštní znaky (řecká písmena, indexy, lomítka), mohou být různě dlouhé. Nejjednodušším řešením zmíněných nedostatků spojených s jednotkami a tituly je vědět, jaké jednotky a tituly se v textu vyskytují, poté je najít a mezeru před (za) nimi nahradit pevnou. Ostatní problémy může vyřešit prosté projití textu a opravení chyb (tedy přesně to, čemu se chceme použitím regulárních výrazů vyhnout), nebo upravení výrazů tak, aby vyhovovaly potřebám textu. 3.3 Výpustky Jedinou přípustnou podobou tří teček je výpustka. Počet dvou a více teček oddělených libovolným množstvím mezer je nesprávný. Výpustka ve většině případů přiléhá ke slovu a za ní následuje mezera: Tři (a více) teček \s*\.*\s*\.+\s*\.+\s*\.*\s*\.*\s* (bílý znak žádný a víckrát, tečka žádná a víckrát, mezera žádná a víckrát, tečka jednou a víckrát,... )...\#32 (výpustka, mezera) Takový výraz dokáže najít až pět bloků teček (i jedna tečka je blok) oddělených libovolným počtem mezer (přičemž vždy musí najít alespoň dva takové bloky). Další chybou je psát za výpustku tečku. Naopak otazník a vykřičník přiléhají bez mezery. Pokud výpustka označuje vypuštění informace, píše se před ní mezera, pokud je uzavřena v závorkách, mezerami se neodděluje. Tyto výjimky se dají shrnout do výrazu s několikanásobným nahrazením: Doladění výpustek \.?\s*...\s*\...\s*(! \?),...\s*(,?) \(\s?...\s\) (volitelná tečka, žádný a víc bílých znaků, výpustka, jeden a víc bílých znaků, volitelná tečka; výpustka, žádný a víc bílých znaků, otazník, nebo vykřičník; čárka, výpustka, bílý znak žádný a víc, volitelná čárka; závorka, volitelný bílý znak, výpustka, bílý znak, závorka)......\1,\#32...,\s...\1 (...) (výpustka; výpustka, obsah prvního seskupení; čárka, nezlomitelná mezera, výpustka, obsah prvního seskupení; závorka, výpustka, závorka)
3.4 Uvozovky 26 3.4 Uvozovky 3.4.1 Dvojité, jednoduché uvozovky V českých textech se pro přímou řeč, citace, zdůraznění některých slov používají horní a dolní dvojité uvozovky, pro vyznačení vnořené přímé řeči, nebo zdůraznění v přímé řečí jednoduché uvozovky. LibreOffice Writer, i něteré další editory, nahrazují znak z klávesnice (palce, tedy ") automaticky, u jednoduchých k tomu však nedochází ani zde. Nahradit palce za uvozovky s pomocí regulárních výrazů vyžaduje několik kroků: Znaky uvozující ˆ" "\< '\< "\s*[' ] (palce na začátku řádku; palce na začátku slova; strojový apostrof na začátku slova; palce, žádný a víc bílých znaků, strojový apostrof nebo jednoduché dolní uvozovky) (dolní dvojité uvozovky; dolní dvojité uvozovky; dolní jednoduché uvozovky; dolní dvojité uvozovky a dolní jednoduché uvozovky záleží, co bylo nalezeno) V tuto chvíli je dobré si zkontrolovat, že opravdu všechny uvozující uvozovky byly nalezeny. K tomu poslouží vyhledání výrazu: Uvozující znaky nenalezené [ˆ\.,!\? '...]['"] (jakýkoli znak kromě těch z výčtu, strojový apostrov nebo palce) V hranatých závorkách jsou vypsány všechny znaky, které můžou předcházet ukončujícím uvozovkám. Pokud výraz nic nenajde, všechny uvozující uvozovky byly přeměněny (tedy všechny palce a strojové apostrofy jsou na místě koncových uvozovek). Nalezené výrazy je nejrychlejší nahradit ručně, pokud se nějaký vzorec opakuje, napsat výraz (často jde o " (palce, pomlčka) nahradit za (uvozující uvozovky, pomlčka)). V posledním kroku se jen nahradí všechny palce za horní dvojité uvozovky a všechny strojové apostrofy za horní jednoduché uvozovky: Znaky ukončující " ' (palce; strojový apostrof) (horní dvojité uvozovky; horní jednoduché uvozovky)
3.4 Uvozovky 27 Postup je vidět na příkladu: "Asi bychom měli o něčem mluvit." "Proč?" "Protože potřebujeme 'příkladový text'." První si nevšímal stínu, který se k nim blížil. "Text přece nevznikne mluvením!" První vesele zavrtěl hlavou. "Podívej, jak nám to " Druhý sebou trhl. "Pozor Delete! Řekni 'Escape,' honem!" " jde." "Pozdě... " Po prvním výrazu: Asi bychom měli o něčem mluvit." Proč?" Protože potřebujeme příkladový text'." První si nevšímal stínu, který se k nim blížil. Text přece nevznikne mluvením!" První vesele zavrtěl hlavou. Podívej, jak nám to " Druhý sebou trhl. Pozor Delete! Řekni Escape,' honem!" jde." Pozdě... " Druhý výraz nenašel nic. Po třetím výrazu: Asi bychom měli o něčem mluvit. Proč? Protože potřebujeme příkladový text. První si nevšímal stínu, který se k nim blížil. Text přece nevznikne mluvením! První vesele zavrtěl hlavou. Podívej, jak nám to Druhý sebou trhl. Pozor Delete! Řekni Escape, honem! jde. Pozdě...
3.5 Špatně rozdělené odstavce 28 3.4.2 Uvozovky na řádku Někdy se dostanou na řádek dostanou dvě (nebo i víc) přímých řečí za sebe. Řeší je tento výraz: Uvozovky za sebou ([\.\?!...]) \s* (znak z výčtu, ukončující uvozovky, žádná a více mezer, uvozující uvozovky) \1 \p (obsah prvního seskupení, ukončující uvozovky,, uvozující uvozovky) Každý znak z výčtu ukončuje přímou řeč (v uvozovkách tedy nebyl prvek seznamu nevhodně oddělený od následujícího). Příklad: Budeme se hádat? Ne. A mně se chce. A mně ne! Tak vidíš, jak se pěkně hádáme. Po úpravě: Budeme se hádat? Ne. A mně se chce. A mně ne! Tak vidíš, jak se pěkně hádáme. 3.5 Špatně rozdělené odstavce Obzvlášť při konverzi z PDF jsou některé odstavce rozděleny jinde, než by větná, myšlenková či interpunkční stavba naznačovala zkrátka špatně. Takový odstavec se snadno pozná podle samotného písmena nebo čárky na konci řádku (seznamy samozřejmě mohou toto pravidlo porušit, na dokumenty, které mohou obsahovat seznamy je lepší níže zmíněné výrazy použít jen s pomocí Najít, nebo jinak opatrně). 3.5.1 Řešení s využitím malých písmen První způsob je tedy najít řádky, kde je na konci odstavce něco jiného než patřičné interpunkční znaménko, nebo takové znaménko následované uvozovkami: Dle znaku na konci odstavce ([ˆ\.\?!...]? )$ (buď znak jiný než z výčtu a volitelně ukončující uvozovky, nebo pomlčka, konec řádku)
3.5 Špatně rozdělené odstavce 29 \1\#32 (obsah prvního seskupení, mezera) Takováto dvojice není stoprocentní. Pokud je odstavec rozdělen za některým z interpunkčních znamének, nebude označen za špatně rozdělený. Stejně tak, i pokud odstavec má končit na pomlčku, bude spojen s následujícím. Pokud byla výpustka značila přestávku ve větě a ne její konec, nebude tato špatně označená věta označena. Některé nedostatky se dají odhalit hledáním malého písmena na začátku řádku: Dle písmene na začátku odtavce \pˆ[a-zščřžáéíóú] (, začátek řádku, malé písmeno) \#32\1 (mezera, obsah prvního seskupení) Takový výraz by však nenašel odstavce začínající například jménem, takže ani ten není stoprocentní sám o sobě. 3.5.2 Řešení s využitím uvozovek Další špatně rozdělené odstavce je možné najít pomocí necelé přímé řeči v odstavci, tedy pokud odstavec obsahuje například uvozující uvozovky, ale nikoli ukončující: Dle uvozovek ˆ(.* [ˆ ]*)$ (začátek řádku, žádný a víc jakýchkoli znaků, uvozující uvozovky, jakýkoli znak jiný než uvozující uvozovky žádný a víckrát, konec řádku) \1\#32 (obsah prvního seskupení, mezera) Háček je v tom, že ne vždy má být přímá řeč obsažena v jednom odstavci, a s takovými situacemi výraz nepočítá. 3.5.3 Řešení s využitím odstavců oddělených prázdným řádkem Pokud jsou v dokumentu všechny odstavce odděleny jedním prázdným (podobno anglosaskému zvyku), špatně rozdělené odstavce prázdným řádkem odděleny nebudou, a tedy se dají jednoduše opravit:
3.6 Ruční zalomení stránek 30 Dle prázdných odstavců \p([ˆˆ$]) (, něco jiného než prázdný odstavec) \#32\1 (mezera, obsah prvního seskupení) Pozor! Pokud tuto dávku použijete na text víckrát, než jednou, odstraní úplně všechny odstavce (po prvním průchodu většina prázdných řádku zanikne, výraz tedy najde téměř všechny a nahradí je za mezeru ). Další drobný nedostatek je, že na začátek každého odstavce se dostane mezera (musíme nahrazovat mezerou, protože jinak by se špatně rozdělené pasáže spojily bez mezery). Toto je však lze snadno spravit výrazem zmiňovaným už dříve v podsekci 3.2.2. 3.6 Ruční zalomení stránek Při převodu z PDF do DOC (např. s RTF tento problém nenastává) je každá stránka převáděna zvlášť, za každou je vloženo zalomení stránky. Při změně velikosti písma, stránky, nebo většině jiných úprav, se však tento nedostatek projeví. AltSearch dokáže vyhledávat ruční zalomení stránek (\m) a v roletě Nahradit nabízí \r, tedy zrušit ruční zalomení. Tato dvojice však nefunguje vždy spolehlivě. Stejně tak není možné nahradit \m za \p, nový odstavec je takto vložen na počátek stránky následující za zalomením. Toho lze využít při druhém způsobu řešení tohoto problému. Vzhledem k tomu, že Alt- Search jaksi není schopen postihnout zalomení stránky, je nutné ho označit jinak. Například znakem # (který v rámci AltSearch nemá zvláštní význam a zároveň se v dokumentech příliš často nevyskytuje, samozřejmě je vždy možné místo něho použít jiný znak nebo jinou skupinu znaků). První z navrhované skupiny výrazů by tedy vypadal takto: Poté by bylo možné použít dvojici: Ruční zalomení \m (ruční zalomení stránky) # (křížek bude umístěn na začátek stránky) Označení zalomení \p# ( na konci předchozí stránky, křížek takto by se zalomení stránky jaksi překlenulo)
3.7 Shrnutí do dávek 31 \p ( tentokrát už bez zalomení) Po těchto výrazech zůstanou některé odstavce špatně rozdělené s tím se však vypořádává již sekce 3.5 3.7 Shrnutí do dávek Veškeré výrazy představené v této kapitole jsou zapsány v příloze shrnuti_do_davek.txt. Po zkopírování jeho obsahu do souboru AltSearchScript.txt je možné je kdykoli spustit ve Správě dávek. V této podobě už také nevyžaují žádnou znalost regulárních výrazů, vše se provádí automaticky. Dávky které mohou změnit některé části dokumentu nežádoucím způsobem (respektive pravděpodobnost, že se toto stane, je významně vyšší než u ostatních) jsou označené vykřičníkem.
Kapitola 4 Formátování bloků textu AltSearch je také schopný drobného formátování textu. Formátováním zde myslím přiřazení zvláštního stylu k dané části textu (označení nadpisů především). Stejně tak je možné pomocí AltSearch možné odlišit formátování obrázků a okolního textu (například zarovnat obrázky na střed a text do bloku). Tohoto je možné dosáhnout pomocí tlačítka Nahradit vše. To dokáže označit všechny, kromě prvního, výskytu hledaného řetězce. Ty lze poté formátovat hromadně, první výskyt není problém zformátovat zvlášť. 4.1 Formátování názvů sekcí Je (opět) nutné vědět, jakým způsobem jsou v textu kapitoly odlišeny. Následující regulární výrazy tedy popisují několik nejčastějších možností. Možnost slovo (kapitola, část, chapter, section,... ) + číslo (i slovně): Kapitola s názvem ˆkapitola\s*.*$ (slovo kapitola na začátku řádku, žádný a víc bílých znaků, žádný a více libovolných znaků číslo, konec řádku) Možnost postupného číslování (1.1 Název sekce, 1.1.1 Název podsekce, atd.). Pro sekci: Pro podsekci: Název sekce ˆ\d+\.\d+$ (začátek odstavce, čísla, tečka, čísla, konec odstavce) Název podsekce ˆ\d+\.\d+\.\d+$ (začátek odstavce, čísla, tečka, čísla, tečka, čísla, konec odstavce) 32
4.2 Formátování obrázků 33 Možnost pouhé číslo / číslo s tečkou: Číslo ˆ\d+\.?$ (začátek odstavce, čísla, volitelná tečka, konec řádku) Možnost pouhý název (zde je nutno se spolehnout na to, že název neobsahuje ukončující interpunkci): Název ˆ[ˆ\.\?! ]+$ (začátek odstavce, znak jiný než ukončující jednou a víckrát, konec odstavce) Pokud chceme stejně formátovat i název kapitoly, lze to provést rozšířením výrazu. Pokud stejně jako označení formátovat název následující na stejném řádku (připojit před $): \s.+ (mezera, libovolný znak jednou a víckrát) Pokud název následuje na dalším řádku (nahradit za $): \p.+ (, libovolný znak jednou a víckrát) Pokud následuje za vynechaným odstavcem (nahradit za $): \p\p.+ (,, libovolný znak jednou a víckrát) A tak dále. Jiný způsob, jak změnit některé atributy textu, je uzavřít celý vyhledávaný výraz do kulatých závorek tedy vytvořit seskupení a poté nahradit za \1 tedy obsah seskupení a \A{}, kde je do složených závorek zapsán konkrétní parametr název žádaného fontu, velikost písma, barva písma, podbarvení apod. 4.2 Formátování obrázků Formátování obrázku je o něco náročnější. Ačkoli AltSearch umožňuje vyhledávat obrázky, není možné použít Najít vše, ani jim přiřazovat styly. Možností je tedy naformátovat celý text tak, jak byste si přáli mít naformátované obrázky a poté z rolety Atributy vybrat atribut specifický pouze pro text (například font, velikost písma). 1 Například [:::CharHeight=12::] najde bloky písma o velkosti 12. [:::CharFont- Name=Georgia::] najde bloky písma Georgia. Tak můžete opět použít Najít vše a formátovat zbytek textu, nyní už bez obrázků. 1 Toto už se dostává zcela mimo oblast regulárních výrazů, jedná se výhradně o možnosti AltSearch.
Kapitola 5 Limitace a alternativy 5.1 Limitace 5.1.1 Úpravy dle obsahu AltSearch není schopný sám poznat, kam patří spojovník, kam pomlčka, nebo kdy má spojovník funkci spojovníku a kdy rozdělovníku (a tudíž by neměl být jinde než na konci řádku a je-li, je vhodné ho odstranit), nepozná, zda má být před procentem mezera, nebo ne, zkrátka není schopný posoudit jevy související s obsahem. Něco takového by pravděpodobně vyžadovalo spolupráci se slovníkem, nebo databází slov, která by dokázala určit, do jaké kategorie slovo patří a jakým způsobem by s ním mělo být jednáno (a ani to by ani zdaleka nebylo stoprocentní). 5.1.2 Datum Stejně tak nastává i problém se správným formátováním data. Tedy: 1. 2. 2016 01. 02. 2016 1. února 2016 01/02/2016 01-02-2016 (\d\d?)[\./\-]\s*(\d\d?)[\./\-]\s*(\d{4}) (číslice, druhá volitelná, oddělovač tečka, lomítko, spojovník, žádná a víc mezer, číslice, druhá volitelná, oddělovač, žádná a víc mezer, čtyři číslice) Toto najde všechna výše vypsaná data, kromě toho, kde je měsíc slovně. Je poté možné podobu změnit. \1\.\S\2\.\S\3 (první seskupení, tečka, pevná mezera, druhé seskupení, tečka, pevná mezera, třetí seskupení) 34
5.2 Alternativy 35 Tato dvojice nechá číselný formát data v původní podobě, ale jako oddělovač bude vždy použitá tečka a pevná mezera. A tak podobně. Když datum není ve formátu den měsíc rok, je třeba přeskládat seskupení. 5.2 Alternativy Samozřejmě existují programy schopné podobných kousků jak AltSearch. 1 5.2.1 typojtb Jedním takovým je typojtb, makro taktéž od Tomáše Bílka. Toto makro dokáže vkládat pevné mezery, redukovat přebytečné mezery, kontrolovat uvozovky, rušit zalomení stránek, dokáže měnit šířku mezery, umožňuje snazší vkládání speciálních znaků a několik dalších věcí, převážně co se statistiky dokumentu (slitky, použité fonty atd.) týče. TypoJTB tedy umožňuje mnoho věcí podobných možnostem AltSearch, přičemž jeho ovládání je po uživatelské stránce snazší, neboť na vše stačí kliknout. 5.2.2 calibre Calibre je program určený pro správu e-knih i ty spadají do kategorie rozsáhlých dokumentů vyžadujících typografickou péči. Calibre dokáže texty, mimo několik výlučně knižních formátů (EPUB, MOBI atd.), převádět i do DOCX, nebo TXT. Při konverzi umožňuje najít špatně rozdělené řádky, zrušit prázdné řádky mezi odstavci, je schopné jistého formátování kapitol, stejně jako přidat obsah. Mnohdy využívá HTML tagů i CSS stylů, stejně jako právě regulárních výrazů (při nalézání kapitol, jejich organizování, umožňuje také aplikovat regulární výrazy přímo na konvertovaný text). Také dokáže najít rozdělovníky na místech, kde nemají co dělat, přičemž dokument samotný je použit jako slovník, který určí, zda se jedná o rozdělovník, nebo spojovník (program je však pravděpodobně uzpůsoben spíš anglickým textům). 1 Rozhodla jsem se neuvádět programy komerční.
Závěr Většinu problémů, ať už se jednalo o problematiku umístění obyčejných a pevných mezer, výpustek nebo uvozovek, jsem dokázala regulárními výrazy vyřešit. Stále však neexistuje jednoduchý způsob, jak rozlišit případy, kdy je třeba použít spojovník a kdy pomlčku. Také dosud nejsem spokojena s řešením zvláštních případů pro umístění nezlomitelné mezery. Všechny výrazy jsem uspořádala do souboru, který je uživateli předkládá v podobě, kterou už může přímo využívat, dokonce i bez jakéhokoli povědomí o regulárních výrazech, ovšem zároveň ji může kdykoli upravit k obrazu svému. Když jsem tuto práci opatřovala příkay pro L A TEX, zaujala mě představa použití regulárních výrazů pro usnadnění tohoto procesu, kteréžto myšlence bych se ráda dále věnovala. 36
Literatura [1] Regular expression. Wikipedia: the free encyclopedia. [online]. 2001 2016 [cit. 2015-11-07]. Dostupné z: https://en.wikipedia.org/wiki/regular_expression [2] GRAHAM, Ian. Kleene Would Be Shocked: Redrawing the Link Between Theory and Modern Regex Engines [online]. 2. 8. 2002. [cit. 2015-11-07]. Dostupné z: http://www.aladdin.cs.cmu.edu/reu/abstracts/regexpresentation.ppt [3] Regulární výraz. Wikipedie: Otevřená encyklopedie. [online]. 2002 2016 [cit. 2015-11- 07]. Dostupné z: https://cs.wikipedia.org/wiki/regul%c3%a1rn%c3%ad_v%c3%b Draz [4] PECKA, Miroslav. Regulární výrazy: Regexp není zaklínadlo. Regulární výrazy. [online]. 2005 2014 [cit. 2015-11-07]. Dostupné z:http://www.regularnivyrazy.info/ [5] BÍLEK, Tomáš. Makro AltSearch. Makra a rozšíření pro OpenOffice. [online]. 2007 2013 [cit. 2015-11-02]. Dostupné z: http://mujweb.cz/macrojtb/helpaltsearch_cs.html [6] Regular expressions. ICU User Guide. [online]. 2000 2009 [cit. 2015-11-07]. Dostupné z: http://userguide.icu-project.org/strings/regexp [7] GOYVAERTS, Jan. POSIX Basic Regular Expressions. Regular Expressions.info. [online]. 16. 9. 2013 [cit. 2015-11-11]. Dostupné z: http://www.regularexpressions.info/posix.html [8] Makro (software). Wikipedie: Otevřená encyklopedie [online]. 2002 2016 [cit. 2015-11- 02]. Dostupné z: https://cs.wikipedia.org/wiki/makro_(software) [9] SEDLÁČEK, Daniel. Malá makra úvod do programování. OpenOffice. [online]. 14. 12. 2011 [cit. 2015-11-02]. Dostupné z: http://www.openoffice.cz/doplnky/malamakra-uvod-do-programovani [10] Alternative dialog Find & Replace for Writer (AltSearch). Apache OpenOffice: Extensions. [online]. [2008] [cit. 2015-11-02]. Dostupné z: http://extensions.openoffice.org/en/project/alternative-dialog-find-replace-writeraltsearch [11] PECKA, Miroslav. Shrnutí syntaxe regulárních výrazů. Regulární výrazy. [online]. 2005 2014 [cit. 2015-11-11]. Dostupné z: http://www.regularnivyrazy.info/shrnutisyntaxe.html#.vqvewpnhdwj 37
Literatura 38 [12] PECINA, Martin. Písmo a typografie. Typomil. [online]. [cit. 2015-11-17]. Dostupné z: http://typomil.com/index.htm [13] Typography. Wikipedia: the free encyclopedia. [online]. 2001 2016 [cit. 2015-11-17]. Dostupné z: ttps://en.wikipedia.org/wiki/typography [14] FIALA, Jakub. Slovník. Litéra. [online]. 2009 2013 [cit. 1970-01-01]. Dostupné z: http://www.liteera.cz/slovnik/ [15] Nejčastější chyby a jak se jim vyhnout. Typografie na počítači. [online]. 17. 2. 2005 [cit. 2015-11-17]. Dostupné z: http://typografie.wz.cz/chyby.html [16] ZNAMENÁČEK, Tomáš. Jak správně psát uvozovky. [online]. 12. 2014 [cit. 2015-11- 17]. Dostupné z: http://www.zoul.cz/uvozovky/ [17] Spojovník. Internetová jazyková příručka. [online]. 2008 2016 [cit. 2015-11-17]. Dostupné z: http://prirucka.ujc.cas.cz/?id=164 [18] Pomlčka. Internetová jazyková příručka. [online]. 2008 2016 [cit. 2015-11-17]. Dostupné z: http://prirucka.ujc.cas.cz/?id=165
Seznam obrázků 1.1 AltSearch, ikona................................. 12 1.2 AltSearch..................................... 12 1.3 AltSearch, dávky................................. 15 Obrázky pochází z archivu autora. 39
Seznam tabulek 1.1 Skupiny výrazů...................................... 9 1.2 Kvantifikátory....................................... 10 1.3 Hranice.......................................... 10 1.4 Závorky, seskupení, zpětné reference.......................... 10 1.5 Další metaznaky..................................... 10 1.6 AltSearch, textboxy................................... 12 1.7 AltSearch, tlačítka.................................... 13 1.8 AltSearch, rolety..................................... 13 1.9 AltSearch, checkboxy................................... 14 1.10 Tlačítka Správy dávek.................................. 15 1.11 Příkazy.......................................... 16 2.1 Speciální znaky, způsob vložení pro Windows..................... 18 40