V doterajších dieloch nášho seriálu sme sa venovali dvom základným problémom – vymazávaniu viacnásobných medzier a vkladaniu nezalomiteľných medzier za jednoznakové predložky a spojky. Pravdaže, týmito príkladmi sme nevyriešili všetky problémy, ktoré sú spojené s touto problematikou. Napríklad, pod odstraňovanie viacnásobných medzier by sme mohli zaradiť aj odstraňovanie zbytočných medzier, resp. takých medzier, ktoré nezodpovedajú typografickým pravidlám. Tu patria napr. nesprávne vložené medzery medzi úvodzovky a text, zátvorky a text a pod. Podobne sme ešte nevyriešili celú problematiku okolo nezalomiteľných medzier, pretože tie sa vkladajú (ako sme už spomínali v tretej časti) aj medzi skratkami akademických titulov, za číslicami v dátumoch a pod. A práve tejto problematike sa teraz budeme postupne venovať.
„Nezalomiteľné“ akademické tituly
Ako prvej sa budeme teraz venovať problematike vkladania nezalomiteľných medzier medzi akademické tituly a meno. Hoci je problematika podobná jednoznakovým predložkám, má svoje osobitnosti, ktoré si musíme rozobrať. Na rozdiel od predložiek má väčšina titulov pevný tvar veľkých a malých písmen (napr. magister farmácie – „PhMr.“). Nemusíme sa však zaoberať tým, ako boli napísané, ale ich vždy prepíšeme správnym tvarom, čím zároveň dosiahneme aj to, že automaticky opravíme ich prípadný nesprávny zápis. Toto však neplatí úplne pre všetky tituly, pretože skratky titulov akademik – „akad.“, architekt – „arch.“, docent – „doc.“ a profesor – „prof.“ sa píšu s malými písmenami, pravdaže, okrem prípadu, keď sa nachádzajú na začiatku vety (vtedy je prvé písmeno veľké).
Okrem titulov, ktoré sa uvádzajú pred menom existujú aj tituly, ktoré sa uvádzajú za menom, t.j. pri ktorých musíme vkladať nezalomiteľnú medzeru pred ne (napr. kandidát vied – „CSc.“). Okrem toho, pri tituloch za menom existuje možný dvojtvar pre skratku titulu čestného doktorátu (honoris causa) – h.c. (bez medzery) alebo h. c. (s nezalomiteľnou medzerou).
Pri programovaní už nebudeme uvádzať riešenia, ktoré nehľadajú potrebné reťazce na začiatku alebo konci odstavca, pretože sme si túto problematiku už dosť objasnili v predchádzajúcich dieloch nášho seriálu. Pri tituloch sa však stretávame s novým problémom – vždy končia bodkou, ktorú musíme zahrnúť do vyhľadávania. Vzhľadom na to, že budeme hľadať pomocou regulárnych výrazov, kde má bodka špecifické postavenie (nahrádza akýkoľvek znak), musíme ju zadávať kombináciu znakov „\.“ a z tohto dôvodu ju nebudeme v definícii titulov uvádzať.
V tejto súvislosti nám ešte spôsobia problémy skratky „h. c.“ a „h.c.“, pretože tu sa bodka nachádza aj v ich vnútri, a preto ich musíme riešiť úplne osobitne. Makro, kde sú zahrnuté všetky uvedené problémy, by mohlo vyzerať potom takto:
sub Nezalomitelne_tituly
REM program prevedie zámenu zalomiteľnej medzery medzi menom a titulom
REM zároveň sa opravia nesprávne napísané tituly okrem titulov
REM akad., arch., doc., prof., ktoré sa píšu malým písmenom,
REM ale na začiatku vety majú prvé písmeno veľké, t.j. Akad., Arch., Doc., Prof.
dim Tituly_pred(), Tituly_pred_spec(), Tituly_za() as string
dim i, kolko as long
REM Akademické tituly pred menom
Tituly_pred()=array("Bc", "Dr", "Ing", "JUDr", "Mgr", "MUDr", "MVDr", "PaedDr", "PharmDr", "PhDr", "PhMr", "RNDr", "ThDr")
REM Akademické tituly pred menom, kde sú rôzne prvé písmená
Tituly_pred_spec()=array("akad", "Akad", "arch", "Arch", "doc", "Doc", "prof", "Prof")
REM Akademické tituly za menom
Tituly_za()=array("CSc","DrSc")
REM Mimo ostatných skratiek je skratka h.c.
REM Najprv vložíme nezalomiteľnú medzeru do skratiek h. c.
Kolko=Vymen("h. c.","h."+NM+"c.",false,false,false)
REM nezalomiteľná medzera pred skratku h.c. bez medzier
Kolko=Vymen(" h.c.",NM+"h.c.",false,false,false)
REM nezalomiteľná medzera pred skratku h. c. s medzerou
Kolko=Vymen(" h."+NM+"c.",NM+"h."+NM+"c.",false,false,false)
REM Pre všetky tituly pre menom, ktoré sa zároveň opravujú na správny tvar
for i=lbound(Tituly_pred()) to ubound(Tituly_pred())
kolko=kolko+Vymen("\<"+Tituly_pred(i)+"\. ",Tituly_pred(i)+"."+NM,true,false,false)
next i
REM Pre všetky tituly pred menom, ktoré sa neopravujú
for i=lbound(Tituly_pred_spec()) to ubound(Tituly_pred_spec())
kolko=kolko+Vymen("\<"+Tituly_pred_spec(i)+"\. ",Tituly_pred_spec(i)+"."+NM,true,false,true)
next i
REM Pre všetky tituly, ktoré sú za menom
for i=lbound(Tituly_za()) to ubound(Tituly_za())
kolko=kolko+Vymen(" "+Tituly_za(i)+".",NM+Tituly_za(i),false,false,false)
next i
msgbox("Nahradených "+kolko+" zalomiteľných medzier.",0,"Nezalomiteľné tituly")
end sub
Ako vidíme, toto makro je na rozdiel od nezalomiteľných medzier za predložkami pomerne zložité, no napriek tomu dúfame, že ešte stále pochopiteľné a prehľadné. Vieme, že v ňom nie sú uvedené všetky možné tituly (napr. chýbajú vojenské hodnosti), predpokladáme, že tí, ktorí s nimi v texte pracujú si ich určite ľahko doplnia. Okrem toho sa môže do makra doplniť aj výmena dvoch rôznych tvarov titulov čestného doktorátu za jeden – ten, ktorý sa komu viac páči. Toto však necháme prípadným záujemcom ako domácu úlohu.
Na budúce: Vkladáme ďalšie nezalomiteľné medzery, alebo aj dátumy majú byť spolu.