Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 12. 10. 2015 19:41:34

Dominik123
Člen
Registrace: 12. 10. 2015
Příspěvků: 1

Vysvětlivky

Dobrý den, formátuji text a když chci vložit vysvětlivku,tak mi to vždy automaticky přeskočí na úplný konec dokumentu na začátek nové stránky, i když poznámka pod čarou funguje tak jak má..Nevíte čím by to mohlo být? Díky za odpověď.

Offline

#2 12. 10. 2015 20:13:57

Zvedavec
Člen
Registrace: 8. 11. 2004
Příspěvků: 484

Re: Vysvětlivky

Věřím, že když upřesníte balík (OO/LO) a verzi a ideálně vystavíte kousek dokumentu, kde to dělá, zvýší se pravděpodobnost pomoci.


LO většinou poslední verze, na W10 prof. 32b/64b

Offline

#3 13. 10. 2015 05:52:21

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Ono je to logické. Vysvětlivka je odkaz který se zobrazí jen když se zavolá (klikne se na ni). Mohla by to sice být skrývaná sekce, respektive skrytý text, ale v principu je to podobný seznam jako rejstřík. V LO je rejstřík vysvětlivek vidět a v AOO také i když si myslím že by být vidět nemusel. Například běžné tištěné dokumenty mají vysvětlivky na konci každé stránky. Zde jsou všechny na konci dokumentu.
     Každý balík to může provádět jinak, ale pokud to chodí jak má tak bych se nezabýval tím jak se to technicky realizuje.
     Problém vidím spíš v tom, že kliknutí neakceptuje režim jen pro čtení. Ale i tak je to odkaz bez návratu - což je nepříjemné vzhledem k tomu, že skočíme na konec dokumentu. Pak zbývá vytvořit k tomu ještě křížový odkaz kterým se lze vrátít do hlavního textu na pozici vysvělivky.
     Za větší problém bych pokládal skutečnost, že po exportu do PDF kliknutí na vysvětlivku nefunguje vůbec. Když tam ale dáme křížový (zpětný) odkaz funguje to i v PDF.
     Takže v každém případě doporučuji křížové odkazy. Bohu žel z přincipu to musí být duplicita k vysvětlivce. Pak by měla vysvětlivka se zpětným odkazem vypadat asi takto (ii 2) v hlavním dokumentu a to "ii" je horní index. Dvojka je návratová poloha křížového odkazu.
     Asi by šlo "vymazlit" rejstřík a udělat si jen křížové odkazy. Ale to už je daleko za původním dotazem.

Editoval neutr (13. 10. 2015 06:42:29)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 6. 8. 2020 08:43:57

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý den,

zajímalo by mne, zda lze v každé kapitole resetovat číslování vysvětlivek.

Děkuji.

Editoval Petr_K (8. 8. 2020 07:46:59)

Offline

#5 6. 8. 2020 11:53:02

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Vysvětlivky

Jestli to chápu dobře tak byste pro každou kapitolu chtěl mít číslování Vysvětlivek třeba od 1. S Vysvětlivkami to nejde, a připadá mi že to ani nemá cenu, neb vysvětlivky se všechny umisťují až na konec dokumentu, takže k čemu by na konci mělo být číslování Vysvětlivek třeba 1,2,3,1,2,1,1,1,2,3 atd.?


Jde to však s Poznámkami pod čarou, Nástroje/ Poznámky pod čarou a vysvětlivky -> karta Poznámky pod čarou, Začít od a vybrat V kapitole. Funguje jen pro Umístění na Konec stránky. To vám bude Poznámky číslovat od začátku v každé kapitole a umístěné je budete mít standartně dole na stránce, velikost prostoru pro ty Poznámky a styl oddělující čáry si nastavíte ve Formát/ Styl stránky -> karta Poznámky pod čarou.

Offline

#6 6. 8. 2020 13:18:06

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Pro Petr_K.
     Nestačilo by Vám do textu vysvětlivky zadat na začátek číslo stránky? Tedy musel byste manuálně zadat na začátku věty například "Strana 6" a podobně.
     Další možností by bylo vkládat jednotlivé stránky jako sekce, ale co stránka tak soubor. To je neproduktivní a lepší by bylo řešení od kamlana, nebo ten ruční zápis čísla stránky.


     Šlo by to udělat například textovým rámcem a místo vysvětlivek, nebo poznámek pod čarou udělat klasické pole odkazu, nebo pole záložky. Je to složitější, ale docílíte co potřebujete.


     Musíte si uvědomit, že se snadno text přesouvá při nějakém zásahu do předchozího textu. Když přidáte například řádek, může se odstavec, nebo jen věta posunout na další stránku. Typicky si vytvoříte strukturu a obsah dokumentu. Po kontrole zadáte vytvořit rejstřík na začátku a nepřejte si ten zmatek. Musíte vědět kde zalomit řádky a kde stránky, jak dělat stejný styl pro podobné stránky atd .....


     Když to budou klasické vysvětlivky, nebo poznámky pod čarou, tak tohle vše není důležité. Je také možné spouštět makrem různé dialogy které zobrazí potřebné, nebo se nastaví odkrytí jinak skrytého odstavce za větou nebo odstavcem ap.

Editoval neutr (6. 8. 2020 13:20:23)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 8. 8. 2020 07:50:16

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Děkuji za odpovědi.

V knize, kterou si převádím do souboru odt, je v každé kapitole nové číslování veršů a ke každému verši jsou poznámky od několika autorů. Proto jsem chtěl číslování veršů spojit s číslem poznámky. Odlišeny by byly číslem kapitoly.  Navíc bych rád do poznámek průběžně zasahoval a je popř. rozšiřoval. Také výsledný soubor potřebuji převést do formátu mobi, abych jej mohl číst ve čtečce. Tam převod souboru s vysvětlivkami funguje dobře.

Co jsem se chtěl dozvědět jsem se dozvěděl: Číslování vysvětlivek nelze v každé kapitole resetovat.

Poznámky pod čarou vyzkouším.

Dotaz pokládám za Vyřešený.

Offline

#8 21. 7. 2022 18:15:21

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý den,
ještě příspěvek k resetování vysvětlivek v nové kapitole.

Rozhodl jsem se vytvořit si makro, které se při spuštění zeptá na konečné číslo vysvětlivky v kapitole a pomocí cyklu For - Next plní integer proměnnou i a následně její hodnotu přiřadí string proměnné cv.
potom provede:

Print "cv = " + cv
args4(0).Name = "FootnoteAnchorText"
args4(0).Value = cv
dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args4())

Poprvé to funguje a vytvoří se vysvětlivka č. 1 podruhé mi to vypíše chybu:
BASIC - chyba při běhu.
Vyskytla se výjimka
Type: com.sun.star.lang.IllegalArgumentException
Message: sequence element is not assignable by given value! /build/libreoffice-still/src/libreoffice-7.2.7.2/stoc/source/corereflection/crarray.cxx:172.
a vysvětlivka má místo č. 2 znak i.
Ve výpisu print však vidím 2.

Jsem s makry začátečník a tak prosím o pomoc.

Děkuji.

Petr_K

Offline

#9 22. 7. 2022 04:50:08

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Petr_K napsal(a)

... Rozhodl jsem se vytvořit si makro, které se při spuštění zeptá na konečné číslo vysvětlivky v kapitole a pomocí cyklu For - Next plní integer proměnnou i a následně její hodnotu přiřadí string proměnné cv.
potom provede:


Print "cv = " + cv
args4(0).Name = "FootnoteAnchorText"
args4(0).Value = cv
dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args4())


Poprvé to funguje a vytvoří se vysvětlivka č. 1 podruhé mi to vypíše chybu: ...

     Tohle bude mít chybu v přiřazení. Argument ".Value" v UNO znamená číslo, ale Vy to přiřazujete zřejmě jako text (ten se z čísla stane dodatečně automaticky). Domnívám se, že cv by se mělo rovnat číslu z iterátoru. například
For i = 1 to 10
cv = i
...
...
...
Next i.
     Potom ale dostanete klasické číslování. Pro každou kapitolu samostatně by šlo udělat samostatné číslování v rámci jednotlivých samostatných kapitol sloučených v "Hlavním dokumentu", ale to nevím jistě. Jednoduše každá kapitola jako samostatný dokument vygeneruje svoje číslování od jedničky. Nevím ale jestli to při sloučení kapitol nebude přepsáno.
     V každém případě ať už to děláte jakkoliv, potřebuji vidět celé makro, abych určil chybu. To co popisujete v hlášení funkce print je dáno skutečně jako číslo protože Print cv = + cv při cv = 0 + 1, ale při dalším kroku iterace cv = 1 + 2, ale očekáváte (1+1). Systém zřejmě zjistí, že řada 1, 3, není korektní a vyhodí chybu. Také je zřejmé, že číslo je zavedeno ve výstupu jako text a kontroluje se pouze řada ve formě "string" podobně jako po, út, st, čt, pá, so, ne a další podobné řady. jde totiž o lexikální řazení rejstříků (alfabetické), což je řazeno jinak, nežli číselné řady.


     Osobně bych to řešil opravdu jinak, například jako text odstavce s formátem poznámky a pořadím stránka/ číslo poznámky, nebo kapitola/číslo poznámky. K tomu jsou pole která se vkládají snadno.

     Nevím zda víte o možnosti nastavit poznámky z volby NÁSTROJE > POZNÁMKY / VYSVĚTLIVKY > v dialogu (nastavení) nastavit číslování, „začít od" = V kapitole, „umístění" = konec stránky. Také to můžete nastavit jako Vámi definovaný rejstřík na konci kapitoly a na konci stránek to být nemusí – vše až v tom rejstříku na konci kapitoly. Nastavení je dost flexibilní. Nezdá se mi dobré snažit se přejinačit defaultní funkcionalitu zejména když to lze simulovat vestavěnými prostředky.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 23. 7. 2022 08:46:05

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Děkuji Vám za odpověď,

pokusím se stručně vylíčit, o co mi jde.

Pokouším se převést starší část bible do formátu odt. Bible je rozdělena na kapitoly (Hlava 1 atd.) a každá Hlava má své číslování veršů od 1 do x. V originále je skutečně každá poznámka k verši na stránce kde je daný verš, ale při čtení to dost ruší. Proto si myslím, že by bylo lepší dát poznámky jako vysvětlivky na konec knihy popř. do jiného souboru. Číslování vysvětlivek jsem prováděl ručně, ale to je značně náročné, hlavně na čas.

Teď k makru:
Tady je celý i s hledáním místa, kam se má odkaz na vysvětlivku vložit:

sub Hledani
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(21) as new com.sun.star.beans.PropertyValue
dim i%
dim cv$
i = 1
For i = 1 to 15
rem i = i + 1
cv = i

rem Print cv,C
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 1
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65536
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "( )[:digit:]{1,}( )"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ""
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1073743104
args1(18).Name = "SearchItem.Command"
args1(18).Value = 0
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 2
args1(21).Name = "Quiet"
args1(21).Value = true

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue

args4(0).Name = "FootnoteAnchorText"
args4(0).Value = cv
Print "Proměnná args4(0).Value je typu "+TypeName(args4(0).Value)+" a má hodnotu: "+args4(0).Value

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args4())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

Next i

end sub

Proměnná args4(0).Value je string a vložit do ní číselnou proměnnou "i" se mi nepodařilo, proto jsem použil string proměnnou "cv". Vypisuji si typ proměnné args4(0).Value a její hodnotu a vše je zdánlivě správně a přesto to při druhém průchodu hodí zmíněnou chybu. Nevím, jak funguje funkce .uno:InsertEndnote a nevím, kde bych o ní něco našel.
Příkaz

Print "cv = "+cv

podle mě nic nepřičítá, ale pro výpis na obrazovku spojuje text s hodnotou proměnné.

Tak snad jsem na nic nezapomněl.

Neutr: Dovolil jsem si Vám poslat pokusný soubor odt s textem i makrem.

Za případné odpovědi předem děkuji.

Petr_K

Offline

#11 23. 7. 2022 10:11:44

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Tak problém byl v tom, že jsem chtěl podruhé definovat

dim args4(0) as new com.sun.star.beans.PropertyValue

args4(0).Name = "FootnoteAnchorText"

Petr_K

Offline

#12 23. 7. 2022 17:13:45

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Ano potom máte ale problém v tom, že originální makro zapisuje novou vysvětlivku. Po vaší nahrané úpravě původní číslování odstraní - viz zde :

args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ""

     Potom args4 vkládal jinou číselnou řadu. Takže pokud to chápu správně, potřebujete pouze redifinovat umístění existujících vysvětlivek - žádné jiné úpravy, nebo vkládání. Pokud toto potvrdíte najdu řešení. Možná stačí pouze smazat výše uvedený argument args1[12], ale to takto neodhadnu. Ráno se na to podívám, ale budu čekat na potvrzrní, že to chápu správně.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#13 26. 7. 2022 07:54:47

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Petr_K napsal(a)

Dobrý den,
ještě příspěvek k resetování vysvětlivek v nové kapitole.

Rozhodl jsem se vytvořit si makro, které se při spuštění zeptá na konečné číslo vysvětlivky v kapitole a pomocí cyklu For - Next plní integer proměnnou i a následně její hodnotu přiřadí string proměnné cv.
potom provede:

Print "cv = " + cv
args4(0).Name = "FootnoteAnchorText"
args4(0).Value = cv
dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args4())

Poprvé to funguje a vytvoří se vysvětlivka č. 1 podruhé mi to vypíše chybu:
BASIC - chyba při běhu.
Vyskytla se výjimka
Type: com.sun.star.lang.IllegalArgumentException
Message: sequence element is not assignable by given value! /build/libreoffice-still/src/libreoffice-7.2.7.2/stoc/source/corereflection/crarray.cxx:172.
a vysvětlivka má místo č. 2 znak i.
Ve výpisu print však vidím 2.

Jsem s makry začátečník a tak prosím o pomoc.

Děkuji.

Petr_K

     Autor se tímto příspěvkem vrací potřetí na stejné téma s tím, že stále sleduje záměnu v provedení vysvětlivek, respektive poznámek pod čarou. Zabývá se tím nejméně od 6. 8. 2020. Takže si cením jeho vytrvalosti při hledání řešení problému.
     Nicméně toto téma popsal dokonce vícekrát, ale nekomunikuje. Jeho poslední popis nahraného makra obsahuje dost podstatné chyby, jejich příčinou jsou 3 nedostatky.
A.   Nahrané makro vychází z nastavení číslování, které měl v té době nahrávání makra nastaveno na malá římská čísla. Proto se objevuje dotazovaná chyba proč se místo čísla 2 objeví "i".
B.   Vyhledávání je provedeno pomocí regulárních výrazů, které hledají jednomístná čísla, ale jakákoliv. Cyklus For ... Next je postaven od 1 do 15, což znamená jen to, že dvojmístná čísla přeskočí, ačkoliv je zřejmě chtěl také nahradit.
C.   Cyklus for je použít chybně. Nemůže mít vnořené vyhledávání, protože samotné vyhledávání už prohledává pomocí While. Cyklus musí zadávat číslo do volaného vyhledávání, kterému musí předávat požadovanou hodnotu.


     Správně se musí hledat pole FootNote (poznámka pod čarou) a nahradit polem EndNote (vysvětlivka). K tomu je potřeba najít kotvy polí, které je nutno smazat a hned nahradit za jiný typ (nyní EndNote). Navíc jsou objekty FootNote a EndNote specifikované jako „pro čtení" závislé na existenci kotvy.
     Ovšem popis makrem autora neobsahuje vlastní text uvedený "pod čarou". Tyto "note" mají dvě polohy - jednu pro vlastní odkaz v textu, a druhý na místě shromažďování vysvětlujícího textu (buď na konci stránky, kapitoly, nebo celého dokumentu). V tomto smyslu jsou FootNote i EndNote identické. Jedná se pouze o formát "odstavce", což se musí nastavit v dialogu NÁSTROJE > POZNÁMKY POD ČAROU A VYSVĚTLIVKY.
     Jak asi tušíte, lze formát odstavce s obsahem textu  nastylizovat podle sebe a určit stejný styl pro FootNote i EndNote. Tím se dá naráz změnit styl obou druhů „Note" pro celý dokument. Proto je zbytečné jednotlivé typy navzájem nahrazovat makrem. Jde jen o volbu kam se budou texty shromažďovat (konec stránky, konec kapitoly, konec dokumentu).


     Bohu-žel nedostatečná komunikace s autorem mne vede k tomu, že jsem vytvořil makra pro správné nahrazování, ač je pokládám za zbytečná. Vzor kódu neobsahuje žádný text, takže ani moje řešení texty neobsahuje. Není zřejmé, co chce autor příspěvku s texty různých „Note" dělat. Podle všeho je chce sloučit, ale jak? Zanedbá různé autory, nebo je někde v rejstříku uspořádá podle autorů? Bude potřebovat dva (nebo více) různých druhů uspořádání?

Sub Spustit
fn = thiscomponent.footnotes
for i = fn.count-1 to 0 step -1
oWriterEndNote(i)
next i
End Sub

Sub oWriterEndNote(ByVal i as integer)
	Dim oAnchor 
	Dim oCursor 
  	Dim oMarks
  	Dim oCurs
	Dim oDoc
	Dim oFootNote
	Dim Dummy()
		oDoc = ThisComponent
			oText = oDoc.getText() 
			oCurs = oDoc.Text.createTextCursor()
			oCurs.gotoEnd(False)
			oCurs.goLeft(1,false)
		    oMarks = thiscomponent.footnotes 
			oAnchor = oMarks.getByIndex(i).getAnchor()
  			oCursor = oDoc.getCurrentController().getViewCursor()
  			oCursor.gotoRange(oAnchor, false)
  			oDoc.getCurrentController().select(oFootNote)
  			zmenit
End Sub

sub zmenit
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, Array())
end sub

     Moc jsem se s tím nemazlil. Nahradil jsem jen nesprávné vyhledávání polí a jejich kotvy. Tuto pak nahrazuji kódem UNO, což způsobuje, že makro skáče jako koza. Také je otázkou na jaký objem (stránka, kniha, kapitola) se makro použije. Je to možné omezit různými způsoby a obsahy textů dopsat ručně. Prostě nevím co autor potřebuje. Nejspíš na to přijde sám a vytvoří další dotaz.

     Tento příspěvek sem dávám jen proto, že řešení by někoho mohlo v budoucnu zajímat. Mimo jiné musím poznamenat, že na jiných fórech přispěvatelé postup mazání kotvy nedoporučují kvůli nečekaným efektům. Při smazání kotvy se upraví také rejstříky a při zavedení nové kotvy opět. Může to vést zejména u velkých objemů textu například k pádům Writeru. Makra potřebují docela jistě nastavit čas pro jednotlivé úkony, aby se tyto nepotkávaly s výsledkem zaseknutí a pádu. To znamená pečlivou optimalizaci a podobně.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 26. 7. 2022 22:06:10

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý večer,
omlouvám se za svou nekomunikaci. Párkrát jsem se podíval do diskuze a odpověď na můj poslední příspěvek žádná nebyla, tak jsem to přestal sledovat.
Opravdu, v makrech jsem začátečník a tak dělá jistě hrozné chyby.
Možná jsem nejasně formuloval o co mi jde. Originál knihy je ve formátu pdf. Takže vyexportuji text do souboru txt a ten upravuji ve writeru. Poznámky pod čarou jsou samozřejmě v textu a tak je přesunuji do jiného souboru odt. Takže v prvním souboru odt zůstane vlastní text s čísly veršů. Ty hledám a tam vkládám čísla vysvětlivek, které jsou zatím prázdné a v dalším kroku jejich text zkopíruji z druhého odt.
Na číslování jsem použil následující makro, protože cyklus FOR - NEXT použít nejde:

REM  *****  BASIC  *****

sub Vloz_vysvetl
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

dim i%,sVar%,prv%,psv%,cv$

 prv = InputBox ("Od verše:","Zadat počáteční číslo verše")
 psv = InputBox ("Do verše:","Zadat konečné číslo verše")

 sVar = MsgBox("Od verše: "+prv+"  do verše: "+psv,128 + 3,"Kontrola počtu veršů v Hlavě")

i = prv
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args101(0) as new com.sun.star.beans.PropertyValue
args101(0).Name = "FootnoteAnchorText"
args101(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args101())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args102(0) as new com.sun.star.beans.PropertyValue
args102(0).Name = "FootnoteAnchorText"
args102(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args102())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args103(0) as new com.sun.star.beans.PropertyValue
args103(0).Name = "FootnoteAnchorText"
args103(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args103())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args104(0) as new com.sun.star.beans.PropertyValue
args104(0).Name = "FootnoteAnchorText"
args104(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args104())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args105(0) as new com.sun.star.beans.PropertyValue
args105(0).Name = "FootnoteAnchorText"
args105(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args105())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args106(0) as new com.sun.star.beans.PropertyValue
args106(0).Name = "FootnoteAnchorText"
args106(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args106())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args107(0) as new com.sun.star.beans.PropertyValue
args107(0).Name = "FootnoteAnchorText"
args107(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args107())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args108(0) as new com.sun.star.beans.PropertyValue
args108(0).Name = "FootnoteAnchorText"
args108(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args108())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args109(0) as new com.sun.star.beans.PropertyValue
args109(0).Name = "FootnoteAnchorText"
args109(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args109())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args110(0) as new com.sun.star.beans.PropertyValue
args110(0).Name = "FootnoteAnchorText"
args110(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args110())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args111(0) as new com.sun.star.beans.PropertyValue
args111(0).Name = "FootnoteAnchorText"
args111(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args111())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args112(0) as new com.sun.star.beans.PropertyValue
args112(0).Name = "FootnoteAnchorText"
args112(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args112())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args113(0) as new com.sun.star.beans.PropertyValue
args113(0).Name = "FootnoteAnchorText"
args113(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args113())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args114(0) as new com.sun.star.beans.PropertyValue
args114(0).Name = "FootnoteAnchorText"
args114(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args114())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args115(0) as new com.sun.star.beans.PropertyValue
args115(0).Name = "FootnoteAnchorText"
args115(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args115())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args116(0) as new com.sun.star.beans.PropertyValue
args116(0).Name = "FootnoteAnchorText"
args116(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args116())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args117(0) as new com.sun.star.beans.PropertyValue
args117(0).Name = "FootnoteAnchorText"
args117(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args117())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args118(0) as new com.sun.star.beans.PropertyValue
args118(0).Name = "FootnoteAnchorText"
args118(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args118())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args119(0) as new com.sun.star.beans.PropertyValue
args119(0).Name = "FootnoteAnchorText"
args119(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args119())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args120(0) as new com.sun.star.beans.PropertyValue
args120(0).Name = "FootnoteAnchorText"
args120(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args120())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args121(0) as new com.sun.star.beans.PropertyValue
args121(0).Name = "FootnoteAnchorText"
args121(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args121())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args122(0) as new com.sun.star.beans.PropertyValue
args122(0).Name = "FootnoteAnchorText"
args122(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args122())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args123(0) as new com.sun.star.beans.PropertyValue
args123(0).Name = "FootnoteAnchorText"
args123(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args123())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args124(0) as new com.sun.star.beans.PropertyValue
args124(0).Name = "FootnoteAnchorText"
args124(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args124())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

rem ----------------------------------------------------------------------
dim args125(0) as new com.sun.star.beans.PropertyValue
args125(0).Name = "FootnoteAnchorText"
args125(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args125())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args126(0) as new com.sun.star.beans.PropertyValue
args126(0).Name = "FootnoteAnchorText"
args126(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args126())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args127(0) as new com.sun.star.beans.PropertyValue
args127(0).Name = "FootnoteAnchorText"
args127(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args127())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args128(0) as new com.sun.star.beans.PropertyValue
args128(0).Name = "FootnoteAnchorText"
args128(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args128())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args129(0) as new com.sun.star.beans.PropertyValue
args129(0).Name = "FootnoteAnchorText"
args129(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args129())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args130(0) as new com.sun.star.beans.PropertyValue
args130(0).Name = "FootnoteAnchorText"
args130(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args130())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

IF i >= psv Then GoTo Konec
i = i + 1
cv = i

Search(dispatcher,document)

rem ----------------------------------------------------------------------
dim args131(0) as new com.sun.star.beans.PropertyValue
args131(0).Name = "FootnoteAnchorText"
args131(0).Value = cv

dispatcher.executeDispatch(document, ".uno:InsertEndnote", "", 0, args131())


rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PageUp", "", 0, Array())

Konec:
end sub

Function Search(dispatcher,document)

rem dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(21) as new com.sun.star.beans.PropertyValue

args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 1
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65536
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "( )[:digit:]{1,}( )"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ""
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1073743104
args1(18).Name = "SearchItem.Command"
args1(18).Value = 0
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 2
args1(21).Name = "Quiet"
args1(21).Value = true

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

End Function

Připadá mi to strašně krkolomné, ale funguje to. Doufám, že až se v Basicu trochu zorientuji, tak to udělám "hezčí". Zatím vůbec netuším co znamenají různě číslované args(x).
K hledání čísel: požívám regulární výraz [:digit:]{1,}, který hledá jedno a vícečíselná čísla.

Neutr: Děkuji vám za trpělivost a za každou pomoc jsem moc vděčný, i když leckdy Váš příspěvek úplně nepochopím, doufám, že zatím smile.

Petr_K

Offline

#15 27. 7. 2022 06:38:05

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

V takovém případě, kdy formátujete soubor .txt je problém úplně jiný. Nevím například to, jak jste došel k tomu, že v textu máte FootNote a měníte ho na EndNote.
     Některé on-line prostředky umí převod z PDF do Word přímo, i když se to musí nejprve rozdělit na díly po několika stránkách (na to je také on-line nástroj). Pokud má původní PDF záložky, tak ty jsou také do Wordu převedeny, ale to už není „txt" jak píšete výše.
     Běžně se dá uložit PDF jako skutečný „txt", který ale nerozpozná pole, a tedy ani to zda jde o záložku, poznámku pod čarou, nebo vysvětlivku. Tomuto také odpovídá skutečnost, že obsah jednotlivých poznámek pod čarou (FootNote) extrahujete do samostatného souboru.


     Odříznout obsahy od kotev může být správný postup, ale nemusí se to tak dělat. Pokud převádíte stránku po stránce, budou nově označená pole „FootNote" pod stránkou, tedy těsně pod skutečným obsahem „Note" v formátu „txt". Potom stačí jednoduše texty přesunout na pozice obsahu polí. Jde to i makrem, i když tohle jsem nikdy netestoval. Myslím si, že by to nemělo být problematické.


     Problém vyhledávání spočívá v tom, jak čistý „txt" nezobrazuje původní kotvy. Bude to nejspíš nějaký typ číslování těsně před, nebo za slovem. Z toho se dá vycházet i v případě, že to není horní index. Také je zřejmé, že vlastní text „FootNote" bude obsahovat zřejmě zkratku na kapitolu a číslo verše, popřípadě i řádek – určitě také případy, kdy je odkaz na jinou kapitolu apod. Potom je možné místo „Note" použít plovoucí okno, které otevře odkaz přímo. Jde to udělat nejprve jako text do plovoucího okna, a pak až bude celá kniha převedena je možné z textového odkazu udělat skok přímo na odkazovaný obsah, nebo text „note" doplnit jako „hyperlink". V takovém případě se uživatel může spokojit jen s obsahem původního obsahu „note", nebo z tohoto okna přímo otevřít plné znění.
     Aby toho nebylo málo, bude potřebné naformátovat prvky osnovy jako například názvy kapitol a čísla veršů, i když toto nemusí nutně souviset jen s „Note". Budete potřebovat rejstřík, který se vytváří automaticky nad definovanými názvy a podobně.


     Vím, že máte vlastní představu a potřebu rozumět úpravě tak, abyste ji dokázal kdykoliv sám  editovat. Možná bych Vás mohl motivovat tím, že obsahy „note" budou ve skrytých odstavcích, nebo na kotvách bude „hyperlink" s názvem podobným jako mají „note" a jiná pole, tedy jen číslo například ve formě horního indexu který se otevře do nového okna, nebo do plovoucího okna. Prostě „note" z obsahu knihy vizuálně zmizí. Při zpětném převodu do PDF tyto odkazy budou zachované, a to také pokud to převedete do HTML (XHTML, PHP, nebo nějaký formát eBook).
     Bible má cca 1000 stran (podle verze a vydání), takže se vše musí dobře vyprojektovat. Najít nedostatek v polovině, nebo těsně před koncem práce by bylo hrozné.


     Takže pokud potřebujete opravdu poradit pošlete vzorek originální a pokud možno typické stránky(nek) ve formátu „.txt". Nejlépe celou kapitolu. Udělám podle možností několik verzí úprav, i když to nebude hned – chvilku mi to bude trvat.


_____________________________________________________
     Abych nezapomněl ta čísla argumentů fungují jako řadič pro postup makra, ale není dobré spoléhat se na to, že makro načte první argument s nejnižším číslem tak jak je vidět u Vás (argument 1 je úplně na konci). Existují argumenty bez čísla (například .COPY, .CUT a podobně), které číslo argumentu nemají a fungují podle pořadí za nejbližším číslovaným argumentem. Výjimečně lze číslování argumentů vynechat, ačkoliv dafaultně číslo obsahují. Toto ale netestujte. Dělá se to pouze v případech kdy má makro jeden číslovaný argument. Ještě to funguje s jedením, či dvěma argumenty nečíslovanými. V běžném makru se čísla argumentů zvyšují po jedné (ale není to nutné – může to být libovolně větší číslo). Tam kde je argument bez čísla se v následujícím argumentu číslo zvedne ob jednotku (jako kdyby nečíslovaný argument číslo obsahoval). Pokud tam jsou dva argumenty bez čísla (nebo více) za sebou připočteme stejný počet k následujícímu argumentu. Pokud máme jeden argument bez čísla – následující číslovaný argument se zvedne o dvě oproti poslednímu číslovanému argumentu, pokud máme dva argumenty bez čísla za sebou zvedneme o tři a tak dál.

     Pokud tedy skládáte nahraná makra složte je podle pořadí úkonu a přepište jim argumenty od 1 do „x". To se dělá snadno výběrem celého argumentu a pomocí dialogu „Najít a nahradit" zadáte Najít staré číslo včetně argsXY například za args1 – zadáte změnit vše a vyberete další číslovaný argument – nesmíte zapomenout na zvýšení číslování za argumenty bez čísla.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#16 28. 7. 2022 10:33:59

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý den,
Děkuji za reakci na můj příspěvek.

Vašeho návrhu na poslání orig. txt se rád chopím a posílám vám na e-mail soubor Pokusný soubor.txt s vlastním textem a soubor Vysvětlivky_pom.odt s formátovaným textem vysvětlivek. Každá vysvětlivka je jeden odstavec. Prázdné odstavce jsou prázdné vysvětlivky, jejichž Anchor označuje číslo verše.

Jen ještě dotaz k Anchor vysvětlivek. Lze je hledat pomocí Ctrl H? Vypadá to jako nesmysl, ale když jsem na jejich místo napsat text (číslo), tak by mě to dost pomohlo.

Petr_K

Offline

#17 28. 7. 2022 10:37:40

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Oprava:
ale když jsem na jejich místo chtěl napsat text (číslo),

Offline

#18 29. 7. 2022 07:18:11

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

ad #16
     Stačí vybrat vše například pomocí Ctrl+A a přepnout na "Číslovaný seznam" pomocí F12. Před tím si ale navolte správný typ číslování. Na to stačí roz-kliknout rozevírací seznam ikony "Přepnout na číslovaný seznam" na panelu "formátování", který je defaultně nastaven jako viditelný. Jiný způsob je FORMÁT > ODRÁŽKY A ČÍSLOVÁNÍ.



ad #17
     Ano jde to celkem dobře. Stačí v dialogu "NAJÍT A NAHRADIT" vybrat OSTATNÍ MOŽNOSTI > STYLY ODSTAVCE. Dialog nabídne VYBRAT jen ze stylů použitých v dokumentu a nabídne možnost ze všech formátů Writeru. Když zvolíte například vysvětlivky můžete buď hledat jednotlivě, nebo vše, nebo jednotlivě, či hromadně nahradit formát jiným (například FootNote za EndNote.
     Právě takové nahrazování jsem měl na mysli ve smyslu řešení Vašeho problému místo přepisování makrem. To jde právě a jenom u formátovaného dokumentu, ale bez toho aby se přepisovaly FootNote na EndNote – jednoduše se naráz přepíše styl odstavce například v celé kapitole. Samozřejmě nejprve musíte správně nastavit STYL který potřebujete v možnostech dialogu. Jsou tam 4  možné parametry a každý má hodně možností. Musíte testovat jaké nastavení Vám nejlépe vyhovuje.


     To co jsem dostal není to, co jsem požadoval. Každý mluvíme jinou řečí! Když požadujete nejprve makro na přepis FootNote na EndNote. Ve Vašem příspěvku #7 jste popsal předchozí příspěvky za dostatečné a a psal jste, že je to vyřešeno. Totéž je však součástí příspěvku #8 o dva roky později. Už ale požadujete úpravu makrem. Chápu, něco se za ty dva roky změnilo, nejspíš jste narazil na problém. Jenomže potom z toho vyplave něco trochu jiného. V příspěvku #14 na začátku uvádíte Originál knihy je ve formátu pdf. Takže vyexportuji text do souboru txt a ten upravuji ve Writeru. .
     Tady už koliduje tvrzení o náhradě FootNote za EndNote, protože ve formátu „.txt" nelze rozeznat formátování jako takové a proto také neexistuje formát odstavců – jen jejich příznaky. Tedy značka u slova a na konci stránky text k této značce.
     Právě proto vznikají po přepisu textové formy na formátovanou na značkách u slov hlavního textu poznámky pod čarou, nebo vysvětlivky jako „prázdné odstavce" a Vy potřebujete k těmto odstavcům přiřadit textovou formu. (Toto lze realizovat jenom vyhledáváním v textu, nikoliv v poznámkách pod čarou, které v originále vazebně neexistují.) Hledání v textu musí zahrnovat oba parametry. Tedy jak značku v hlavním textu, tak obsah, který je označením shodný s se značkou v hlavním textu.
     Proto jsem požadoval originál formátu „.txt", ale dostal jsem nějakou mezifázi v podobě hlavního textu, kde nejsou značky. Obsahy jsou extrahovány do samostatného souboru a obsahují zřejmě více plánované další vysvětlivky v podobě prázdných odstavců ve formátu ODT.


     Takže „ani ryba, ani rak". Vcelku nemám problém ani s jedním z formátů „.txt", nebo „.odt". Nechce se mi věřit, že mému požadavku nerozumíte. Věřím, že jste za ty dva roky pracně manuálně získal nějakou mezifázi a já navrhuji, abyste to zahodil a začal úplně jinak.
      Nejsnadnější by bylo získání přímo z PDF formátovaný text. Možností je více. Například to umí programy OCR (optické rozpoznání textu, které mají často i speciál na převod PDF do Wordu, nebo RTF), dále online nástroje (i zdarma) typu PDF2DOC, PDF2RTF a podobně.
      Formátovaný dokument uložíme jako Writer a máme k dispozici verzi, kterou lze rychle přeformátovat pomocí odstavcových stylů – nic nehledáme, jen naráz celou kapitolu přeformátujeme jak potřebujeme.
     Jiný problém může nastat, pokud je PDF vytvořeno z typu obrázku a text nelze extrahovat, nebo také u chráněných PDF – setkal jsem se s různými typy ochran, zejména u profesionálně ošetřených publikací vydaných skutečným vydavatelem (nakladatelem). Některé mají zašifrované sem tam nějaké slovo, jindy opačně – lze přečíst sem tam nějaké slovo, nebo vůbec nic. K tomu bývá omezeno screenování obrazovky, zákaz tisku a podobné vychytávky. Přes to tyto ochrany lze obejít, ale návod neuvedu. Bylo by to navádění k loupeži.


     Vypracování makra které z čistě textové (ale úplné) podoby není problém. Stačí najít specifické markery a nahradit za formátované odstavce. Ale stejně je v takových případech nutné naformátovat celou osnovu včetně kapitol názvů odstavců, velikost písma vysvětlivek a odkazů. Je diskutabilní formát přidaných poznámek. Buď jiné značení na kotvě, nebo přidáním textu do původního odstavce, to může být provedeno různě a s tím jsou spojeny další různé problematiky. Přidané „note" mohou být ve formě číslování nižší úrovně, nebo ve formě citací a nebo například odkazu v textu „note". Například „autor uvádí toto" a může se jednat například o komentář, nebo odkázaný text s více odstavci umístěný do vyskakovacího okna (hyperlink otevře externí dokument) a podobně.


     Zatím se domnívám, že autor sleduje vydání formátu eknihy (každý typ formátu spadá pod jiný typ licence) a nejspíš rozšířenými komentáři (vysvětlivkami) vytváří odvozené dílo, na které se vztahuje ještě jiná licence. Autor si v takovém případě počíná legálně.
     Už to, že se doplňují vysvětlivky je veliká odvaha (zejména vzhledem k obsahu knihy), kterou si může dovolit jen fundovaný biblista, nejspíš s uznávaným vědeckým renomé. Což mne vede k respektu, ale neznamená to, že se spokojím s náznaky typu odpovědi na dotaz „Kolik je hodin?" a dostane se mi odpovědi „Včera bylo pondělí". Rád pomohu, ale nepřesná specifikace mne vždy irituje. Pravidelní uživatelé vědí, jak bych se zachoval bez tohoto názoru. Nechci se vymlouvat na věk, ale necelé 2 roky před sedmdesátkou už mám pramálo trpělivosti s různými výmluvami, nebo egoistickým přístupem, kdy si autor příspěvku myslí, že problém popsal správně a reaguje dotčeně podle své povahy. Nemám právo soudit, ani spekulativně posuzovat (i když toto analyzuji). Zejména věcně toto téma vyžaduje velkou pokoru od všech protagonistů.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#19 29. 7. 2022 10:27:35

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Tak už jsem pochopil proč jsem dostal originál bez jakýchkoliv odkazů (vysvětlivek a podobně). Napadlo mne, že se bude jednat o specifickou publikaci a tak jsem začal hledat „Kralickou bibli". Odkazů jsem našel překvapivě mnoho. Něco mají společného. Žádná verze odkazy neobsahuje.
     V jedné verzi existují „štítky", které ale pouze podtrhnou text verše (odstavce). Probíhá také zřejmě aktuální kolektivní úprava knihy z roku 1615, na které pracuje kolektiv Wikipedie. Nejstarší verze je do fotokopií vložená verze z roku 1596, ale existují verze již z roku 1270, i když zřejmě nekompletní a často s chybami překladu. Takže za validní jsou pokládány zřejmě verze vydané „Jednotou bratrskou", zejména „Kralická bible".
     Na ukázku : Bible z roku 1596, Bible z roku 1613, Překlad bible z roku 1613, Bible Kralická, Nový překlad Kralické bible


     Myslím, že stačilo jednoduše napsat, že kniha neobsahuje žádné vysvětlivky, ani odkazy a autor je bude vytvářet. Oznámení v tomto smyslu by mne uvedlo do obrazu. Okamžitě bych to správně pochopil, že jde o vytvoření nových struktur z externích zdrojů.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#20 30. 7. 2022 10:48:43

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý den,
nevím, jestli bych tyto věci, které nesouvisí s libreoffice neměl řešit e-mailem s Vámi soukromě. Ale zkusím to stručně objasnit.

Situace je trošku jiná.

Bible kralická je tzv. protestantská bible, t.j. překládaná protestanty a ti do svého překladu vysvětlivky nevkládají. Proč, to je určitě na jinou diskuzi.

Tato bible, co s ní pracuji já je od katolického biblisty dr. Jana Hejčla z roku 1917. Je volně stažitelná na stránkách http://librinostri.catholica.cz/.

V příspěvku #7 jsem to zamotal. Spojil jsem FootNote a EndNote. Vždy šlo pouze o vysvětlivky (EndNote).
Důvodů proč chci vysvětlivky na konci dokumentu a ne jako poznámky pod čarou na stránce či na konci kapitoly je více. Hlavní je ten, aby nepřekáželi v textu.

Nyní mám problém, že nemohu najít příkaz pro otevření a následně čtení druhého dokumentu – Vysvětlivky.odt.

Tedy příkazem

dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

na začátku makra si otevřít hlavní dokument, který upravuji a (jak doufám) podobným příkazem otevřít dokument Vysvětlivky.odt abych v něm mohl najít první odstavec, načíst jej do clipboardu či do proměnné, smazat jej v tomto dokumentu a vložit do hlavního dokumentu do vysvětlivky.

Snad jsem to příliš nezamotal a vysvětlil, že nejsem lupič smile.

Problém ocr je mi jasný, mám FineReader7, který již dávno poskytla firma zdarma. Běží mi na virtuálem, protože jako systém mám Linux Manjaro a ne Windows, ale to asi není tak důležité.

Petr_K

Offline

#21 30. 7. 2022 13:24:36

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Děkuji. Tohle mi téměř stačí.
     Jenom detail. Stav Vašeho projektu je v nějaké podobě s úpravami, nebo lze vycházet přímo z toho, že se vloží EndNote a načte pomocný dokunment. Předpokládám že na původních místech zůstaly značky FootNote. Samozřejmě je to úplně jedno. Ale pokud Máte většinu v nějaké podobě, lze se přizpůsobit a dokončit v původním rozdělení (extrakci).


     Já jsem začal připravovat obecný vzor vyplněný pomocí Lorem Ipsum plus vybavený EndNote, které se načítají z externího dokumentu. Pokud budu znát Vaši současnou výchozí potřebu, byl bych schopen celkem rychle dodat řešení. Jen pro Vaši představu : Mám hotové makro, které načítá z externího dokumentu (jedno zda EndNote, či FootNote, a nebo třeba komentáře ap.) a vkládá je na místo. Takže pokud souhlasí počet značek s počtem odstavců pomocného dokumentu (třeba i prázdnými), naplní se základní dokument jediným kliknutím.
     K samotnému makru je potřeba udělat ještě soubory, které makro nesou - to je docela hodně práce - více nežli upatlat makro. Navíc se zabývám vytvořením pomocného sešitu z obsahu původních obsahů "note". Předpokládám, že tohle jste dělal manuálně.
     Finereader 7 vlastním také, ale koupil jsem si ho jako CD asi za 5 tisíc a tak víme, že umí právě třeba export do Wordu a dalších formátů. K tomu jsem dostal i speciál na PDF (tehdy to byla novinka, dnes je to běžná součást OCR).



     Myslím, že bych ten mustr mohl mít hotový dnes, nebo zítra. Takže pokud úplně přesně nepopíšete co a v jaké fázi máte, postnu sem obecné řešení.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#22 30. 7. 2022 18:59:56

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Vysvětlivky

Posílám první pokus. Není to úplně nejlepší. Trvá to dost dlouho a navíc to zřejmě autorovi vyhovovat nebude, ale demonstruje postup jako ukázku, že to jde. Stahujte zde Test plnění polí.
     Autor by měl podle toho upřesnit co ano, a co ne, nebo jinak. Posílám to spíš kvůli otestování na různých systémech LO, nebo také operačních. Pokud by byly problémy, popište prosím co nejlépe co a kde se vykutálelo.



     Po stažení rozbalte soubor ZIP do adresáře kde můžete testovat makra. Nějaký popis je v hlavním souboru. Ja tam včetně své kopie a mimo toho soubor "_Pomocný", ze které se hlavní soubor plní.

Editoval neutr (30. 7. 2022 19:02:54)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#23 30. 7. 2022 21:50:43

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Nejvíce času trávím obecnou úpravou dokumentů (nečitelná slova pro OCR, formátování nadpisů atd.). Takže vkládání vysvětlivek můžu začít od začátku.
Nyní jsem zjistil, proč jsem OCR nepoužil. Soubor pdf již obsahuje text a ten je lepší než ten, který vytvořil můj Fine Reader. Proto jsem ho okulárem z pdf exportoval jako txt, s tím, že potřebné opravy a formátování provedu ručně. Stejně si již dlouho říkám, že bych si měl přečíst bibli celou smile.
Petr_K

Offline

#24 31. 7. 2022 14:44:16

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Děkuji, už jsem se do toho pustil.
Asi mě to chvíli dá smile

Offline

#25 2. 8. 2022 08:58:29

Petr_K
Člen
Registrace: 6. 8. 2020
Příspěvků: 16

Re: Vysvětlivky

Dobrý den,

neutr:
ve vkládání textu vysvětlivek jsem díky Vám pokročil,šlape to, až na malé detaily, které teď nechci řešit.

Problém je ale s vkládáním znaků (čísel) kotev, kde macro (.uno:InsertEndNote) čísluje automaticky, podle ThisComponent.Endnotes.Count. Zkoušel jsem oDoc=ThisComponent, ale oDoc.EndNotes.Count nelze přepsat, je jen pro čtení.
Jak zrušit to automatické číslování?.

Offline

Zápatí