Július Pastierik / 03. 08. 2011, 00:00
V poslednom pokračovaní typografických makier, ktoré sa venujú problematike zalomiteľných a nezalomiteľných medzier si ukážeme funkcie pre ich rôzne zámeny navzájom.
V dnešnom pokračovaní seriálu o typografických makrách si ukážeme vlastné funkcie pre rôzne zámeny medzier navzájom. Okrem toho si ukážeme aj funkciu, pomocou ktorej dokážeme na „jedno kliknutie“ vyhľadať na konci riadku nesprávne zalomiteľné medzery, tieto nahradiť za znak Word Joiner a následne opraviť nesprávne zalomené znaky Word Joiner. Následne si uvedieme funkcie pre zámenu obyčajných spojovníkov za typografické a naopak, pretože svojou podstatou sa podobajú zámenám medzier.
Pretože nie vždy vyhovuje „automatika“, nakoniec, ako „bonus“, uvedieme aj funkciu pre vyhľadávanie nesprávne zalomených jednoznakových medzier na konci riadku.
Rem Procedúry pre zámenu SP na NBSP
sub SP_2_NBSP_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(" ", chr$(&HA0), TRUE) ' Zameníme SP za NBSP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub SP_2_NBSP_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(" ", chr$(&HA0), FALSE) ' Zameníme SP za NBSP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub SP_2_NBSP_koniec_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
SP_2_NBSP ' Zameníme SP za NBSP na konci riadkov
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúry pre zámenu SP na WJ
sub SP_2_WJ_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(" ", chr$(&H2060)+" ", TRUE) ' Zameníme SP za WJ+SP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub SP_2_WJ_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(" ", chr$(&H2060)+" ", FALSE) ' Zameníme SP za WJ+SP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub SP_2_WJ_koniec_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
SP_2_WJ ' Zameníme SP za WJ+SP na konci riadku
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúra pre zámenu SP na WJ/NBSP
sub SP_2_WJNBSP_koniec_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
dim kolko, pomkolko as long
kolko=0
do
pomkolko=SP_2_WJ ' Nahradíme všetky medzery na konci riadku za WJ
if pomkolko<>0 then
REM Ak sme nahradili nejakú medzeru, nahradíme nesprávne WJ za NBSP
pomkolko=pomkolko+WJ_2_NBSP
endif
kolko=kolko+pomkolko
loop until pomkolko=0
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúry pre zámenu NBSP na SP
sub NBSP_2_SP_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&HA0), " ", TRUE) ' Zameníme NBSP za SP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub NBSP_2_SP_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&HA0), " ", FALSE) ' Zameníme NBSP za SP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúry pre zámenu NBSP na WJ
sub NBSP_2_WJ_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&HA0), chr$(&H2060)+" ", TRUE) ' Zameníme NBSP za WJ+SP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub NBSP_2_WJ_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&HA0), chr$(&H2060)+" ", FALSE) ' Zameníme NBSP za WJ+SP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúry pre zámenu WJ na SP
sub WJ_2_SP_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&H2060)+" ", " ", TRUE) ' Zameníme WJ+SP za SP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub WJ_2_SP_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&H2060)+" ", " ", FALSE) ' Zameníme WJ+SP za SP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Procedúry pre zámenu WJ na NBSP
sub WJ_2_NBSP_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&H2060)+" ", chr$(&HA0), TRUE) ' Zameníme WJ+SP za NBSP v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub WJ_2_NBSP_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text(chr$(&H2060)+" ", chr$(&HA0), FALSE) ' Zameníme WJ+SP za NBSP v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub WJ_2_NBSP_koniec_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
WJ_2_NBSP ' Zameníme WJ za NBSP na konci riadkov
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Typografické spojovníky medzi dvomi znakmi
sub Typo_spojovniky_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text("([:alpha:])(-)([:alpha:])", "$1"+chr$(&HAD)+chr$(&H2011)+"$3", TRUE) ' Zameníme spojovníky za typografické v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub Typo_spojovniky_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text("([:alpha:])(-)([:alpha:])", "$1"+chr$(&HAD)+chr$(&H2011)+"$3", FALSE) ' Zameníme spojovníky za typografické v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
Rem Obyčajné spojovníky medzi dvomi znakmi
sub Obycajne_spojovniky_all_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text("\x00AD\x2011", "-", TRUE) ' Zameníme typografické spojovníky za obyčajné v celom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
sub Obycajne_spojovniky_vyber_Initiated
Kerning_znakov.Odpamataj_vyber ' Odpamätanie pôvodného výberu
Zamen_hladany_text("\x00AD\x2011", "-", FALSE) ' Zameníme typografické spojovníky za obyčajné v označenom texte
if oDlgm.model.Vymeny.State=1 then VypisSpravu(81,"") ' Ak si to nastavíme, tak vypíšeme oznam o konci výmen
Kerning_znakov.Nastav_vyber ' Nastavenie pôvodného výberu
end sub
REM Procedúra hľadá jednoznakové predložky na konci riadku
sub hladaj_predlozku
dim Kurzor, Tabulka as object
dim Koniec as boolean
dim pom as string
dim kolko, pomkolko, absolutne, znakov as long
dim dlgc, oUkazujPriebeh as object
dim nasiel as boolean
kurzor= ThisComponent.currentcontroller.getViewCursor() ' viditeľný kurzor
nasiel=false
do
if kurzor.ParaLineNumberCount then
' Ak nie sme v tabuľke
' Označíme si tri znaky na konci riadku a ak je to medzera+znak+medzera, tak je nesprávne zalomenie
Kurzor.gotoEndOfLine(true) ' skočíme na koniec riadku a označíme ho
' Zmena má zmysel iba vtedy, ak má riadok aspoň tri znaky
' Inak by sme značili aj znaky z predchádzajúceho riadku, čo by bola chyba
' a pri tabuľkách to vedie k zacykleniu, ak je za ňou riadok s menej ako tromi znakmi
pom=right(kurzor.getstring(),3) ' získame posledné tri znaky riadku
kurzor.collapseToEnd() ' Zrušíme označenie
if len(pom)>2 then
' Ak je riadok dlhý spoň tri znaky
kurzor.goLeft(3, false) ' Presunieme sa o tri znaky doľava
Kurzor.goRight(3, true) ' zvýraznenie posledných znakov, aby sa nahradili
nasiel=((left(pom,1)=" ") and instr(rozne.JednoznakovePredlozky,mid(pom,2,1))<>0 and right(pom,1)=" ")
if nasiel then
' Je to nesprávne zalomenie
kurzor.collapseToEnd() ' Zrušíme označenie
Kurzor.goLeft(2, false) ' skočíme na začiatok predložky
Kurzor.goRight(3, true) ' zvýraznenie predložky, medzery a znaku za medzerou
exit do ' Ukončenie vyhľadávania
endif
Kurzor.collapseToEnd() ' Zrušíme označený vymenený text
endif
endif
Koniec=not(kurzor.goRight(1,false)) ' a presunieme sa na ďalší riadok
loop until Koniec
if not nasiel then
VypisSpravu(91,"")
end if
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk