BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Makro (writer) Fußnoten umwandeln

Alles zur Programmierung im LibreOffice.
Antworten
Jakob Krake
Beiträge: 2
Registriert: Do 11. Mär 2021, 15:57

[gelöst] Makro (writer) Fußnoten umwandeln

Beitrag von Jakob Krake » Do 11. Mär 2021, 16:42

Salut,
ich möchte ein Makro schreiben, dass die Fußnoten in einem Writer-Dokument in normalen Text umwandelt und ans Ende des Dokuments setzt.

Ich habe es bereits geschafft, den Text der Fußnoten auszulesen und ans Ende des Dokuments zu schreiben, aber ich weiß nicht wie ich den Fußnotenanker durch eine „normale Zahl“ ersetzen soll.
Also, z.B. „Beispiel²“ durch „Beispiel(2)“ oder „wie geht das nur?³“ durch „wie geht das nur?(3)“ usw.

Wahrscheinlich würde es reichen, wenn mir jemand sagen könnte, wie ich den Fußnotenanker in einem Text finden kann.

Vielen Dank, JK

P.S. Weil ich nicht weiß, wie ich innerhalb dieses Beitrags ein eigenes Fenster kreieren kann, füge ich meinen Makrocode als normalen Text ein.


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

Option Explicit
Option Base 1

Sub Main
FussnotenAnsTextende()
RemoveAllFootnotes()
End Sub

Sub FussnotenAnsTextende()
REM Diese Subroutine schreibt den Inhalt aller Fussnoten an das Textende
Dim oDescriptor 'Der Suchdeskriptor
Dim oFound 'Der Trefferrange
Dim Doc As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = ThisComponent.Text.createTextCursor()
Dim A%

A = 1
oDescriptor = ThisComponent.createSearchDescriptor()
With oDescriptor
.SearchString = "Fußnote"
.SearchStyles = True
.SearchWords = True
.SearchCaseSensitive = False

End With
' Der erste Treffer
oFound = ThisComponent.findFirst(oDescriptor)
Cursor.gotoEnd(False)

Do While Not IsNull (oFound)
Cursor.Text.insertControlCharacter(Cursor, _
com.sun.star.text.ControlCharacter.LINE_BREAK, False)
Cursor.Text.insertString(Cursor,A,False)
Cursor.Text.insertString(Cursor,") ",False)
Cursor.Text.insertString(Cursor,oFound.getString(),False)

oFound.CharWeight = com.sun.star.awt.FontWeight.NORMAL
oFound = ThisComponent.findNext(oFound.End, oDescriptor)
A=a+1

Loop
End Sub

REM Hier fehlt die Subroutine, die Fussnotenzanker "²" durch "(2)" usw. ersetzt.


Sub RemoveAllFootnotes()
REM Diese Subroutine löscht alle Fußnoten.
Dim oDocument as Object
Dim oAllFootnotes as Object
Dim oFootnote as Object
Dim i as integer

oDocument = ThisComponent
oAllFootnotes = oDocument.getFootnotes()

For i = oAllFootnotes.Count - 1 to 0 step -1
oFootnote = oAllFootnotes(i)
oFootnote.dispose()
Next i

End Sub
Zuletzt geändert von Jakob Krake am So 14. Mär 2021, 12:45, insgesamt 1-mal geändert.

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Makro (writer) Fußnoten umwandeln

Beitrag von mikele » Do 11. Mär 2021, 18:36

Hallo,
um Text als Codeblock zu schreiben gibt es den Button "</>" der dann die entsprechenden Tags "

Code: Alles auswählen

 CODE 
" setzt.
Dein ganzen problem ließe sich durch folgendes Makro lösen

Code: Alles auswählen

Sub Main
	oDoc=ThisComponent
	oFootnotes = ThisComponent.getFootnotes()
	n=ofootnotes.count-1
	dim anote(n)
	for i=n to 0 step -1
		oObj1 = oFootnotes.getByIndex(i)
		anote(i)=oobj1.string
		oAnchor = oobj1.getAnchor()
		snr=oanchor.string
		oanchor.string="(" & snr & ")"
	next
	oCursor = oDoc.Text.createTextCursor()
	oCursor.gotoEnd(False)
	for i=0 to n
		oCursor.Text.insertControlCharacter(oCursor, com.sun.star.text.ControlCharacter.LINE_BREAK, False)
		oCursor.Text.insertString(oCursor,i+1 & ") " & anote(i),False)
	next
End Sub
Sinnvoller wäre natürlich die Nummerierung am Ende durch eine Nummerierungsvorlage zu erledigen.
Vielleicht willst du auch aus den Fußnoten Endnoten machen?
Gruß,
mikele

Jakob Krake
Beiträge: 2
Registriert: Do 11. Mär 2021, 15:57

Re: [gelöst] Makro (writer) Fußnoten umwandeln

Beitrag von Jakob Krake » So 14. Mär 2021, 12:46

Hallo mikele,
vielen Dank, das ist genau das was ich wollte. So einfach, wenn man weiß wie es geht. Ich werde mir Deinen Code auch noch genauer anschaue, damit ich aus der Sache etwas lerne.
Also noch ein mal vielen Dank,
JK

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten