Makrá v OpenOffice.org 6/VI. – Rôzne zámeny.

Július Pastierik  /  22. 08. 2007, 00:00

V dnešnom pokračovaní seriálu o programovaní makier v OpenOffice.org si znovu uvedieme makrá, pomocou ktorých dokážeme formátovať dokument a to konkrétne v oblasti zámen postupnosti znakov za typografické znaky.

Pri písaní textu bežne používame tri bodky pre označenie pokračovania textu (niekedy so skrytým podtextom). V typografii sa však pri sádzaní textu nepoužívajú tri bodky, ale špeciálny znak, ktorý nazvem „trojbodka“ (prosím, keby ma jazykovedci nekameňovali za tento názov, pre bežných používateľov je však dosť názorný). Hoci sa dá v OpenOffice.org nastaviť, aby sa tri bodky automaticky nahradzovali týmto znakom, nedôjde k tomu v tom prípade, ak nasledujú tesne za predchádzajúcim slovom (t.j. nie je medzi nimi a slovom medzera), čo je z gramatického hľadiska veľmi častý prípad. Tak isto k tejto zmene nedôjde vtedy, ak po ich napísaní nestlačíme medzeru či klávesu „Enter“ (napr. na konci textu).

Podobná problematika sa týka aj spojovníkov, pomlčiek a rozdeľovníkov. Z typografického hľadiska majú všetky tieto znaky rôzne dĺžky – spojovník a rozdeľovník je v skutočnosti kratšia čiarka, ktorá nemá medzeru medzi sebou a slovom, kým pomlčka je dlhšia a pred a aj za ňou sa nachádza medzera. OpenOffice.org automaticky dokáže upraviť spojovník na pomlčku (pre ktorú vlastne nemáme priamu klávesu) v prípade, ak sa nachádza medzi medzerami. Pokiaľ však pomlčku píšeme za text, ktorý je ukončený bodkou (napr. nejaká skratka), potom túto zámenu automaticky neprevedie. Pravdaže, tento problém dokážeme riešiť aj tým, že si zadefinujeme do automatických opráv napr. náhradu dvoch spojovníkov za pomlčku. Toto riešenie však nemusí vyhovovať každému a preto je vhodné, aby sme spolu so zámenou troch bodiek za „trojbodku“ naprogramovali aj zámenu spojovníka za pomlčku, ak sa nachádza medzi medzerami.

A aby sme nezabudli na sľub, ktorý sme si dali minule, uvedieme si dnes aj makro, pomocou ktorého dokážeme zameniť ručné zalomenie riadku (klávesová skratka „Shift + Enter“) za zalomenie odstavca (klávesa „Enter“). Podobne, ako sme to robili aj v minulosti, aj teraz použijeme makrá, ktoré sme si už doteraz naprogramovali a ktoré sa nachádzajú v module „Formatovanie_funkcie“.

REM Makro pre rôzne zámeny (napr. troch bodiek za „trojbodku“)
function f_Rozne_zameny as long
 dim V_com(), Co(), Za() as string
 dim n as long
 dim kolko as long

 Formatovanie_funkcie.init
 ' Budeme zamieňať tri bodky za trojbodku
 ' a obyčajné pomlčky za dlhú pomlčku medzi dvomi medzerami.
 ' Pri hľadaní použijeme regulárne výrazy, lebo spojovníky môžu začínať a končiť
 ' ľubovoľnou medzerou - preto je definícia vyhľadávacích reťazcov trochu komplikovanejšia

 V_com()=array("\.\.\.","[:space:]+-[:space:]+")
 Co()=array("...","-") ' tri bodky a spojovník
 Za()=array("…","–",) ' „trojbodka“ a pomlčka

 kolko=0
 for n=lbound(V_com()) to ubound(V_com())
  kolko=kolko+Formatovanie_funkcie.Vymen_hladanim(V_Com(n),Co(n),Za(n),true,false,false)
 next n
 f_Rozne_zameny=kolko
end function

REM Pokiaľ si chceme vypísať počet zámen, môžeme volať predchádzajúcu funkciu touto procedúrou  
sub Rozne_zameny
 msgbox("Prevedených "+f_Rozne_zameny+" zámen.",0,"Rôzne zámeny")
end sub

REM Makro pre zámenu zalomenia riadku za koniec odstavca
function f_Koniec_odstavca as long
 Formatovanie_funkcie.init
 f_Koniec_odstavca =Formatovanie_funkcie.Vymen("\n","\n",true,false,false)
end function

REM Pokiaľ si chceme vypísať počet zámen koncov riadkov za odstavce
sub Koniec_odstavca
 msgbox("Prevedených "+f_Koniec_odstavca+" zámen.",0,"Zámena konca riadku za odstavec")
end sub

Na budúce: Vlastný dialóg pre nahrádzanie, alebo využime to, čo sme už naprogramovali aj na iné účely.

Neprehliadnite: