tworzenie przypisu dolengo na podstawie zawartości tekstu

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

tworzenie przypisu dolengo na podstawie zawartości tekstu

Post autor: arek »

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.
Ostatnio zmieniony czw sty 19, 2012 3:05 pm przez arek, łącznie zmieniany 1 raz.
Jan_J
Posty: 4583
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: tworzenie przypisu dolengo na podstawie zawartości tekst

Post autor: Jan_J »

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
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

Re: tworzenie przypisu dolengo na podstawie zawartości tekst

Post autor: arek »

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
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

Re: tworzenie przypisu dolengo na podstawie zawartości tekst

Post autor: arek »

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
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

Re: tworzenie przypisu dolengo na podstawie zawartości tekst

Post autor: arek »

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
ODPOWIEDZ