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
🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst] Makro (writer) Fußnoten umwandeln
-
- Beiträge: 2
- Registriert: Do 11. Mär 2021, 15:57
[gelöst] Makro (writer) Fußnoten umwandeln
Zuletzt geändert von Jakob Krake am So 14. Mär 2021, 12:45, insgesamt 1-mal geändert.
Re: Makro (writer) Fußnoten umwandeln
Hallo,
um Text als Codeblock zu schreiben gibt es den Button "</>" der dann die entsprechenden Tags "" setzt.
Dein ganzen problem ließe sich durch folgendes Makro lösen
Sinnvoller wäre natürlich die Nummerierung am Ende durch eine Nummerierungsvorlage zu erledigen.
Vielleicht willst du auch aus den Fußnoten Endnoten machen?
um Text als Codeblock zu schreiben gibt es den Button "</>" der dann die entsprechenden Tags "
Code: Alles auswählen
CODE
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
Vielleicht willst du auch aus den Fußnoten Endnoten machen?
Gruß,
mikele
mikele
-
- Beiträge: 2
- Registriert: Do 11. Mär 2021, 15:57
Re: [gelöst] Makro (writer) Fußnoten umwandeln
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
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 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.