Archív Inet.sk Pôvodný autor: Július Pastierik
28. 05. 2008 o 00:00 3160x

Makrá v OpenOffice.org 05/2008

V dnešnom dieli seriálu o makrách sa znovu vrátime k textovým dokumentom a ukážeme si, ako dokážeme nastaviť rozostup medzi znakmi.
Makrá v OpenOffice.org 05/2008

 

Pokiaľ používame OpenOffice.org na písanie kníh či iných podobných publikácií, chceme, aby vyzeral dobre aj z hľadiska estetickej úpravy, ktoré sú overené generáciami našich predkov a ktoré do svojich pravidiel zahrnuli typografi. Medzi takéto náležitosti patrí napríklad aj to, že na konci strany sa nenecháva jeden riadok textu a na začiatku novej strany tiež nie (tzv. siroty a vdovy).

Kontrola sirotkov a vdov

Samozrejme, v OpenOffice.org dokážeme nastaviť, že sa takéto riadky nebudú vyskytovať a to v nastaveniach štýlov odstavcov (záložka „Tok textu“, voľby „Kontrola sirotkov“ a „Kontrola vdov“. Pokiaľ však toto nastavíme, častokrát sa nám stane, že na konci strany zostane prázdny riadok.

Pokiaľ tlačíme dokument na obidve strany papiera (ale nielen vtedy), vzniká nám nový problém – na dvoch susediacich stranách nemusí byť na konci strany text, čo pôsobí rušivo. A práve vtedy môžeme zasiahnuť podobne, ako to robili sadzači pri ručnej sadzbe – zmenením rozostupu medzi znakmi.

Nastavenie odsadenia znakov v štýle odstavca

Samozrejme, rozostupy medzi znakmi sa dajú tiež nastaviť v štýle odstavca (záložka „Umiestnenie“, nastavenia „Vzdialenosť“). To však platí pre všetky odstavce a netýka sa to iba nastavenia konkrétnej strany. Pokiaľ chceme nastavovať rozostupy pre jeden znak, môžeme ho označiť a pomocou voľby menu „Formát – Znak...“ na záložke „Umiestnenie“ nastaviť tento rozostup.

Ak si však predstavíme, že na jednej strane sú stovky medzier, je to veľmi prácne (hádam viac, ako keď sa robila sadzba ručne). A práve z tohto dôvodu si urobíme makro, pomocou ktorého dokážeme nastaviť rozostup medzi znakmi v označenom texte – a to nielen pre ich zväčšovanie, ale aj zmenšovanie.

Dialóg pre odsadenie znakov - parametre vstupného čísla

Aby sme makro urobili čo najobecnejšie, pripravíme si najprv dialóg, pomocou ktorého nastavíme príslušné parametre – veľkosť rozostupu a množinu znakov, pre ktoré ho chceme použiť. Pretože obvykle nastavujeme rozostup buď medzi všetkými znakmi alebo iba v rámci medzier, do dialógu vložíme štyri prepínacie voľby: „Všetky znaky vo výbere“, „Všetky medzery“, „Iba zalomiteľné medzery“ a „Iba nezalomiteľné medzery“.

Vlastné volanie makraĎalej si v dialógu nastavíme pre vstupnú hodnotu formátovanie (celé čísla), minimálnu a maximálnu hodnotu (-9999 až 9999). Toto nastavenie urobíme preto, aby sme nemuseli zadanú hodnotu špeciálne testovať. Záporné hodnoty rozostupy zmenšujú, štandardný rozostup je hodnota 0 a kladné hodnoty rozostupy zväčšujú. Samozrejme, konkrétne čísla je potrebné vyskúšať osobitne pre každú nastavovanú stranu – v tomto smere sa nedá povedať, aká hodnota je najlepšia.

Vlastné makro tvoria dve funkcie – otvorenie dialógu a nastavenie rozostupov. Makrá sú, ako obvykle, okomentované a preto sa nimi nemusíme hlbšie zaoberať.

Text pred zmenením odsadenia

REM Makro pre úpravu rozostupov medzi znakmi vo vybranom texte
sub uprav_kerning_znakov(medzera, all, sp_nbsp, nbsp as long)
 ' Význam parametrov:
 ' Medzera – veľkosť rozostupu
 
 ' all – ak je 1, tak nastavujeme všetky znaky
 ' sp_nbsp – ak je 1, tak nastavujeme všetky medzery
 ' nbsp – ak je 1, tak iba nezalomiteľné medzery
 ' Ak všetky predchádzajúce parametre sú 0, tak sa nastavuje iba zalomiteľná medzera

 dim dokument, kurzor as object ' Aktuálny dokument, viditeľný kurzor
 dim hladaj as string ' Hľadaný reťazec podľa parametrov
 
 dim args(18) as new com.sun.star.beans.PropertyValue ' Parametre pre hľadanie v označenom texte
 
 if all=0 then
  ' Ak nenastavujeme všetky znaky, tak
  hladaj=" " ' nastavenie hľadaného reťazca na SP
  if sp_nbsp=1 then
   ' Ak hľadáme všetky medzery, tak
   hladaj=" |"+chr$(&HA0) ' nastavenie hľadania SP alebo NBSP
  else
   if nbsp=1 then
    ' Ak hľadáme iba NBSP, tak
    hladaj=chr$(&HA0) ' nastavenie hľadania NBSP
   endif
  endif
  ' Nastavenie nasledujúcich parametrov je z nahrávania makra
  args(0).Name = "SearchItem.StyleFamily"
  args(0).Value = 2
  args(1).Name = "SearchItem.CellType"
  args(1).Value = 0
  args(2).Name = "SearchItem.RowDirection"
  args(2).Value = true
  args(3).Name = "SearchItem.AllTables"
  args(3).Value = false
  args(4).Name = "SearchItem.Backward"
  args(4).Value = false
  args(5).Name = "SearchItem.Pattern"
  args(5).Value = false
  args(6).Name = "SearchItem.Content"
  args(6).Value = false
  args(7).Name = "SearchItem.AsianOptions"
  args(7).Value = false
  args(8).Name = "SearchItem.AlgorithmType"
  args(8).Value = 1 ' Budeme hľadať regulárne výrazy
  args(9).Name = "SearchItem.SearchFlags"
  args(9).Value = 71680 ' Hľadá sa v označenom texte (výbere). Pre hľadanie v celom dokumente by muselo byť 65536
  args(10).Name = "SearchItem.SearchString"
  args(10).Value = hladaj ' Hľadaný reťazec
  args(11).Name = "SearchItem.ReplaceString"
  args(11).Value = ""
  args(12).Name = "SearchItem.Locale"
  args(12).Value = 255
  args(13).Name = "SearchItem.ChangedChars"
  args(13).Value = 2
  args(14).Name = "SearchItem.DeletedChars"
  args(14).Value = 2
  args(15).Name = "SearchItem.InsertedChars"
  args(15).Value = 2
  args(16).Name = "SearchItem.TransliterateFlags"
  args(16).Value = 1280
  args(17).Name = "SearchItem.Command"
  args(17).Value = 1
  args(18).Name = "Quiet"
  args(18).Value = true

  dokument=ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dispatcher.executeDispatch(dokument, ".uno:ExecuteSearch", "", 0, args()) ' Vlastné hľadanie – označenie všetkých nájdených znakov
 endif
 kurzor= ThisComponent.currentcontroller.getViewCursor()
 ' Viditeľný kurzor
 ' ak sme nehľadali medzery, tak je to celý označený text, inak iba nájdené medzery
 kurzor.CharKerning=medzera ' Zmena rozostupu označených znakov
end sub

Rem Volanie dialógu a makra pre nastavenie rozostupov
sub Kerning_znakov

 dim medzera as long ' Pre získanie číselnej hodnoty z dialógovej premennej "Hodnota"

 DialogLibraries.LoadLibrary("JP_Kerning_znakov") ' Otvorenie knižnice
 
 dlg=CreateUnoDialog(DialogLibraries.JP_Kerning_znakov.Dialog_Kerning_znakov) ' Sprístupnenie dialógu
 
 dlg.model.Vyber_all.State=0
 dlg.model.Vyber_SP_NBSP.State=1 ' V prepínačoch si prednastavíme, že budeme meniť rozostupy všetkých medzier
 dlg.model.Vyber_SP.State=0
 dlg.model.Vyber_NBSP.State=0
   
 dlg.model.Hodnota.text="0" ' 0 znamená, že rozostupy majú byť štandardné

 if dlg.Execute()=1 then
  ' Ak sme stlačili "OK", tak
  medzera=val(dlg.model.Hodnota.text) ' Hodnota rozostupov
  uprav_kerning_znakov(medzera,dlg.model.Vyber_all.State,dlg.model.Vyber_SP_NBSP.State,dlg.model.Vyber_NBSP.State) ' Nastavenie rozostupov
 endif
 dlg.dispose() ' Zatvorenie dialógu
end sub

Text po zmene odsadenia s vyznačenými medzerami

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies