Mam w tekście takie wstawki postaci [note: tu jest jakiś tekst przypisu dolnego] jest tego ogromnie dużo (ok. 1000) może dałoby się jakoś napisać marko, które by wycinało taki tekst wstawiało zamiast niego przypis i ten wycięty tekst wklejało w zawartość przypisu.
Niestety nie mam pojęcia jak się zabrać za takie coś.
Proszę o podpowiedzi.
tworzenie przypisu dolengo na podstawie zawartości tekstu
tworzenie przypisu dolengo na podstawie zawartości tekstu
Ostatnio zmieniony czw sty 19, 2012 3:05 pm przez arek, łącznie zmieniany 1 raz.
Re: tworzenie przypisu dolengo na podstawie zawartości tekst
W bieżącym dokumnecie
szukaj wzorca regularnego \[note: [^\]]*\]
skopiuj z niego tekst
usuń znaleziony tekst
utwórz nowy przypis z zapamiętanym tekstem i wstaw go w miejscu, gdzie stał znaleziony tekst
AndrewMacro -- tam powinny być przykłady do poszczególnych elementów
http://www.pitonyak.org/oo.php
szukaj wzorca regularnego \[note: [^\]]*\]
skopiuj z niego tekst
usuń znaleziony tekst
utwórz nowy przypis z zapamiętanym tekstem i wstaw go w miejscu, gdzie stał znaleziony tekst
AndrewMacro -- tam powinny być przykłady do poszczególnych elementów
http://www.pitonyak.org/oo.php
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: tworzenie przypisu dolengo na podstawie zawartości tekst
Wykombinowałem coś takiego jak poniżej ale nie wiem jak toto zmusić do tego by zwróciło znaleziony tekst i pozycję. Lub ew. jak połączyć to z tym drugim makrem co wstawia stopki
Kod: Zaznacz cały
function ZnajdzTekst() as string
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(18) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "\[note:([^\]]*)\]"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0
args1(18).Name = "Quiet"
args1(18).Value = true
return dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end function
sub WstawStopke
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertFootnote", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = "Treść Stopki Do Wstawienia"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
end sub
Re: tworzenie przypisu dolengo na podstawie zawartości tekst
Dogrzebałem się też jak wyszukiwanie zrobić w pętli. mam ustawiony kursor ale nigdzie nie mogę znaleźć jak wstawić ten przypis dolny.
Kod: Zaznacz cały
Sub Main
Dim oDocument As Object
Dim oText As Object
Dim oSearchDesc As Object
Dim oCursor As Object
Dim oFoundAll As Object, oFound As Object
Dim nLen As Integer, n As Integer
Dim nEndAuthor As Integer
Dim nStartTitle As Integer, nEndTitle As Integer
Dim sAuthor As String, sTitle As String
Dim s As String, sRest As String
oDocument = ThisComponent
oText = oDocument.Text
oSearchDesc = oDocument.createSearchDescriptor()
oSearchDesc.SearchString = "\[note:[^\]]*\]"
oSearchDesc.SearchRegularExpression = TRUE
oFoundAll = oDocument.findAll( oSearchDesc )
For n = 0 To oFoundAll.Count - 1
oFound=oFoundAll.getByIndex(n)
oCursor = oText.createTextCursorByRange(oFound)
s = oCursor.String
' oCursor.String = "{" +s+ "}"
Next
End Sub
Re: tworzenie przypisu dolengo na podstawie zawartości tekst
Dla potomnych
Kod: Zaznacz cały
Sub Main
Dim oDocument As Object
Dim oText As Object
Dim oSearchDesc As Object
Dim oCursor As Object
Dim oFoundAll As Object, oFound As Object
Dim nLen As Integer, n As Integer
Dim nEndAuthor As Integer
Dim nStartTitle As Integer, nEndTitle As Integer
Dim sAuthor As String, sTitle As String
Dim s As String, sRest As String
Dim oFootnote As Object
oDocument = ThisComponent
oText = oDocument.Text
oSearchDesc = oDocument.createSearchDescriptor()
oSearchDesc.SearchString = "\[note:[^\]]*\]"
oSearchDesc.SearchRegularExpression = TRUE
oFoundAll = oDocument.findAll( oSearchDesc )
For n = 0 To oFoundAll.Count - 1
oFound=oFoundAll.getByIndex(n)
oCursor = oText.createTextCursorByRange(oFound)
s = oCursor.String
s = Left(s,Len(s)-1)
s = Right(s,Len(s)-6)
oFootnote = oDocument.createInstance("com.sun.star.text.Footnote")
oText.insertTextContent(oCursor,oFootnote,False)
oFootnote.setString(s)
oCursor.String = " "
Next
End Sub