Stichwortverzeichnis mit Links zu den betreffenden Seiten

HowTos, komplexe Anleitungen und nützliche Dokumente

Moderator: Moderatoren

Forumsregeln
Hier bitte komplexere Anleitungen allgemeinem Interesses posten, sowie wichtige Dokumente zum Download.
Bitte hier (möglichst) keine Diskussionen führen. Für Fragen und Hinweise ein neues Thema im entsprechenden Unterforum eröffnen.
Antworten
quotsi
******
Beiträge: 693
Registriert: Do, 14.11.2013 10:04

Stichwortverzeichnis mit Links zu den betreffenden Seiten

Beitrag von quotsi »

  • 1. Notwendigkeit und Zweck
Inhaltsverzeichnisse unter OpenOffice (OO) und LibreOffice (LO) sind zum Zeitpunkt der Erstellung mit Hyperlinks zu den betreffenden Seiten ausgestattet, so dass mit strg+Klick auf die Seitennummer zur gelisteten Seite zurückgesprungen wird.
Stichwortverzeichnisse gleich welcher Art verfügen über keine derartige Funktion. Den Rücksprung zu der zum Stichwort gehörende Seite muss manuell selbständig vorgenommen werden.
Das folgende Makro (der Verfasser ist mikeleb, basierend auf einem Makro von Stephan) ermöglicht im Stichwortverzeichnis durch Klick auf die Seitennummer den Sprung auf die Seite, wo das gelistete Stichwort sich befindet:
stichworte_verlinken_2.bas.zip
nicht entzippen, sondern umbenennen .bas
(14.88 KiB) 97-mal heruntergeladen
Sichern Sie zuerst diese zu .bas zurückbenannte Datei an einen wieder auffindbaren Ort.
  • 2. Makroinstallation
Für den Gebrauch an beliebigen Dokumenten ist die Makroinstallation unter „eigene Makros“ notwendig.

Die Übernahme aus der bas-Datei gestaltet sich problemlos und einfach:
Unter LibreOffice Basic (LO):
Menü Extras → Makros → Makros verwalten → Basic → man wählt „Meine Makros“ → Neu.
Es öffnet sich jetzt eine Maske „Neues Modul“. Man gibt „Stichworte_verlinken“ ein,
Wichtig: keine Leerstelle und kein Bindestrich außer _ im Namen) → Ok
Es öffnet sich die Maske „Meine Makros und Dialog.Standard – Libre Office Basic“.
Jetzt markiert man im rechten Fenster alle Zeilen und löscht sie.
In dieser Maske Menü „Datei“ → „Basic importieren! → man wählt die oben genannte Makrodatei mit der Endung .bas und importiert.
Sicherung mit strg+S und Schließen.

Unter OpenOffice (OO): wird analog vorgegangen
Menü Extras → Makros → Makros verwalten → OpenOffice Basic → man wählt „Meine Makros“ → Neu.
Es öffnet sich jetzt eine Maske „Meine Makros und Dialog.Standard – OpenOffice Basic“. Man klickt oben auf das Symbol "Module"
und wählt neu, gibt unter neues Modul „Stichworte_verlinken“ ein,
Wichtig: keine Leerstelle und kein Bindestrich außer _ im Namen) → Ok
Es öffnet sich die Maske „Meine Makros und Dialog.Standard – OpenOffice Basic“.
Jetzt markiert man im Fenster alle Zeilen und löscht sie.
In dieser Maske wählt man oben das Symbol → „Basic-Quelltext einfügen" und verlinkt die oben genannte Makrodatei mit der Endung .bas.
Sicherung mit strg+S, Schließen.

Nach Sicherung, Schließen und erneutem Öffnen ist das Makro namentlich verfügbar.

Wie man Makros auf andere Weise oder in Dokumenten verankern kann wurde bereits unter http://de.openoffice.info/viewtopic.php?t=70044 unter Punkt 4. ausgiebig beschrieben.
  • 3. Aufruf des Makros
Man ruft das Makro auf mit Extras → Makros → Makro ausführen → Meine Makros aufklappen, Standard wählen → wählt das Modul „Stichworte_verlinken“ → Makro „haupt_Stichworte_verlinken“ (kein anderes Makro aus dieser Auswahl aufrufen!).
Der weitere Fortgang wird automatisch kommentiert. Ist das Makro erfolgreich gewesen, kann man im Stichwortverzeichnis durch Klick auf die Seitennummer zum Stichwort im Text springen.
Nach dem Sichern des Dokuments ist dies bleibend. Deshalb sollte man zuvor eine Sicherungsdatei anlegen.
  • 4. Funktionsfähigkeit
Getestet wurde das Makro unter LO Version 7.4.6.2 (x64) & OO Version 4.1.14 an Dateien mit einem konventionellem Stichwortverzeichnis mit Seitennummern, mit einem Stichwortverzeichnis mit Kapitel- und Seitennummern und an Dateien mit einem Stichwortverzeichnis auf Basis von einer Konkordanzdatei. Eine Aktualisierung des Stichwortverzeichnisses vor Makroaufruf ist unbedingt sicherzustellen.
Das Zusammenspiel von Konkordanzdatei und Stichwortverzeichnis ist besonders nach Streichungen von Stichworten in der Konkordanzdatei problematisch und sollte deshalb nur nach Tilgung aller Stichworte aus dem Text vor Aktualisierung des Stichwortverzeichnisses auf Basis Konkordanzdatei erfolgen. Hierfür existiert ein Makro unter der unter 2 genannten Referenz!
  • 5. Ein paar technische Details
Im Gegensatz zu den Hyperlinks in einem Inhaltsverzeichnis werden durch das Makro Querverweise auf Lesezeichen gesetzt. Wird das Stichwortverzeichnis aktualisiert, werden die Querverweise wieder vernichtet und das Makro muss erneut gestartet werden.
Im Makro durchläuft nacheinander folgende Schritte:
  1. Das Verzeichnis wird aktualisiert.
    Wenn das aufgrund z. B. manueller Änderungen nicht gewünscht ist, müssten die Zeilen 44-45 auskommentiert werden.

    Code: Alles auswählen

    	oindex.update
    	wait 1000
    
  2. Die Verzeichnisstruktur wird analysiert.
    Neben den Standardeinstellungen werden weiterer individuelle Einstellungen akzeptiert.
    Vor dem Verzeichniseintrag darf kein zusätzlicher Text stehen. Danach darf optional Text stehen, der von einem Tabulator gefolgt wird. Am Ende muss die Seitenummer(n) stehen, vor der ein Tabulator (und ggf. ein optionaler Text) stehen muss.
    Anderenfalls endet das Makro ohne Änderungen.
  3. Lesezeichen setzen
    Vor jedes Stichwort im Dokument wird eine Lesezeichen gesetzt. Dieses erhält als Namen das Stichwort und eine fortlaufende Nummer. Zur Unterscheidung von anderen Lesezeichen erhalten sie ein Präfix. Dieser wird in Zeile 16 des Makro individuell gesetzt.

    Code: Alles auswählen

    Const praefix="x_"
    Damit sich bei mehrfachem Makroaufruf die Lesezeichen nicht verdoppeln, werden zunächst alle diese Leerzeichen (falls vorhanden) gelöscht und anschließend neu gesetzt.
    Achtung: An dieser Stelle kann es unter bestimmten Bedingungen zu einem Fehler kommen, insbesondere in Verbindung mit einem Bug im Zusammenhang mit einer Konkordanzdatei (https://bugs.documentfoundation.org/sho ... i?id=44152)
  4. Setzen der Querverweise
    Die Paragraphen des Sichwortverzeicnnisses werden nun überschrieben. Dabei werden die Seitenzahlen durch Querverweise auf die Seitenzahl der entsprechenden Lesezeichen ersetzt.
    Aus z. B. einer Zeile
    Frieden ......... 23, 45ff., 56f.
    wird
    Frieden ......... 23, 45ff., 56f.
    (das grün dient nur der Verdeutlichung)
    Dabei gilt: Tritt ein Stichwort auf einer Seite mehrfach auf, wird der Querverweis auf das 1. Auftreten gesetzt. Tritt ein Stichwort auf mehreren aufeinanderfolgenden Seiten auf (f. bzw. ff. oder 45-48) so wird der Querverweis auf das 1. Auftreten auf der 1. entsprechenden Seite gesetzt.
    Existiert (aus unerfindlichen Gründen) auf der Seite entsprechenden Seite kein Lesezeichen so wird kein Querverweis gesetzt, die Seitenzahl steht wie ursprünglich da.
Am Ende erscheint eine Angabe von Start- und Endzeit des Makros. Je nach Komplexität und Umfang des Dokuments kann die Bearbeitung dauern. Erfolgreiche Tests mit mehreren hundert Stichwörtern benötigten schon ein paar Minuten.
Da alle Lesezeichen im Makrodurchlauf mit ihrer Position im Text in einem Array abgelegt werden, könnte auch der Speicherbedarf relevant werden.
win11 - Avira - LO 7.5.8.2 (X86_64) - AOO 4.1.14
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Antworten