🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Textkörper Nummern in Fußnoten umwandeln

Alles zur Programmierung im LibreOffice.
Antworten
MaxP
Beiträge: 1
Registriert: Fr 5. Feb 2021, 16:04

Textkörper Nummern in Fußnoten umwandeln

Beitrag von MaxP » Fr 5. Feb 2021, 16:12

Moin,

Ich habe ein Libre-Office odt Dokument mit dem folgenden Inhalt. Der Teil unter "Footnotes" ist eine nummerierte Liste:

Some Text.[1]

Some more text ...

Footnotes

1. Footnote Content related to the [1] above

Der Text ist das Ergebnis eines Mediawiki-Exports von Wikibooks mit einem Export-Tool: https://de.wikibooks.org/wiki/Benutzer: ... ger/wb2pdf

Gibt es irgendeine Möglichkeit den Plaintext aus dem Beispiel in formatierte Fußnoten automatisiert umzuwandeln? Dafür müsste [1] durch eine Fußnote ersetzt werden und der Inhalt hinter "1. ..." in diese Fußnote eingefügt werden. z.B. durch ein Skript? Damit habe ich mich leider noch nie beschäftigt. Was wäre ein erster Recherche-Ansatz? Wir hätten auch beschränkte Projektmittel, um so eine Funktion extern programmieren zu lassen.

Zum Hintergrund: Wir erstellen offene Bildungsmaterialien bei Wikibooks.de und müssen diese in ein odt (docx)-Dokument umwandeln, um sie in traditionellen juristischen Verlagen veröffentlichen zu können. Klappt alles sehr gut ... bis auf die Fußnoten :)

Vielen Dank und liebe Grüße

Max

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Textkörper Nummern in Fußnoten umwandeln

Beitrag von mikele » Sa 6. Feb 2021, 16:08

Hallo,
kannst du das Beispiel mal konkretisieren?
Aus [1] eine Fußnote zu machen ist das eine. Was soll dann aber der Fußnotentext sein? Alles (?) was vor der [1] steht?
Gruß,
mikele

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Textkörper Nummern in Fußnoten umwandeln

Beitrag von Wanderer » So 7. Feb 2021, 18:05

Hallo Mikele,

wenn ich das richtig verstehe, werden Endnoten erzeugt, die am Ende des Dokuments unter dem Titel "Footnotes" gelistet sind (nicht falsch, wenn man von einem einseitigen Beitrag ausgeht) und statt dessen in echte Fussnoten gewandelt werden sollen.

Ein Testdokument wäre für die Details nützlich...

Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Textkörper Nummern in Fußnoten umwandeln

Beitrag von mikele » So 7. Feb 2021, 23:02

Hallo,
danke, Jörn, für die Auflösung.
Da habe ich mal anhand des Wikipediaartikels zur Serie Vikings mal was gebastelt.
wenn am Ende des Dokuments nummerierte Absätze sind, werden diese als potentielle Fußnotentexte erfasst und die Nummern anschließend im Text gesucht und durch entsprechende Fußnoten ersetzt.

Code: Alles auswählen

Sub Main
	odoc=ThisComponent
	'Zugriff auf gesamten Text
	otext=odoc.text
	ocur=otext.createtextcursor
	'Gehe zum Textende
	ocur.gotoend(false)
	'gehe absatzweise rückwärts und erfasse alle nummerierten Absätze als zukünftige Fußnotentexte
	ocur.gotopreviousparagraph(true)
	sNr=ocur.listlabelstring
	sTxt=ocur.string
	i=0
	do 
		ReDim preserve aFuss(i)
		aFuss(i)=Array(sNr,sTxT)
		ocur.collapseToStart
		ocur.gotopreviousparagraph(true)
		sNr=ocur.listlabelstring
		sTxt=ocur.string
		i=i+1
	loop while sNr<>""
	'Gehe zum Textanfang
	ocur.gotostart(false)
	'Erstelle Suche
	oSearch = ThisComponent.createSearchDescriptor()
	'Finde alle Fußnoten
	for i=0 to ubound(aFuss)
		oSearch.SearchString = "[" & left(aFuss(i)(0), len(aFuss(i)(0))-1) & "]"
		oFound = oDoc.findNext(oCur, oSearch)
		If not (IsNull(oFound)) Then
			oFoundCursor = oFound.Text.createTextCursorByRange(oFound)
			oFuss=odoc.createInstance( "com.sun.star.text.Footnote" )
			oFound.text.insertTextContent(oFoundCursor, ofuss, True)
		    oRange =ofuss.createTextCursor()
		    ofuss.insertString (oRange, left(aFuss(i)(1), len(aFuss(i)(1))-1), false)
		end if
	next

End Sub
Dateianhänge
makro_fußoten_erstellen.odt
(59.15 KiB) 119-mal heruntergeladen
Gruß,
mikele


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten