Hyperlink für Stichworte

Das Textverarbeitungsprogramm

Moderator: Moderatoren

mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Hyperlink für Stichworte

Beitrag von mikeleb »

Hallo,
leider habe ich nicht die Zeit für eine kontinuierliche Projektbetreuung, sodass ich die Hilfe nicht bieten kann.
Unverschämt ist die Bitte nicht, aber es ist auch keine einmalige Sache. Ein Stichwortverzeichnis wird üblicherweise ständig überarbeitet, sodass solche Eingriffe wie das Erstellen von Hyperlinks/Querverweisen immer wieder neu gemacht werden müssen.
Hier http://de.openoffice.info/viewtopic.php?t=76628 wurde Hilfe angeboten.
Gruß,
mikeleb
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Das man ein Stichwortverzeichnis aktualisieren muß, "weiß jede Kind".
Das man danach logischerweise auch, sofern das Programm im Kern keine Hyperlinks anbietet, die Hyperlinks mit einem funktionierenden Makro aktualisieren muß, ist auch naheliegend.
Da das Makro an sich öffentlich ist, wäre eine ausführliche "Betriebsanweisung" wünschenswert.
Aber wenn das in diesem thread verlinkte Makro nicht lauffähig zu machen ist, ist der ganze thread "Kacke".
mikelab-> Übrigens kann ich deinem letzten Link für mich gar nicht Produktives erkennen, da das Forum doch nicht nur für eine Person da ist...
Zuletzt geändert von quotsi am Do, 06.04.2023 19:00, insgesamt 1-mal geändert.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Hyperlink für Stichworte

Beitrag von mikeleb »

Hallo,
der Link bezieht sich nur auf die von 15Albert angefragte persönliche Hilfe.
Mittlerweile ist in diesem Thread von zwei Makros die Rede.
Welches Makro nicht zum Laufen gebracht werden kann, habe ich in 15Alberts Antwort nicht herauslesen können.
Welche Art von weiterer Betriebsanweisung wird gebraucht?
Gruß,
mikeleb
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Ja, entschuldige, habe gar nicht bemerkt, dass da noch ein Beitrag von dir dazwischen reinkam mit dem zweiten (!) Makro.
Meine Klage bezog sich auf das erste. Also jetzt habe ich das zweite am Wickel.
Du beschreibst schon, was nicht gehen würde. Aber ich vermisse eine "Einführung", denn nach dem Laden habe ich drei (!) Makros.
Makroliste.jpg
Makroliste.jpg (48.39 KiB) 1528 mal betrachtet
Natürlich startete ich mit "verweise_setzen". Aber man hätte das auch irgendwie vorher vermitteln können...
Nun zum Testobjekt. Das hatte ich seinerzeit schon veröffentlicht, als ich über Konkordanzdatei schwafelte. Die Datei hat ein Stichwortverzeichnis ohne Konkordanzdatei. Aber bereits diese Datei will deinem Willen/deinem Makro nicht folgen:
Stichworte verflinken.jpg
Stichworte verflinken.jpg (66.84 KiB) 1528 mal betrachtet
Wenn gewünscht, kann ich dieselbe Datei auch mit Stichwortverzeichnis auf Basis einer Konkordanzdatei liefern. :lol:

Gruß
und Freude am Arbeiten. Ich muß noch Ostergrüße schreiben, die sowieso keiner liest.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Nachtrag:
Starte ich mit "erstelle_dialog", gelange ich zu einer unendlichen Warteposition
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Hyperlink für Stichworte

Beitrag von mikeleb »

Hallo,
da waren gleich zwei Ostereier im Nest:
1) ein grober Programmierfehler :( :shock: : in Zeile 49 musste es natürlich

Code: Alles auswählen

oindex=odoc.documentindexes(i)
lauten
2) Ein hierarchisches Stichwortverzeichnis hatte ich so nicht auf dem Schirm, wodurch Absätze im Stichwortverzeichnis ohne Seitennummern auftauchen.
Beide Fehler sind behoben.
Am Dialog habe ich auch noch etwas gebastelt (der dient ja "nur" der Optik, damit man bei umfangreicheren Dokumenten sieht, dass etwas passiert).

Code: Alles auswählen

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

'Das Modul enthält 3 Subs:
'verweise_setzen -> das zu startende Makro, um Seitenzahlen im Stichwortverzeichnis mit Querverweisen zu versehen
'erstelle_dialog -> ein Untermakro, um den Dialog zur Laufzeit zu erstellen
'butlist_ActionPerformed -> Makro für den ActionListener für den Button im Dialog




public warten_dialog as object
public raus 'beendet Hauptschleife Do-Loop, Abbruch durch den Benutzer -> Schaltfläche "Stop"

Const praefix="x_" 'Präfix für die Stichwortlesezeichen, zur Unterscheidung ggf. anderer Lesezeichen

Sub verweise_setzen()
	'Originalautor: www.jm-schmidt.de
	'be- und umgearbeitet im  April 2023
	
	startzeit = time()
	raus = 0
	rueck = 0

	rueck = Msgbox("Wollen Sie die Einträge im Stichwortverzeichnis verlinken? " & _
		CHR(13) & CHR(13) & "ACHTUNG das Stichwortverzeichnis muss unmittelbar vor " & _
		"dem Start des Makros hier, aktualisiert worden sein. Ansonsten klicken Sie bitte ab ""Abbrechen"" " & _
		" und aktualisieren das Stichwortverzeichnis und starten Sie danach das Makro neu." & CHR(13) & " ", 33, "Stichwortverzeichnis bearbeiten")
	
	If Not(rueck = 1) Then Exit Sub

	oDoc=ThisComponent
	cur = oDoc.Text.createTextCursor
	oViewCursor = oDoc.CurrentController.getViewCursor
	indexes = ThisComponent.getDocumentIndexes()
	For i = 0 To Indexes.getCount() - 1
		oIndex = Indexes.getByIndex(i)
		If oIndex.supportsService("com.sun.star.text.DocumentIndex") Then
		If oIndex.UseCombinedEntries then
			erstelle_dialog
			'warten_dialog.setVisible(True)
			warten_dialog.getControl("warten1").Text = "alte Lesezeichen werden gelöscht ..."

			'Alle ursprünglichen Lesezeichen entfernen
			oMarks=ThisComponent.Bookmarks
			for k=oMarks.count-1 to 0 step -1
				oMark=oMarks.getbyindex(k)
				if left(oMark.Name,len(praefix))=praefix then
					oMark.anchor.getText().removeTextContent(oMark)
				end if
			next

			'Alle Stichwortvorkommen im Dokument einlesen und Lesezeichen setzen
			oindex=odoc.documentindexes(i)
			
			Dim aStichworte(ubound(oindex.documentindexmarks))
			for n_sw=0 to ubound(aStichworte)
				warten_dialog.getControl("warten1").Text = "Stichwörter werden eingelesen, Lesezeichen gesetzt ... " & n_sw+1 & " von " & ubound(aStichworte)+1
				oMark=oindex.DocumentIndexMarks(n_sw)
				'zur Textstelle gehen
				oViewCursor.gotoRange(oMark.anchor, false)
				aStichworte(n_sw)=DimArray(4)
				aStichworte(n_sw)(0)=oMark.markEntry & oMark.anchor.string			'Text des Eintrages
				aStichworte(n_sw)(1)=oViewCursor.getpage							'Seite des Vorkommens
				aStichworte(n_sw)(2)=oviewcursor.position.x							'Position des Vorkommens
				aStichworte(n_sw)(3)=oviewcursor.position.y				
				aStichworte(n_sw)(4)=praefix & aStichworte(n_sw)(0) & "-" & n_sw	'Name des Lesezeichens
				'Lesezeichen erstellen
				oBookmark = ThisComponent.createInstance("com.sun.star.text.Bookmark")
		      	oBookmark.setName(aStichworte(n_sw)(4))
		      	ocurtmp=oViewcursor.Text.createTextCursor
		      	ocurtmp.gotoRange(oMark.anchor, false)
		      	oViewCursor.Text.insertTextContent(ocurtmp, oBookmark, False)
			next

			warten_dialog.getControl("warten1").Text ="Querverweise werden erstellt ..."

			
			cur.gotoRange(oIndex.getAnchor, false)
			cur.CollapseToStart 'vorderste Position im Verzeichnis
	
			'Anzahl Einträge ermitteln
			anzahl_eintraege = 0
			Do
				IF cur.ParaStyleName = oIndex.ParaStyleLevel1 OR cur.ParaStyleName = oIndex.ParaStyleLevel2 OR cur.ParaStyleName = oIndex.ParaStyleLevel3 Then 
						anzahl_eintraege = anzahl_eintraege + 1
				Elseif cur.ParaStyleName <> oIndex.ParaStyleHeading AND cur.ParaStyleName <> oIndex.ParaStyleSeparator Then
						Exit Do
				End If
				cur.GotoNextParagraph(False)
			Loop	
			
			cur.gotoRange(oIndex.getAnchor, false)
			cur.CollapseToStart

			dd = 0
			
			Do While raus = 0 and dd<anzahl_eintraege
				
				cur.GotoEndOfParagraph(False)
				'Verzeichniseintrag?
				IF cur.ParaStyleName = oIndex.ParaStyleLevel1 OR cur.ParaStyleName = oIndex.ParaStyleLevel2 OR cur.ParaStyleName = oIndex.ParaStyleLevel3 Then
					dd = dd + 1
					warten_dialog.getControl("warten1").Text ="Querverweise werden erstellt ... " & dd & " von " & anzahl_eintraege
					
					cur.GotoStartOfParagraph(False)
					cur.GotoEndOfParagraph(True)
					'Auslesen des gesamten Eintrags in Array tmp()
					'der Eintrag muss folgende Struktur haben: Eintrag#Tabulator#Seiten
					tmp = Split(cur.String, CHR(9)) 'es wird das Vorhandensein eines Tabulators je Eintrag vorausgesetzt

					'Finden aller Lesezeichen zu diesem Eintrag, sortiert
					sEintrag=tmp(0)

					n=-1
					for z=0 to ubound(aStichworte)
						warten_dialog.getControl("warten3").Text = sEintrag
						if aStichworte(z)(0)=sEintrag then
							n=n+1
							ReDim preserve aEintrag(n)
							aEintrag(n)=aStichworte(z)
							tausch=1
							k=n-1
							do while tausch=1 and k>-1
								if (aEintrag(k+1)(3)>aEintrag(k)(3)) or (aEintrag(k+1)(3)=aEintrag(k)(3) and aEintrag(k+1)(2)>aEintrag(k)(2)) then
									tausch=0
								else 
									swp=aEintrag(k)
									aEintrag(k)=aEintrag(k+1)
									aEintrag(k+1)=swp
								end if
								k=k-1
							loop
						end if
					next

					'Auslesen der ggf. mehreren Seitenzahlen
					tmp2 = Split(tmp(1), ", ")

					'.UseCombinedEntries ?
					'.UsesDash ? .UsePP ? 
					'es können drei Fälle auftreten (.UsesCombinedEntries=True und .UsesDash=False und .UsePP=True):
					'	45		Stichwort nur auf der Seite
					'	45f.	Stichwort auf der Seite und der folgenden
					'	45ff.	Stichwort auf der Seite und den folgenden
					'der Link wird, in diesem Beispiel, immer nur zum Stichwort auf Seite 45 führen - ein Link zu mehreren Zielen ist nicht möglich
					
					'es können zwei Fälle auftreten (.UsesCombinedEntries=True und .UsesDash=True und .UsePP=False):
					'	45		Stichwort nur auf der Seite 45
					'	45-47	Stichwort auf der Seite 45 bis einschließlich Seite 46
					'
					
					'wenn .UsesCombinedEntries=False oder .UsesDash=False und .UsePP=False, dann gibt es zu jedem Eintrag eine Liste nur einzelner Seiten
					'der Fall muss nicht extra betrechtet werden
					
					if ubound(tmp2)>-1 then	'mindestens eine Seitennummer vorhanden?
						
						if oIndex.UsePP then
							sTrenner="f"
						else
							sTrenner="-"
						end if								
						
						'aktuelle Zeile im Verzeichnis
						cur.GotoStartOfParagraph(False)
						'lösche alles hinter dem Tabulator
						cur.goRight(LEN(tmp(0))+1, False)
						cur.GotoEndOfParagraph(True)
						cur.String = ""
						
						'Aufspalten einer Seitennumer mit ggf. f. oder ff.
						tmp3=split(tmp2(0),sTrenner)
						'die Seitenzahl weg
						nseite=val(tmp3(0)) 
						
						tmp3(0)=""
						'neuer Text ohne Seitenzahl
						neu=join(tmp3,sTrenner)
						'Suche das Lesezeichen auf der richtigen Seite
						nr=0
						do until aEintrag(nr)(1)=nseite or nr=ubound(aEintrag)
							nr=nr+1
						loop
						'msgbox nr
						if aEintrag(nr)(1)=nseite then 'Lesezeichen auf der Seite existiert
							oReference = ThisComponent.createInstance("com.sun.star.text.textfield.GetReference")
							oReference.SourceName = aEintrag(nr)(4)
							oReference.SequenceNumber = 0
							oReference.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.PAGE
							oReference.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
							oDoc.getText.insertTextContent(cur, oReference, False)
							cur.GotoEndOfParagraph(False)
						else							'Lesezeichen nicht vorhanden
							cur.String = nSeite
							cur.collapsetoend
						end if
						cur.String = neu
						cur.collapsetoend
						'falls noch mehr Seiten zu dem Eintrag	
						for j=1 to ubound(tmp2)
							cur.String = ", "
							cur.collapsetoend
							tmp3=split(tmp2(j),sTrenner)
							nseite=val(tmp3(0))
							tmp3(0)=""
							neu=join(tmp3,sTrenner)
							do until aEintrag(nr)(1)=nseite or nr=ubound(aEintrag)
								nr=nr+1
							loop
							'msgbox nr
							if aEintrag(nr)(1)=nseite then 'Lesezeichen auf der Seite existiert, Querverweis setzen
								oReference = ThisComponent.createInstance("com.sun.star.text.textfield.GetReference")
								oReference.SourceName = aEintrag(nr)(4)
								oReference.SequenceNumber = 0
								oReference.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.PAGE
								oReference.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
								oDoc.getText.insertTextContent(cur, oReference, False)
								cur.GotoEndOfParagraph(False)
							else							'Lesezeichen nicht vorhanden, es wird der ursprüngliche Text gesetzt
								cur.String =nSeite
								cur.collapsetoend
							end if
							cur.String = neu
							cur.collapsetoend
						next
					end if
				end if
				cur.GotoNextParagraph(False)
			loop
			oviewcursor.gotoRange(oIndex.getAnchor, false)
			oviewcursor.collapsetostart
		end if
		end if
	next
	
	ThisComponent.getTextfields.refresh()

	warten_dialog.getControl("warten4").Text ="Start: " & startzeit & "     " & "Ende: " & time()
	warten_dialog.getControl("but1").Label="Ende"
		
	'Warten bis der Dialog beendet wurde
	do until warten_dialog.isvisible=false
		wait 100
	loop 
	
	
	
End Sub	


Sub erstelle_dialog

			'warten-Dialog--------------------------
			warten_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
			warten_model.setPropertyValue("Width",  200) '343
			warten_model.setPropertyValue("Height", 65) '65
			warten_model.SetPropertyValue("Title","Bitte etwas Geduld")
		
			oMod_warten = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
			With oMod_warten
				.setPropertyValue("Name","warten1")
				.setPropertyValue("PositionX",5) '192
				.setPropertyValue("PositionY",5) 
				.setPropertyValue("Width",180)
				.setPropertyValue("Height",15)
				.setPropertyValue("MultiLine", True)
				.setPropertyValue("Label","")
			End With
			warten_model.insertByName("warten1", oMod_warten)

			oMod_warten2 = warten_model.createInstance("com.sun.star.awt.UnoControlButtonModel")
			With oMod_warten2
				.setPropertyValue("Name","but1")
				.setPropertyValue("PositionX",70)
				.setPropertyValue("PositionY",45) '45
				.setPropertyValue("Width",60)
				.setPropertyValue("Height",16)
				.setPropertyValue("Label", "Stop")
				.setPropertyValue("DefaultButton", True)
				'.setPropertyValue("Enabled", False)
			End With
			warten_model.insertByName("but1", oMod_warten2)
			
			oListbut = createUnoListener("butlist_","com.sun.star.awt.XActionListener")
			
			oMod_warten3 = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
			With oMod_warten3
				.setPropertyValue("Name","warten3")
				.setPropertyValue("PositionX",5) '192
				.setPropertyValue("PositionY",20) 
				.setPropertyValue("Width",180)
				.setPropertyValue("Height",15)
				.setPropertyValue("MultiLine", True)
				.setPropertyValue("Label","")
			End With
			warten_model.insertByName("warten3", oMod_warten3)
			
			oMod_warten4 = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
			With oMod_warten3
				.setPropertyValue("Name","warten4")
				.setPropertyValue("PositionX",5) '192
				.setPropertyValue("PositionY",35) 
				.setPropertyValue("Width",180)
				.setPropertyValue("Height",15)
				.setPropertyValue("MultiLine", True)
				.setPropertyValue("Label","")
			End With
			warten_model.insertByName("warten4", oMod_warten3)
			
			
			 
			warten_dialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
			warten_dialog.setModel(warten_model)
			
			warten_dialog.getControl("but1").addActionListener(oListbut)
			
			oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
			warten_dialog.createPeer(oWin2, null)
			warten_dialog.setVisible(True)
End Sub

Sub butlist_ActionPerformed()
	'wenn der Dialogbutton gedrückt wird
	raus = 1
	if warten_dialog.getControl("but1").Model.Label="Stop" then
		warten_dialog.getControl("but1").Label="Ende"
	else
		warten_dialog.setVisible(False)
	end if
End Sub

Gruß,
mikeleb
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Ja, das geht schon mal weiter.
Aber nun noch dieselbe Datei mit Konkordanzdatei, also ein Pärchen. Ich lade beide hoch:
Konkordanzdatei-1.sdi.odt
Datei umbenennen in .sdi
(344 Bytes) 50-mal heruntergeladen
Die Konkordanzdatei muß erst von ....sdi.odt ind nur .sdi umbenannt werden!
Dann muß die odt-Datei geöffnet werden und das Stichwortverzeichnis bearbeitet werden. Man prüft nur, ob der Link zur anwesenden Konkordanzdatei richtig ist. Danach Stichwortverzeichnis aktualisieren.

Wenn man jetzt das Makro aufruft, bleibt es stecken:
Error_bei_Objekt2.jpg
Error_bei_Objekt2.jpg (99.16 KiB) 1481 mal betrachtet
Gruß
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Hyperlink für Stichworte

Beitrag von mikeleb »

Hallo,
das ist ja richtig spannend. Den Fehler kann ich nachvollziehen. Allerdings, wenn ich das Makro mehrmals nacheinander aufrufe, verschwindet irgendendwann :? der Fehler und das Makro läuft fehlerfrei durch.
Auffällig ist, dass nach der Anwendung der Konkordanzdatei einige Stichworteeinträge doppelt da sind.
Ich habe dann mal alle Stichworte mit deinem Makro getilgt und dann das Verzeichnis mit Konkordanzdatei erneuert. Nun lief das Makro fehlerfrei.
Mir scheint, als wenn sich manuelle Stichworteinträge und Einträge per Konkordanzdatei teilweise gegenseitig stören bzw. nicht sauber aktualisiert werden???
Gruß,
mikeleb
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Ich glaube, dass da was Wahres dran ist. Denn irgendwann (bevor ich die endgültige Dateisicherung an einen neuen Ort vornahm) habe ich die Konkordanzdatei extern überarbeitet und dann leider nur den Link aktualisiert, was natürlich nicht zulässig ist. Man kann diese Vermutung erkennen an dem Namen der Konkordanzdatei. Das ursprüngliche Original hat kein -1 am Ende. Tja, so kann es einem ergehen, wenn man infolge Alter nicht bis zu Ende nachdenkt und in Eile ist.
Ich werde deine Nachricht nutzen und selbst noch einmal alles nachspielen...

Jaa, du hast Recht. Dein Makro arbeitet tadellos!
Nur mußt du noch an der Schönheit arbeiten. Ich würde (weil wir ja deutsch schreiben hier in Deutschland) den Makronamen umbenennen in "Verweise_setzen" oder noch viel besser (falls das Fachwort zutreffend ist) in "Hyperlinks_setzen".

Und welche Funktion haben die ersten beiden genannten Makros für den "Kunden"? Kann mann die umbenennen oder ganz verstecken, sofern sie nur eine Unterroutine sind?

Aber es steht mir nich zu, was zu bemängeln. Schließlich habe ich ja nichts dazu beigetragen.

In meinem Kopf steht noch was. Wenn man auf die Seitenummer geht, dann liest man zwar den internen Bezug im Array, aber der hilft dem "blöden" Nutzer noch nicht. Davor sollte eingeblendet stehen: [strg+klick], um Hyperlink zu öffnen zu:
Das oder Ähnliches wie beim Inhaltsverzeichnis...

NACHTRAG
Ich habe jetzt dein Makro auch einmal auf meine Küchenrezepte (mit den Stichworten aus den Abschnittsüberschriften) einwirken lassen. Aber da läuft es nicht (!) durch. Habe vom Protest einen "screen" gemacht:
Eingefangen001.jpg
Eingefangen001.jpg (114.63 KiB) 1443 mal betrachtet
Danach sah ich noch, dass eine Zählung der Stichworte bis 103 erfolgte. Dann habe ich ohne Sicherung abgebrochen.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
15Albert
***
Beiträge: 64
Registriert: Mo, 27.03.2023 13:03

Re: Hyperlink für Stichworte

Beitrag von 15Albert »

Guten Tag ihr beiden,
Wer macht es nun dem dummen User fertig?
Jeder bekommt je nach Wahl ein dicken Blumenstraus, eingen Sekt, Wein, Zigarren.
Albert.
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Ich bin dem Problem bei dem Koch- und Backrezepte - Verzeichnis nähergekommen:
1. Es waren zwei Stichwortverzeichnisse vorhanden!
Hier habe ich das zweite dann gelöscht.
2. Aber das verbliebene Stichwortverzeichnis hatte nicht nur Seitennummern am Ende, sondern zuvor Kapitelnummern!
DIESE Datei (verkürzt und anonymisiert) lade ich hier hoch:
Koch- und Backrezepte - Test für LO.odt
(31.76 KiB) 48-mal heruntergeladen
3. Dann ist auch noch ein Abbildungsverzeichnis und ein
4. Inhaltsverzeichnis

Ich habe dann noch einen sprachlichen Fehler in LO entdeckt: Wenn man sich im Stichwortverzeichnis befindet und das rechte_Taste_Menü "Verzeichnisse aktualisieren" aufruft, wird nur das eine (aktuelle) Verzeichnis aktualisiert, keineswegs alle. Sprachlich ist das also falsch.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Hallo Albert,
Halte noch ein schrecklich wenig aus. Die Feinheiten müssen noch geklärt werden.

Eine Rückfrage, falls du es sehr eilig hast:
Hat dein Stichwortverzeichnis nur Seiten am Ende?
Oder Kapitelnummern und Seiten wie in meinem Koch-Rezept-Beispiel?

Für die erste Variante funktioniert das Makro schon, wenn man es einbaut und dem Nutzer sagt, dass er strg+Klick auf die Seitenummer machen muß.
Für die zweite Variante noch nicht.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
15Albert
***
Beiträge: 64
Registriert: Mo, 27.03.2023 13:03

Re: Hyperlink für Stichworte

Beitrag von 15Albert »

Hallo Quosti,
ich sag mal, Ende April könnte ich es gut gebrauchen.
Die Lste der Stichworte hänge ich noch mal an.
Darin siehst Du, dass oft für ein Stichwort mehre Seitenzahlen angegeben sind.
Manche sind so lang, dass ein Teil der Seitenzahlen in der nächsten Zeile liegen

Das ganze Buch ist zum Hochladen zu groß
Albert
Dateianhänge
nur_Stichworte.odt
(74.85 KiB) 46-mal heruntergeladen
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Hallo mikeleb,
Ich korrigiere mich: Man muss ja nur auf die Seite klicken, also ohne strg+ und schon springt man dorthin. Ja, dann braucht es den diesbezüglichen Hinweis von mir nicht. Ist schon merkwürdig, was man übersieht.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
quotsi
******
Beiträge: 704
Registriert: Do, 14.11.2013 10:04

Re: Hyperlink für Stichworte

Beitrag von quotsi »

Hallo Albert,
Ich weiß nicht wie mikelab das im Detail gemacht hat.
Aber du kannst das Makro ja mal in dein LO einbauen und dann über deine Datei laufen lassen.

1. Zuerst deine Datei als Original an anderen Ort sichern. Gearbeitet wird beim Probieren nur mit einem Duplikat!
2. Makro einbauen. Ich würde ohne Skrupel das Makro unter den eigenen, aber nicht unter den am Dokument gebundenen einbauen.
Dazu LO aufrufen, leeres writer-Dokument-> Extras-> Dialoge verwalten->
oben den Reiter Bibliotheken auswählen und dann rechts neu-> "Stichworte_verlinken"->
nun oben Reiter Dialoge->im Fenster Dialog "Stichworte_verlinken" auswählen und bearbeiten.
Es entsteht unter ein Modul Main. Hier fügt man dann anstelle den 5 Programmzeilen (im Bild)
Noch_leeres_Modul.jpg
Noch_leeres_Modul.jpg (70.31 KiB) 1408 mal betrachtet
die aus unserem Forum nur die Codezeilen des letzten Makros von mikeleb markieren und mit strg+C kopieren und dann hier anstelle der 5 Zeilen mit strg+V einfügen.
Danach alles in der .odt sichern schließen und LO schließen und jetzt deine Ziel-Datei öffnen.

Unter Extras->Makros->ausführen müßtest du dich zu dem Makro durchhangeln können...
Zuletzt geändert von quotsi am Do, 06.04.2023 19:47, insgesamt 1-mal geändert.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Antworten