Seite 1 von 1

Textkörper Nummern in Fußnoten umwandeln

Verfasst: Fr 5. Feb 2021, 16:12
von MaxP
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

Re: Textkörper Nummern in Fußnoten umwandeln

Verfasst: Sa 6. Feb 2021, 16:08
von mikele
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?

Re: Textkörper Nummern in Fußnoten umwandeln

Verfasst: So 7. Feb 2021, 18:05
von Wanderer
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

Re: Textkörper Nummern in Fußnoten umwandeln

Verfasst: So 7. Feb 2021, 23:02
von mikele
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