Überführung von Stichworten (für ein Stichwortverzeichnis) aus einer Dokumentdatei in eine Konkordanzdatei

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: 690
Registriert: Do, 14.11.2013 10:04

Überführung von Stichworten (für ein Stichwortverzeichnis) aus einer Dokumentdatei in eine Konkordanzdatei

Beitrag von quotsi »

überarbeitet: 24.11.2019 Die Überführung von Stichworten für ein Stichwortverzeichnis aus einer Dokumentdatei in eine Konkordanzdatei
  1. Einleitung:
    Prinzipiell gibt es unter LO|AOO zwei alternative Wege für ein Textdokument, Stichworte und Stichwortverzeichnis zu erstellen:
    1. Auswahl der Stichworte (oder Formulierungen) im Text und im Nachgang die Erstellung eines Stichwortverzeichnisses. In diesem Falle verbleibt alles im Textdokument und kann wie immer gesichert werden.
    2. Man sammelt die Stichworte oder Formulierungen (=Suchworte) in einer getrennten Datei, einer sogenannten Konkordanzdatei. Diese kann unabhängig bearbeitet werden, aber muß zur Erstellung des Stichwortverzeichnisses zur Verfügung stehen. Dokument- und Konkordanzdatei müssen nach jeweiligen Änderungen gesichert werden. Vorteilhaft ist die Möglichkeit, dass ein und dieselbe Konkordanzdatei für inhaltlich ähnliche Textdateien verwendet werden kann und Bearbeitungen der Stichworte an zentraler Stelle vorgenommen werden können.
    Dieses Projekt beschäftigt sich mit dem Problem, wie man aus einer großen Dokumentdatei die Stichworte, die nach erster Methode erstellt wurden, in eine Konkordanzdatei überführen kann.
    Die Nachteile, die durch die Konkordanzdatei an sich und durch die Überführung verursacht werden, sind im Epilog (s.u.) dargestellt.
  2. Anmerkung:
    • Diese Anleitung wurde unter LibreOffice 6.2.7.1 (X64) und AOO 4.1.5 getestet. Auf mögliche Unterschiede wird hingewiesen.
    • Diskussionbeiträge und Fragen bitte nur über das writer-Forum oder über die Kontaktdaten (mail) !
  3. Grundsätzliches
    Grundsätzlich sollte die Quell(-odt)-Datei zuerst gesichert werden, weil das Makro AlleStichworteTilgen die Stichworte mit den Einträgen im Stichwortverzeichnis unumkehrbar tilgt. Nur bei Stichwortverzeichnissen anhand einer Konkordanzdatei können Stichworte und Stichwortverzeichnis anhand jener problemlos wieder hergestellt werden.
    Empfehlenswert sind grundlegende Kenntnis über die Inhalt einer Konkordanzdatei: Man muss sie sich als Tabelle vorstellen, in deren erster Spalte die Stichworte (=Suchworte) oder Formulierungen wortgetreu stehen, wie sie im Text gefunden werden (sollen). In der zweiten Soalte stehen alternative Begriffe oder Phrasen, die anstelle der ersteren im Stichwortverzeichnis (bzw. -register) erscheinen. Danach sind zwei Spalten für Schlüsselworte oder -Bezeichnungen reserviert, die eine ordnende Gliederung im Verzeichnis ermöglichen. Die letzten beiden Spalten spezifizieren die Sucheigenschaften. Nämlich, ob nur ganze Worte oder bereits Teile davon zutreffend sind und schließlich, ob Groß- und Kleinschreibung unterschieden werden sollen oder nicht.
    Die Stichworte sind mit ihren zugehörigen Zellen zeilenweise in der Konkordanz."sdi"- Datei vom Typ CSV (coma separated values) angeordnet, wobei die einzelnen Zellen nicht durch Kommata, sondern durch Semikola getrennt sind. Die Dateiendung sdi ist für den LO- bzw. AOO-writer vorgeschrieben.
  4. Makros
    Die oben verlinkte Musterdatei „Der Taucher mit Stichwortverzeichnis und Inhaltsverzeichnis“ enthält bereits die notwendigen vier Makros, so dass man jede eigene weitere Datei öffnen und die Wirkung der Makros überprüfen kann.
    • Wird ein Makro zur Durchführung aufgerufen, wirkt es auf die zuletzt geöffnete (= aktive) Datei.

    AlleStichworte.bas.zip
    Achtung! Nicht entzippen, sondern ".zip" am Dateinamensende löschen!
    (6.38 KiB) 414-mal heruntergeladen

    Sofern diese Makros Ihren Wünschen entsprechen, können Sie diese auch sehr schnell und einfach aus der verlinkten bas-Datei in Ihr Libre- oder OpenOffice übernehmen (siehe a). Man kann die 4 Makros auch aus der bas-Datei in eine beliebige Dokument-Datei einbringen (siehe b), genauso wie im vorgenannten Beispiel „Der Taucher mit Stichwortverzeichnis und Inhaltsverzeichnis“. Aus der o.g. Musterdatei kann man die Makros auch kopieren (siehe c).
    1. Übernahme der 4 Makros aus der bas-Datei in Libre Office oder ApacheOpenOffice unter "Meine Makros"
      Die Übernahme aus der bas-Datei gestaltet sich problemlos und einfach:
      Mit Menü Extras → Makros → Makros verwalten → LibreOffice Basic (bei LO) bzw. OpenOffice Basic (bei AOO) → Meine Makros → Neu.
      Unter LO öffnet sich jetzt eine Maske unter der Bibliothek Standard. Mit Menü Datei -> Basic importieren ruft man die zuvor an einem bekanntem Ort abgelegte Datei AlleStichworte.bas auf und alle 4 Makros sind nach Schließen und erneutem Öffnen namentlich verfügbar.
      Unter OpenOffice wird analog vorgegangen. Es öffnet sich in der Bibliothek Standard ein Modul (dessen Name ist unerheblich und man kann ihn später editieren). In dieses fügt man den kompletten Inhalt der zuvor mit dem writer geöffneten bas-Datei ein. Nach Sicherung, Schließen und erneutem Öffnen sind die 4 Makros namentlich verfügbar.
    2. Übernahme der 4 Makros aus der bas-Datei in eine beliebige Dokumentdatei
      Öffnen einer beliebigen Dokumentdatei.
      Dann Menü Extras → Makros → Makros verwalten → (LO) LibreOffice Basic bzw. (AOO) OpenOffice Basic → die Dokumentdatei wählen → wenn keine Bibliothek "Standard" vorhanden ist, dann "New" bzw. "Neu" → dem Modul den Namen "Stichworte" geben .
      Es entsteht eine Bibliothek "Standard" und darunter das Modul "Stichworte". Rechts baut sich eine Programmtafel auf.
      Wenn eine Bibliothek "Standard" unter dem Namen der Dokumentdatei bereits vorhanden ist, dann unter "Standard" ebenfalls "New" und es wird ein weiteres Modul eingefügt. Das weitere Vorgehen ist analog.
      In das Modul "Stichworte" fügt man die 4 Makros wie folgt ein:
      Menü Datei → "Basic importieren . Man sucht die Datei "AlleStichworte.bas" und fügt sie ein.
      Danach Sichern, Schließen und erneut Öffnen der Dokumentdatei. Die 4 Makros sind verfügbar.
    3. Überführung von Makros aus der Musterdatei in eine beliebige Dokumentdatei
      Öffnen der Dokumentdatei, in die die Makros eingefügt werden sollen.
      Dann Menü Extras → Makros → Makros verwalten → (LO) LibreOffice Basic bzw. (AOO) OpenOffice Basic → die Dokumentdatei wählen → wenn keine Bibliothek "Standard" vorhanden ist, dann New oder Neu → dem Modul den Namen "Stichworte" geben .
      Es entsteht eine Bibliothek "Standard" und darunter das Modul "Stichworte". Rechts baut sich eine Programmtafel auf.
      Wenn eine Bibliothek "Standard" unter dem Namen der Dokumentdatei bereits vorhanden ist, dann unter "Standard" ebenfalls "New" und es wird ein weiteres Modul eingefügt. Das weitere Vorgehen ist analog.
      In das Modul "Stichworte" fügt man die 4 Makros wie folgt ein:
      Hierzu öffnet man im writer zusätzlich die Musterdatei “Der Taucher...” . Dann Menü Extras → Makros → Makros verwalten → (LO) LibreOffice Basic bzw. (AOO) OpenOffice Basic , klappt “Der Taucher...” auf, dann auf Modul “Standard”. Jetzt sind die 4 Makros sichtbar, deren erstes man mit Verwalten öffnet, mit Strg+A komplett markiert und mit Strg+C in das Modul “Stichworte” der Zieldatei XXX mit Strg+V einfügt. Speichern und ggf. Standard zu- und wieder aufklappen. Man sieht sofort das eingefügte Makro. Nacheinander gleichartig verfährt man mit den anderen Makros, die man in derselben Maske anhand der unteren Karteizungen ausswählen kann. Man fügt sie jeweils am Ende des ersten Makros an. Die Makronamen erscheinen dann selbständig unter dem Modul "Stichworte" (bzw. wohin man eingefügt hat). Danach unbedingt alles sichern.
    4. Hinweise zu den Makros
      Damit die Makros wirken können, muß man (LO) unter Extras→ Optionen→ LibreOffice→ Sicherheit→ Makrosicherheit bzw. (AOO) Extras→ Einstellungen→ OpenOffice→ Sicherheit→ Makrosicherheit diese auf Mittel herabsetzen. Man muß vor der Ausführung eines Makros ohnehin noch zustimmen.
    5. Quellen der Makros
      Das Makro AlleStichworteTilgen wurde aus http://www.ooowiki.de/KonkordanzDatei.html übernommen. Die anderen Makros habe ich selbst entwickelt.
  5. Anzeige der Stichworte
    Man kann sich vor der Löschung alle Stichworte nacheinander anzeigen lassen:
    1. mit dem Makro „AlleStichworteZeigen“
      Dieses Makro ruft man auf mit Extras→ Makros→ Makro ausführen und dann unter („Der Taucher mit Stichwortverzeichnis und Inhaltsverzeichnis“) oder dem Ort, wohin die Makros verbracht wurden die Bibliothek gleichen Namens wie die Beispieldatei, dann zum Modul Standard und weiter zum Makro „AlleStichworteZeigen“Ausführen.
      Gelistet werden alle Stichworte, wie sie vom Makro „AlleStichworteInKonkordanzSDI“ später exportiert werden.
      Die angezeigten Nummern entsprechen nicht der Reihenfolge im Text, sondern des Eintrags als Stichwort. Auch springt der Cursor während der Anzeige nicht von Stichwort zu Stichwort.
    2. mit dem Makro „NurLeereStichworteZeigen“
      Dieses Makro ruft man auf mit Extras→ Makros→ Makro ausführen und dann zur Bibliothek gleichen Namens („Der Taucher mit Stichwortverzeichnis und Inhaltsverzeichnis“) wie die Beispieldatei, dann zum Modul Standard und weiter zum Makro „NurLeereStichworteZeigen“Ausführen.
      Gelistet werden nur diejenigen Stichworte, die beim Export mit dem Makro „AlleStichworteInKonkordanzSDI“ leer bleiben werden, aber dennoch in ihrem korrekten Zusammenhang mit den alternativen Einträgen und Schlüsseln.
      Die Nummern entsprechen nicht der Reihenfolge im Text, sondern des Eintrags als Stichwort.
      Auch springt der Cursor während der Anzeige nicht von Stichwort zu Stichwort.
    3. mit der im writer eingebaute Routine
      Man setzt den Cursor unmittelbar vor das erste markierte Stichwort, dann Bearbeiten→ Verzeichniseintrag oder rechtes Mausmenü Verzeichniseintrag. In der dann sichtbaren Maske steuert man mit der unteren Pfeilreihe durch alle Stichworte. Durch einen Fehler im Programm (LO und AOO) werden keine oberen Pfeile angezeigt, wenn das Stichwort nur einen Treffer hat wie das erste Stichwort in unserer Beispieldatei. Setzt man den Cursor z.B. vor das zweite Stichwort, dann erscheinen die zwei Pfeilreihen und bleiben beim Durchsuchen (sogar rückwärts) erhalten.
      Während der Anzeige springt der Zeiger im Text in richtiger Reihenfolge von Stichwort zu Stichwort.
      Deshalb ist diese Methode vielleicht günstiger, wenn man sich Notizen zu den Stichworten machen möchte, die nur durch eine Marke vor dem Stichwort markiert sind und deshalb später in der Konkordanzdatei überarbeitet werden müssen (siehe unten).
    4. Auch in der exportierten Konkordanzdatei sind noch alle leeren Stichworte alphabetisch sortiert aufgeführt! Weil die leer, also ohne Suchwortinhalt sind, beginnen die Einträge in der Zeile mit einem Semikolon, gefolgt vom Alternativbegriff. Näheres im Folgenden.
  6. Überführung aller Stichworte in eine Konkordanzdatei.sdi]
    Noch vor der ersten generellen Tilgung der Stichworte müssen alle Stichworte in eine Konkordanzdatei exportiert werden. Späterhin ist diese Rettung nicht mehr nötig, weil dann die letzte Konkordanzdatei als Sicherheit verfügbar ist. Das erfolgt mit dem Makro „AlleStichworteInKonkordanzSDI“ .
    Dieses Makro hat naturgemäß einige Schwächen:
    • Es überführt alle mit Strg+F8 sichtbar gemachten, markierten Stichworte oder Passagen als Suchworte.
    Sind die Markierungen im Ausgangstext aber nur auf ein Leerzeichen vor (!) dem Stichwort beschränkt, wird folglich kein Suchwort exportiert, sondern der Eintrag in der Konkordanzdatei beginnt leer, gefolgt von einem Semikolon (in einem Editor) bzw. mit leerer Spalte (bei tabellarischer Ansicht). Danach folgt der "alternative" Eintrag usw.
    Diese "leeren" Suchworteinträge werden gemeinsam mit allen anderen Stichworten, die nunmehr Suchworte heißen, alphabetisch sortiert in der Konkordanzdatei zeilenweise abgelegt.
    Diese leeren müssen später editiert werden, wenn sie im Stichwortverzeichnis auf Basis der Konkordanzdatei wieder enthalten sein sollen.
    Wiederholt wird gefragt, wie diesen "leeren" Stichworteinträge entstehen? Wenn auf klassische Weise Worte markiert werden und dann in der Eintragungsmaske für das Stichwortverzeichnis unter "Eintrag" ein anderes Wort als das markierte oder eine Aufzählung oder gar eine Textpassage hinterlassen wird, dann wird zwar dieser Eintrag im Stichwortverzeichnis wirksam, jedoch die Markierung am ursprünglichen Stichwort fällt kleiner aus. Das Stichwort wird nicht gemerkt, lediglich der Verweis auf diese Position bleibt erhalten. Folglich geht das Stichwort für die Überführung zum späteren Suchwort verloren. Bei der Erzeugung eines Stichwortverzeichnisses mittels Konkordanzdatei werden anhand jener erst alle Suchworte im Text markiert und dann die alternativen Einträge mit der Gliederung und den Seitenverweisen im Stichwortverzeichnis erzeugt.
    • Die Alternativeinträge und Schlüssel 1. und 2. Ordnung werden hingegen völlig korrekt exportiert.
    • Die Merkmale Groß/Klein und Ganzes Wort können nicht erkannt werden und werden deshalb vom Makro mit festen Werten für Groß/Klein 1 (=ja) und für Ganzes Wort 0 (=nein) versehen. Diese Merkmale müssen in der Konkordanzdatei entsprechend den eigenen Wünschen überarbeitet werden.
    Das Makro ruft man auf mit Extras→ Makros→ Makro ausführen, dann z.B. zur zutreffenden Bibliothek, dann zum Modul Standard und schließlich zum Makro „AlleStichworteInKonkordanzSDI“, dann ausführen.
    Das Makro sortiert die Stichworte und liquidiert Duplikate.

    Während des Makroablaufes wird ein Zielverzeichnis vorgeschlagen, das aber nur, falls es vorhanden ist, übernommen wird. Es kann editiert werden. Nichts wird zerstört.
    Ebenso wird der Name „Konkordanzdatei“ vorgeschlagen und darf wunschgemäß verändert werden. Da die Dateiendung .sdi zwingend ist, kann sie nicht geändert werden.
  7. Löschung der Stichworte im Text
    Jetzt kann man alle Stichworte mit dem Makro löschen. Man ruft das Makro auf mit Extras→ Makros→ Makro ausführen und dann sucht man unter dem Modul Stichworte das Makro „AlleStichworteTilgen“ und ausführen.
    Mit erfolgreicher Tilgung leert sich auch das Stichwortverzeichnis und kann auf klassische Weise nicht mehr wiederhergestellt werden. Aber dafür kann man das Stichwortverzeichnis mithilfe der Konkordanzdatei umgehend neu erstellen.
  8. Erzeugung eines frischen Stichwortverzeichnisses auf Basis Konkordanzdatei
    Dazu geht man in das leere Stichwortverzeichnis, klickt mit der rechten Maustaste und wählt Verzeichnis bearbeiten. In der sich öffnenden Maske (Karteikarte Typ) aktiviert man Konkordanzdatei und öffnet unter Datei die erzeugte Konkordanzdatei. Dieses Vorgehen, Löschen nach (7) und erneut Erzeugen nach (8), kann nach Bearbeitung der Konkordanzdatei beliebig oft wiederholt werden.
  9. Die Überarbeitung der Konkordanzdatei.sdi
    Man darf diese Datei durchaus umbenennen, aber die Endung .sdi muß man zwingend beibehalten.
    Es gibt grundsätzlich zwei gleichwertige Wege. Entweder bearbeitet man die Konkordanzdatei selektiv extern, wie hier unter (9a) und (9b) nachfolgend beschrieben, und setzt dann nach (7) und (8) fort oder man verbindet sie zuerst mit der Dokumentdatei nach (8) und bearbeitet erst danach die Konkordanzdatei intern nach (9c).
    1. Aus dem (LibreOffice oder AOO) writer heraus kann man eine Konkordanzdatei jederzeit separat zum Bearbeiten öffnen!
      Durch Doppelklick im Windowsexplorer heraus gelingt dies nicht so einfach, weil dann die Konkordanzdatei in wordpad geöffnet wird, wo keine Sortierung angeboten wird.
      Nach einer Bearbeitung muß gesichert werden, wobei man in LO "Textformat" bestätigt bzw. in AOO "Format beibehalten".
    2. Eine Bearbeitung mit calc, wie im wiki http://www.ooowiki.de/KonkordanzDatei.html seinerzeit empfohlen, ist ebenso möglich. Sie bietet den Vorteil einer tabellarischen Übersicht.
      Man kopiert den Inhalt der Konkordanz.sdi (mit Strg+C) und fügt ihn in eine leere calc-Tabelle (mit Strg+Umsch+V) ein, wobei man unformatierter Text und Semikolon als Feldtrenner bestätigt. Dann kann man die Tabelle bearbeiten, sortieren usw.
      Nach der Bearbeitung speichert man unter Dateityp CSV, ohne automatische Dateiendung, gibt die Endung .sdi vor, Filtereinstellung bearbeiten, dann Feldtrennzeichen ; und Zeichenkettentrennzeichen bleibt leer.
      Leider kann man neuerdings (2023) eine .sdi nicht mehr mit calc laden sondern sie wird immer mit writer geladen, was weniger komfortabel ist. Deshalb empfehle ich zuvor den Aufruf der .sdi mit einem Editor und gleich sofort eine erneute Speicherung (genauso wie oben beschrieben unveränderst mit ; als Feldtrenner und ohne Zeichenkettentrennzeichen) aber im Format UTF8. Danach wird diese Datei sofort wieder von calc akzeptiert !
    3. Das Bearbeiten der Konkordanzdatei kann auch intern im writer mit der geöffneten Dokumentdatei (.odt) erfolgen, sofern man zuvor die Verbindung zur Konkordanzdatei nach (8) herstellte.
      Man geht auf die Überschrift Stichwortverzeichnis, dann rechtes Mausmenü Verzeichnis bearbeiten → Knopf Datei → Bearbeiten.
      Es öffnet sich die Konkordanzdatei in tabellarischer Ansicht. Den Kommentar zum ersten Stichwort läßt man unbedingt unberührt (damit die Struktur bei externer Bearbeitung nach (9a) und (9b) erkennbar bleibt. Nach Speichern und Schließen sind die Änderungen in der "Konkordanz.sdi" bzw. der anders benannten Konkordanzdatei bleibend eingetragen.
    4. Was sollte man in der Konkordanzdatei überarbeiten?:
      • Bei leeren Suchworten (= 1. Position in jeder Zeile), aber vorhandenen Alternativeinträgen für das Stichwortverzeichnis (= 2. Position in jeder Zeile) und intakten Schlüsseln (= 3. und 4. Position in jeder Zeile) müssen die Suchworte anhand der Notizen nachgetragen werden, sofern diese Einträge im Stichwortverzeichnis erscheinen sollen.
      (in der Beispieldatei: in der ersten Zeile Knapp vor Knapp, Knappe) und in der zweiten Zeile Knecht vor Knecht)
      Groß- oder Kleinschreibung zu unterscheiden wurde im Makro grundsätzlich bejaht. Auch dies darf bei Bedarf korrigiert werden (Vorletzte Zeilenposition von 1 auf 0 setzen).
      • Das Makro hat die ausschließliche Erfassung ganzer Stichworte grundsätzlich verneint. Hier darf man ebenfalls ändern (letzte Zeilenposition von 0 auf 1 setzen).
      (in der Beispieldatei: Ring → 1, sonst würde "bringt" auch als Treffer gewertet)

      Sogenannte Haupteinträge, die dann im Stichwortverzeichnis mit fetten Seitennummern erscheinen, kann man nicht in der Konkordanzdatei festlegen, sondern müssen nachträglich im Dokument-Text über das Menü Bearbeiten->Verzeichniseintrag individuell überarbeitet werden.
  10. Epilog
    Das natürliche Bedürfnis nach schneller Korrektur von Stichworteinträgen läßt den Wunsch nach einer zentralen Instanz für Stichworte aufkommen, in der diese bearbeitet werden können. Die gibt es in der Dokumentdatei normalerweise nicht. Deshalb erscheint die externe Speicherung in einer Konkordanzdatei naheliegend.
    Bei näherem Hinsehen erkennt man aber Unterschiede. So ist bereits der Vermerk Haupteintrag einer Konkordanzdatei nicht erfaßbar. Das hätte aber auch keinen Sinn, da die Konkordanzdatei eine neue Stichwortsuche und -markierung im Dokument veranlaßt und folglich allen passenden Suchwort-Treffern dieses Merkmal verpaßt hätte, was der Grundidee völlig widerspricht.
    Das Makro „AlleStichworteInKonkordanzSDI“ erforscht derzeit nur das Stichwortverzeichnis, d.h. nur alle dort enthaltenen Informationen können ausgelesen werden. Wenn also ein vom Stichwort abweichender Registereintrag gewünscht wurde, dann ging bei der klassischen Erzeugung des Stichworteintrags bereits das Stichwort verloren und kann folglich auch mit keinem Makro aus dem Verzeichnis ermittelt werden. Die bei einer Stichwort-Suche notwendigen Informationen, so z.B. ob eine Unterscheidung von großer und kleiner Schreibung wichtig ist und ob nur ganze Worte ausgewählt werden sollen, wurden naturgemäß auch nicht im Stichwortverzeichnis festgehalten und können folglich mit dem derzeitigen Makro nicht ermittelt werden. Diese Unterschiede zwischen klassischem Stichworteintrag und Stichworteintrag und -verzeichnis durch Konkordanzdatei sind also bereits im Konzept begründet und können bei der Umformung ohne manuelle Bearbeitung nicht umgangen 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