Makrá v OpenOffice.org 2/VIII. – Nadbytočné medzery

Július Pastierik  /  23. 02. 2006, 00:00

V tomto dieli seriálu o programovaní makier si uvedieme ďalšie makrá pre vymazávanie nadbytočných medzier.

Pokiaľ si pamätáte, v tretej časti sme uviedli zatiaľ poslednú verziu makra pre odstraňovanie viacnásobných medzier, v ktorej sme počítali aj s prázdnymi medzerami na začiatkoch a koncoch odstavcov. Týmto sme, pochopiteľne, neopravili všetky možné výskyty nadbytočných medzier, pretože sa s nimi môžeme stretnúť aj v iných častiach dokumentu, napr. v textoch v zátvorkách, medzi úvodzovkami a pod.

Čo nám hovoria normy

Aby sme vedeli, ako správne písať medzery, pozrime sa na to, čo nám v tomto smere hovorí norma pre úpravu písomností (STN 01 6910, ktorá je prakticky zhodná s normou ČSN 01 6910). Tam sa o. i. dozvieme, že interpunkčné znamienka bodka, čiarka, dvojbodka, bodkočiarka, výkričník a otáznik sa pripájajú k textu bez medzery (napr. „A preto, hoci nerád, to urobil.“). Za tieto znaky patrí medzera okrem tých prípadov, keď ich nasleduje viac za sebou (napr. „bolo to vo firme FIRMA s r. o., takže …“). Medzera sa nedáva ani za bodku v peňažných číslach (napr. „12.000 Sk“), za bodku pri číselnom označovaní časti textu (napr. „kapitola 2.7“), za čiarku pri oddeľovaní desatinných miest (napr. „3,14“) a za dvojbodku pri písaní časových údajov (napr. „8:48 h“). Zátvorky a úvodzovky sa na začiatku a konci textu, ktorý dávame do zátvoriek alebo do úvodzoviek, neoddeľujú od tohto textu medzerami (ako môžeme vidieť vo všetkých príkladoch, ktoré sme v tomto odstavci pred chvíľou uviedli). Medzery sa nepoužívajú ani pri spojovníku (napr. „slovensko-nemecký slovník“).

Ako vidíme, aj táto problematika – podobne ako problematika nezalomiteľných medzier – je pomerne široká. V tejto súvislosti sa ešte musíme vrátiť k piatej časti tohto seriálu, kde som spomínal dva možné tvary akademického titulu čestného doktorátu „honoris causa“ – „h.c.“ (bez medzery) alebo „h. c.“ (s nezalomiteľnou medzerou). Tieto dva tvary sa uvádzali v materiáloch, z ktorých som čerpal podklady pre zoznam akademických titulov. Tvar bez medzery je však v rozpore so spomínanými normami pre úpravu písomnosti, čo som si vtedy neuvedomil. Týmto sa všetkým za uvedený omyl ospravedlňujem. Predmetný článok však už nebudem opravovať, pretože všetky uvedené makrá sú zároveň príkladmi riešenia určitého typu problematiky – v tomto prípade viacerých výnimiek z nejakého pravidla.

Nadbytočné medzery pri interpunkčných znamienkach

Ako prvé, čo si z uvedenej problematiky budeme programovať bude odstraňovanie nadbytočných medzier pred a za interpunkčnými znamienkami. Nebudeme sa už venovať pomalým náhradám cez cykly, ale využijeme rýchlejšie riešenie pomocou regulárnych výrazov.

sub Zmaz_interpunkcia_medzera

 dim kolko as long

 REM Vymazanie medzier za ľavými znakmi – úvodzovkami a zátvorkami
 REM Tu patrí týchto šesť znakov: „ « " ( [ {
 REM Úvodzovky " musíme zadať pomocou ich kódu, zátvorky ( a [ musíme zadať pomocou uvádzajúceho znaku

 kolko=Vymen_hladanim("(„|«|"+chr$(&H22)+"|(|[|{) "," ","",true,false,false)

 REM Vymazanie medzier pred pravými zátvorkami a úvodzovkami a pred interpunkciou
 REM Tu patrí týchto šesť znakov: “ » " ) ] }
 REM a týchto šesť interpunkčných znamienok: , . ! ? ; :
 REM Úvodzovky " musíme zadať pomocou ich kódu, znaky , . ? ) ] musíme zadať pomocou uvádzajúceho znaku

 kolko=Vymen_hladanim(" (“|»|"+chr$(&H22)+"|)|]|}|,|.|!|?|;|:)"," ","",true,false,false)

 msgbox("Vymazaných "+kolko+" nadbytočných medzier.",0,"Nadbytočné medzery")

end sub


Na budúce: Vkladáme chýbajúce medzery, alebo niekedy nepíšeme to, čo máme.


Neprehliadnite: