[SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Użytkowanie edytora dokumentów
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

[SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Witam,
szukam sposobu na automatyczne wstawianie łącznika opcjonalnego po każdej sylabie lub kilku sylabach.
Łącznik opcjonalny

Wstawia w wyrazie niewidoczny łącznik, który pojawi się i utworzy podział wiersza w przypadku, gdy będzie ostatnim znakiem wiersza.
Tak przygotowany tekst jest stosowany przy konwersji do formatu epub.
Ostatnio zmieniony pn mar 25, 2013 4:14 pm przez valderis, łącznie zmieniany 2 razy.
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

Chodzi o kod HTML wewnątrz paczki epub? Nie wiedziałem, że czytniki korzystają z jawnie wstawionych łączników opcjonalnych. Sądziłem, że raczej z reguł dostarczanych przez słowniki językowe.

W OpenOffice podział na sylaby jest zdefiniowany w odpowiednim słowniku dla danego języka. Dostęp jest zapewniony przez moduł lokalizacyjny. Pewnie dałoby się jakieś makro wysmażyć? Temat jest nietrywialny, i wydaje się dobrym pomysłem na sensowny dodatek.

Writer2LaTeX (http://writer2latex.sourceforge.net/) jest napisanym w Javie dodatkiem eksportującym do formatów LaTeX i XHTML. Ma też możliwość pakowania pliku epub. Nie wiem, nie sprawdzałem, czy dzieli wyrazy? nie sądzę, ale ...

W luźnym związku z tematem
http://calibre-ebook.com
http://www.mobileread.com/forums/showth ... p?t=208534
Andrew Pitonyak: OpenOffice Macros Explained (http://www.pitonyak.org/book), str. 311-312
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Husar
Posty: 203
Rejestracja: śr mar 06, 2013 3:48 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: Husar »

Jeśli chodzi o wymieniony Calibre to z doswiadczenia wiem, że program nieźle radzi sobie z konwertowaniem tekstów z formatu .rtf do .mobi, wiec może poprzez analogię i z .rtf lepiej będzie do .epub.
Informacje o konwersji z różnych formatów nie tylko za pomocą Calibre można znaleźć na blogu http://www.swiatczytnikow.pl
Pozdrawiam
Roman

Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Wiele powinien wyjaśnić ten screen.
bez tytułu.JPG
Jest to podgląd (we writerze) fragmentu profesjonalnego pliku epub.
Wydawca określił jego typ jako "z przenoszeniem".
Na screenie widać łączniki opcjonalne.
W czytniku ebooków uzyskuje się w ten sposób dynamiczne dzielenie wyrazów.
Dla mnie taki epub wygląda najlepiej i stąd próby jego uzyskania we własnym zakresie.
Znalazłem polski pakiet Kombi do dtp, który jest w taką funkcję wyposażony, ale jest zbyt drogi.
Miałem nadzieję, że podpowiecie mi czy istnieje sposób w libre albo jakieś makro,
dzięki któremu mógłbym również osiągnąć podobny efekt.
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

valderis pisze:Wiele powinien wyjaśnić ten screen.
Tak, rozumiem, tylko nie byłem świadom, że fizyczne wstawianie soft-hyphenów do tekstu może mieć realne zastosowanie.
Trzeba pokombinować z dostępem do wzorców przenoszenia; sądzę, że przykład z Pitonyaka daje wstępny punkt zaczepienia.

PS. Nie jesteśmy zobligowani do ograniczania się do środowiska OOo. Każdy program operujący na tekście xml-owym i mający dostęp do słownika podziału wyrazów jest w stanie to zrobić.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

Pierwsza próba. W Basicu, bo jak kto nie zna na pamięć składni obiektów API, to debugger się przydaje.

Kod łapie akapity na głównym poziomie (z sekcjami włącznie), pomija tabele i ramki z tekstem.

Kod: Zaznacz cały

rem wykonaj na bieżącym dokumencie, po polsku
sub MainTest()
    oDoc = ThisComponent
    dim aLocale As New com.sun.star.lang.Locale
    aLocale.Language = "pl"
    aLocale.Country = "PL" 
    SetOptionalHyphens(oDoc, aLocale)
end sub

rem wykonaj na wskazanym dokumencie, we wskazanym języku
sub SetOptionalHyphens(oDoc, aLocale)
    if not HasUnoInterfaces (oDoc, "com.sun.star.text.XTextDocument") then
        exit sub
    end if
    oTextCursor = oDoc.Text.createTextCursor()
    oTextCursor.gotoStart(False)
    noArgs = Array()
    equalsign = "="
    softhyphensign = chr(173)
    oHyphen = createUnoService("com.sun.star.linguistic2.Hyphenator")
    if isNull(oHyphen) then
        exit sub
    end if
    do
        if oTextCursor.isStartOfWord() then
            oTextCursor.gotoEndOfWord(True)
            oCharLoc = oTextCursor.getPropertyValue("CharLocale")
            res = oHyphen.createPossibleHyphens(oTextCursor.getString(), aLocale, noArgs())
            if not IsNull(res) then
                srcWord = res.getPossibleHyphens()
                if InStr(1, srcWord, softhyphensign) = 0 then 
                    hyphenatedWord = Replace(srcWord, equalsign, softhyphensign) 
                    oTextCursor.setString(hyphenatedWord)
                end if
            end if
            oTextCursor.collapseToEnd()
        end if
    loop while oTextCursor.gotoNextWord(False)
end sub

function Replace(Source As String, Search As String, NewPart As String)
    dim Result As String
    dim StartPos As Long
    dim CurrentPos As Long
    Result = ""
    StartPos = 1
    CurrentPos = 1
    if Search = "" then
        Result = Source
    else 
        do while CurrentPos <> 0
            CurrentPos = InStr(StartPos, Source, Search)
            if CurrentPos <> 0 then
                Result = Result + Mid(Source, StartPos, _
                CurrentPos - StartPos)
                Result = Result + NewPart
                StartPos = CurrentPos + Len(Search)
            else
                Result = Result + Mid(Source, StartPos, Len(Source))
            end if 
        loop 
    end if 
    Replace = Result
end function
Część inspiracji pochodzi od Andrew Pitonyaka (AndrewMacro strona 167 oraz OOME strony 311-312); funkcję replace wziąłem żywcem z http://wiki.openoffice.org/wiki/Documen ... Library%29 -- ale to standard biblioteczny. Jeśli starczy samozaparcia, przygotuję lepszą wersję w Pythonie.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Opis programowego algorytmu dzielenia w Kombikorze.
http://www.3n.com.pl/index.php?i=http:/ ... mbikor.php
Dzielenie tekstu na sylaby


Program umożliwia podzielenie tekstu na sylaby w oparciu o wbudowany słownik zawierający wyjątki dzielenia oraz – dla pozostałych wyrazów – w oparciu o pro­gramowy algorytm dzielenia.

Algorytm dzielenia tekstu na sylaby w KombiKorze jest następujący: najpierw analizator tekstu wydziela kolejny wyraz z tekstu i sprawdza, czy wyraz zawiera przynajmniej taką liczbę liter jak zadeklarowano w polu Minimalna liczba liter wyrazu dzielonego w oknie opcji dzielenia.

Dalej sprawdzana jest opcja Dziel wyrazy pisane kapitalikami. Jeśli jest ona wyłączona – program sprawdza, czy wyraz nie składa się z samych wielkich liter. Jeśli tak jest, to program przechodzi do następnego wyrazu. Kolejną sprawdzaną opcją jest Nie dziel ostatniego wyrazu w akapicie. Jeśli jest ona aktywna, a po analizowanym wyrazie nie ma już innych wyrazów przed następnym akapi­tem, to program nie dzieli tego wyrazu.
Następnie program sprawdza, czy wyraz znajduje się w bazie słów, a jeżeli tak, to do jakiego słownika należy. Jeśli wyraz należy do słownika symboli, to nie jest on dzielony, w przeciwnym wypadku program buduje tablicę podziałów dla wyra­zu. Przy budowaniu tej tablicy najpierw uwzględniane są podziały wskazane przez użytkownika (jeśli użytkownik zakazał dzielenia wyrazu, to program w tym miejscu przechodzi do następnego wyrazu). W drugiej kolejności (jeśli nie było podziałów użytkownika) program porównuje początek wyrazu z listą przedro­stków do dzielenia (listę tę można edytować w oknie konfigurowania modułu sło­wnikowego). Jeśli początek wyrazu zostanie dopasowany do jednego z przedro­stków, program to zapamiętuje i przechodzi do trzeciego etapu dzielenia, czyli do szukania sylab. Tutaj program poszukuje samogłosek (poczynając od następ­nej litery po ewentualnym podziale po przedrostku) i wstawia podział między dwie sąsiednie samogłoski lub jeśli są przedzielone jedną spółgłoską – to po pier­wszej samogłosce, lub jeśli więcej niż jedną spółgłoską – to po pierwszej spół­głosce (chyba, że rozdzielana para spółgłosek należy do zbioru nie rozdzielanych dwuznaków, np. sz, cz, rz, itd.; listę tę możemy zmieniać w oknie konfigurowa­nia modułu słownikowego). Jest to na razie tablica podziałów dla wyrazu. Teraz dane z tablicy porównywane są z opcjami Minimalna liczba liter przed pier­wszym podziałem oraz Minimalna liczba liter po ostatnim podziale. W tekst wstawiane są tylko te wartości z utworzonej wcześniej tablicy, które speł­niają wymienione wcześniej warunki.

Jeśli wyraz nie został znaleziony w słowniku – sprawdzany jest stan opcji Dziel tylko wyrazy znalezione w słowniku. Jeśli opcja jest wyłączona, to program realizuje wcześniej omówiony algorytm poczynając od etapu poszukiwania przed­rostków.
Po podzieleniu całego tekstu sprawdzany jest stan opcji Wstaw podziały bez znaku. Podział bez znaku jest specjalnym podziałem, który stosujemy np. w ta­kich ciągach znaków: C:\Kombi\Dokumenty\Moje\Test.KMD. W ciągu tym dozwo­lone jest przeniesienie po każdym znaku \, ale nie chcemy, aby po tym znaku po­jawił się znak przeniesienia. Z drugiej strony, aby umożliwić przeniesienie mogli­byśmy po tych znakach wstawić spacje, ale w przypadku niewykorzystania takie­go przeniesienia wyglądałoby to brzydko. Podziały bez znaku rozwiązują ten problem. Przy ich wstawianiu program wykorzystuje listę Podziały bez znaku po znakach, którą edytujemy w oknie konfigurowania modułu słownikowego.
Ostatnim etapem dzielenia tekstu jest znalezienie miejsc występowania łączni­ków (np. w połączeniach typu matematyczno-fizyczny) i wstawieniu znaku podzia­łu przed każdy łącznik. Zapewnia to graficznie prawidłową postać podzielenia ta­kiego połączenia, która polega na występowaniu dwóch łączników – na końcu wiersza dzielonego i na początku następnego.
Dzielenie odbywa się zawsze od miejsca, w którym znajduje się kursor do końca tekstu, chyba że w tekście jest zaznaczony fragment – wtedy dzielony jest tylko ten fragment.
LibreOffice 4.0.1 na Windows XP
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Jan_J pisze:Pierwsza próba...
Działa! Brawo!
Dziękuję bardzo.
Lecę eksperymentować.
LibreOffice 4.0.1 na Windows XP
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Jan_J pisze:Pierwsza próba...
byłoby świetnie gdyby ta próba była z rozszerzeniem .oxt :) .
LibreOffice 4.0.1 na Windows XP
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Przenoszenie działa, sprawdzone na kliku plikach epub.
Użyłem 2 czytników, które nie mają zainstalowanego słownika języka polskiego.
Janie_J :bravo:

ps. SOLVED czy oczekiwanie na lepszą wersję?
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

Python (2.6 jak w Apache lub 3.x jak w Libre, wszystko jedno)

Kod: Zaznacz cały

# coding: utf8
import sys
import uno

def createUnoService(serviceName):
    ctx = uno.getComponentContext()
    return ctx.ServiceManager.createInstanceWithContext(serviceName, ctx)

# Danny Brewer 2004
def hasUnoInterface( oObject, cInterfaceName ):
    """Similar to Basic's HasUnoInterfaces() function, but singular not plural."""

    # Get the Introspection service.
    oIntrospection = createUnoService("com.sun.star.beans.Introspection")

    # Now inspect the object to learn about it.
    oObjInfo = oIntrospection.inspect(oObject)

    # Obtain an array describing all methods of the object.
    oMethods = oObjInfo.getMethods(uno.getConstantByName("com.sun.star.beans.MethodConcept.ALL"))

    # Now look at every method.
    for oMethod in oMethods:
        # Check the method's interface to see if
        #  these aren't the droids you're looking for.
        cMethodInterfaceName = oMethod.getDeclaringClass().getName()
        if cMethodInterfaceName == cInterfaceName:
            return True
    return False

def setOptionalHyphens(oDoc, aLocale):
    ''' wykonaj na wskazanym dokumencie, we wskazanym języku '''

    if not hasUnoInterface(oDoc, "com.sun.star.text.XTextDocument"):
        return

    equalitySign = "="
    if sys.version_info.major < 3:
        softHyphenSign = unichr(173)
    else:
        softHyphenSign = chr(173)

    oHyphen = createUnoService("com.sun.star.linguistic2.Hyphenator")
    if oHyphen is None:
        return

    oTextCursor = oDoc.Text.createTextCursor()
    oTextCursor.gotoStart(False)
    result = True
    while result:
        if oTextCursor.isStartOfWord():
            oTextCursor.gotoEndOfWord(True)
            # oCharLoc = oTextCursor.getPropertyValue("CharLocale")
            res = oHyphen.createPossibleHyphens(oTextCursor.getString(), aLocale, ())
            if res is not None:
                aWord = res.getPossibleHyphens()
                if equalitySign in aWord and not softHyphenSign in aWord:
                    aWord = aWord.replace(equalitySign, softHyphenSign)
                    oTextCursor.setString(aWord)
            oTextCursor.collapseToEnd()
        result = oTextCursor.gotoNextWord(False)

def mainTest():
    ''' wykonaj na bieżącym dokumencie, po polsku '''

    desktop = createUnoService("com.sun.star.frame.Desktop")
    doc = desktop.getCurrentComponent()
    loc = uno.createUnoStruct('com.sun.star.lang.Locale')
    loc.Language = "pl"
    loc.Country = "PL"
    setOptionalHyphens(doc, loc)

g_exported_script = (mainTest, setOptionalHyphens, )
Co do oxt: o ile chętnie eksperymentuję z kodem (bo to mnie interesuje), to do budowania paczek mam mniejszego znacznie kopa motywacyjnego. Można to nazwać różnie: lenistwo, minimalizm, ukierunkowanie zainteresowań, amatorszczyzna. Dla mnie system o otwartej architekturze, nie wymagający instalatorów rozszerzeń, jest naturalnym środowiskiem pracy. Także upublicznianie tego typu rozwiązań, póki pozostaje w obszarze działań wolontariatu, jest jak najbardziej dopuszczalne.
Prawdę mówiąc, budowanie dodatków dla każdego maleńkiego makropolecenia mija się trochę z celem. Zwłaszcza biorąc pod uwagę zasoby czasowe: jakieś dwie godziny na kod, ale już około dniówki lub więcej na paczkowanie -- przynajmniej dla mnie. Ale może ktoś inny spróbuje. Kod udostępniam jako public domain.
Poza tym ten kod tylko pokazuje, jak dostać się do słownika. Do pełnego rozwiązania (wykrywanie stylów typu verbatim, uwzględnianie punktów podziału i ew. zakazów sugerowanych przez użytkownika, obsługa lokalnie zdefiniowanych języków, podstawowe opcje konfiguracyjne) jeszcze trochę wysiłku koncepcyjnego trzeba by włożyć. Paczkowanie takich szkiców moim zdaniem nie ma sensu, wprowadza tylko w błąd użytkownika, który sądzi, że dostał kompletny produkt.
Opracowanie dodatku w tym przypadku byłoby pożądane. Ale najpierw warto przemyśleć kilka założeń -- najlepiej zbiorowo, z praktykami, a potem przetestować ich zasadność.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Jan_J, jeszcze raz dziękuję.
LibreOffice 4.0.1 na Windows XP
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Gdzie znajdę opis jak uruchomić tę drugą wersję makra?
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Zrobiłem tak:
tekst skopiowałem do notatnika, zapisałem jako xxx.py, kodowanie ustawiwszy na utf-8.
Plik xxx.py wkleiłem do katalogu user po utworzeniu podkatalogu Python.
Po uruchomieniu swriter makro się nie uruchamia.
Widnieje w bibliotece moje makra, ale polecenie "uruchom" jest nieaktywne.
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

No tak, bo Python to taki fajny język, wrażliwy na białe znaki na początku wiersza i na głębokości wcięć. Nie ma się co śmiać, jest to cena maksymalnego uproszczenia detali składniowych.

Powinienem był pamiętać, że kopiowanie z codeboxa na forum dokłada spacje, a tego Python nie znosi.

Załączam ten sam kod w pliku. Działa, jako i poprzedni działał, żadnych zmian nie robiłem prócz komentarza.
shy.py.txt
(2.62 KiB) Pobrany 365 razy
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Pobrałem plik.
Zmieniłem nazwę na shy.py.
Wkleiłem do podkatalogu python.
Jest na liście makr, polecenie uruchom - nieaktywne.
Czy do pobrania nie mógłby być gotowy shy.py zamiast shy.py.txt?
Proszę o cierpliwość i wyrozumiałość.
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

Mógłby, ale py nie ma w tym momencie na liście dopuszczalnych rozszerzeń.
shy.py nie jest poleceniem, raczej biblioteką funkcji. Rozwiń gałąź shy, uruchom mainTest().
Powinno działać, sprawdziłem na Libre 4.0.1 Portable pod W7. Pod AOO jest Python 2.6 a nie 3 jak w LO, ale w moim kodzie nie ma nic, co by wymagało konkretnej wersji języka.

Cierpliwość się należy, nie zgrzeszyłem wyczerpującym opisem sposobu użycia.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Jan_J pisze:Rozwiń gałąź shy, uruchom maniTest()
ale u mnie wygląda to tak, nie ma możliwości rozwinięcia.
Załączniki
shy.PNG
shy.PNG (2.42 KiB) Przejrzano 9937 razy
LibreOffice 4.0.1 na Windows XP
Jan_J
Posty: 4629
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: Jan_J »

Tak się dzieje, kiedy plik nie jest poprawnie napisanym programem.
Ale ja go odpalam w LO Portable 4.0, a pod Pythonem 3.x wczytanie przebiega bez przeszkód.

Czy na pewno masz w user/Scripts/python tę wersję pobraną z załącznika, bez innych plików shy.* ?
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
valderis
Posty: 16
Rejestracja: ndz mar 17, 2013 9:47 am

Re: [SOLVED] Automatyczne wstawianie łącznika opcjonalnego

Post autor: valderis »

Moja wiedza uniemozliwia eksperymentowanie, stosuję się dokładnie do wskazówek.
Pozwoliłem sobie jedynie na wklejenie skryptu do innego katalogu, do głównego libreoffice w Program Files,
C:\Program Files\LibreOffice 4.0\share\Scripts\python.
Shy pojawił sie w bibliotece Makra LibreOffice (poprzednio w Moje makra), gałąź się rozwija, pojawia się mainTest, polecenie Uruchom jest aktywne, skrypt wykonuje zadanie.
Dziękuję.
LibreOffice 4.0.1 na Windows XP
ODPOWIEDZ