Makrá v OpenOffice.org 2/I. – formátujeme dokumenty

Július Pastierik  /  05. 01. 2006, 00:00

Na konci minulého roku sme sa rozlúčili s tým, že v tomto roku budeme pokračovať ďalšou veľkou časťou seriálu o programovaní makier v OpenOffice.org, v ktorej budeme tvoriť makrá zamerané na formátovanie dokumentu.

Formátujeme dokumenty

Pri praktickom písaní sa mnohokrát stretávame s problémom potreby neskoršej automatickej úpravy textu podľa našich požiadavok. Pokiaľ píšete pomerne veľa (a to nielen ako ja recenzie či návody, ale aj romány, listy, dokumentáciu a pod.), postupom času zistíte, že OpenOffice.org v niektorých smeroch neposkytuje taký komfort ako iné, konkurenčné nástroje. Ako príklad spomeňme automatické vkladanie nezalomiteľných medzier za predložky. K tomu sa pridávajú ďalšie potreby, ktoré, samozrejme, už nemusia záležať od kancelárskeho balíka, pretože sú zamerané napríklad na automatické opravy preklepov, z ktorých znovu spomeňme opravu viacnásobných medzier. Všetky takéto úpravy môžeme súhrne označiť ako jednoduché formátovanie či upravovanie (opravovanie) dokumentu.

Prvé makro z tejto série sme už naznačili v predchádzajúcich dieloch nášho seriálu – makro pre odstraňovanie viacnásobných medzier. Aby sme „nevyšli z cviku“, začneme znovu týmto makrom, ktoré znovu trochu vylepšíme a pozmeníme.

Znovu odstraňujeme medzery

V poslednej verzii makra pre odstraňovanie viacnásobných medzier sme s využitím regulárnych výrazov dokázali v jednom kroku odstrániť všetky viacnásobné medzery, k čomu sme ešte pridali odstránenie medzier na začiatku a konci odstavca. Pravdaže, ani toto riešenie ešte nezahŕňa všetky možnosti takýchto preklepov, pretože môžeme mať rôzne kombinácie nezalomiteľných a zalomiteľných medzier, tabelátorov s medzerami, nezalomiteľné medzery alebo tabelátory na začiatku alebo konci odstavca a pod. Okrem toho sme medzery na začiatku alebo na konci odstavca hľadali v dvoch krokoch. Pokiaľ zohľadníme tieto pripomienky, môže makro pre vymazávanie viacnásobných medzier vyzerať takto:

SUB Viacnasobna_medzera
 DIM Dokument, Vymena AS object
 DIM kolko AS Long
 DIM NM AS string

 Dokument=ThisComponent
 Vymena=Dokument.createReplaceDescriptor()

 NM=chr$(&HA0) ' Nezalomiteľná medzera (ctrl+space)
 ' Budeme hľadať popomocou regulárnych výrazov
 Vymena.SearchRegularExpression=True
 'Hľadáme viacnásobné zalomiteľné medzery
 Vymena.SearchString="  +"
 'A nahradíme ich jednoduchou medzerou
 Vymena.ReplaceString=" "
 kolko=Dokument.replaceAll(Vymena)

 Vymena.SearchRegularExpression=True
 'Hľadáme kombinácie zalomiteľná+nezalomiteľná+zalomiteľná medzera,
 'nezalomiteľná+zalomiteľná a zalomiteľná+nezalomiteľná medzera
 Vymena.SearchString=" "+NM+" |"+NM+" | "+NM
 ' ktoré nahradíme nezalomiteľnou medzerou
 Vymena.ReplaceString=NM
 kolko=kolko+Dokument.replaceAll(Vymena)

 'Hľadáme kombinácie medzera+tabelátor+medzera,
 'tabelátor+medzera a medzera+tabelátor
 Vymena.SearchString=" t |t | t"
 ' ktoré nahradíme tabelátorom
 Vymena.ReplaceString="t"
 kolko=kolko+Dokument.replaceAll(Vymena)

 Vymena.SearchRegularExpression=True
 'Hľadáme zbytočné medzery na začiatku alebo na konci odstavca
 Vymena.SearchString="^[:space:]*|[:space:]*$"
 ' ktoré vymažeme
 Vymena.ReplaceString=""
 kolko=kolko+Dokument.replaceAll(Vymena)

 Vymena.SearchRegularExpression=True
 'Hľadáme zbytočné tabelátory na začiatku alebo na konci odstavca
 Vymena.SearchString="^t*|t*$"
 ' ktoré vymažeme
 Vymena.ReplaceString=""
 kolko=kolko+Dokument.replaceAll(Vymena)

 msgbox("Nahradených "+kolko+" viacnásobných medzier.",0,"Viacnásobne medzery")
END SUB

Na budúce: Makro pre viacnásobné medzery na 8 riadkov, alebo aj funkcie a podprogramy majú pri programovaní svoje miesto

PDF verzia prvých desiatich článkov o programovaní makier v OpenOffice.org: makra_v_ooo_1.pdf



Neprehliadnite: