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 HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> 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
-
- 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 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 ❤️