Text mit semantischem Markup anreichern

Ich möchte bestimmte Stellen in einem Text in Writer kennzeichnen, so dass man später erkennen kann, dass der Text zu einer bestimmten Inhaltskategorie gehört.
Beispielstext:

Morgen werden Hans und Irene aus Hamburg und auch die Münchner eintreffen.
Es geht um die Ausbildung zum Kaufmann und Programmierer.

Der Text enthält Personen, Ortsangaben und Berufe, die als solche gekennzeichnet werden, um sie bei Bedarf zu suchen oder hervorzuheben. Das Wort “Münchner” soll als Person und als Ortsangabe gekennzeichnet werden.

Gibt es eine Möglichkeit, den Text für Laien als normaler Fließtext darzustellen und gleichzeitig für Fortgeschrittene die Möglichkeit zu bieten, nach dem Markup zu suchen oder ihn hervorgehoben darzustellen ?

Erstelle eine eigene Zeichenvorlage, die sich nur in ein oder zwei Attributen vom Textkörper unterscheidet, z.B. “Fett” und “Kursiv”, und markiere die Stichworte damit. Um die Hervorhebung aufzuheben, musst Du dann nur “Fett” und “Kursiv” aus der Zeichenvorlage zu entfernen.

Nutze Styles für semantisches Markup.
.
Wenn erstmal keine visuelle Unterscheidung nötig ist, kannst Du die Stilarten vom normalerweise verwendeten ableiten, ohne Änderungen zu machen. Wichtig ist, dass Deine Stile weiterhin “erben”, damit Du den bisherigen Stil ändern kannst, und das für abgeleitete Stile ebenfalls gilt.
.
Schwieriger wird es, wenn dies semantische markup mit anderem kollidiert, also Hamburg in einer Überschrift, Bildunterschrift, Fussnote auftaucht…

Erstmal möchte ich keine visuelle Unterscheidung der markierten Worte, damit ein einfacher Leser nicht irritiert ist.
Auf Wunsch sollen aber (für fortgeschrittene Nutzer)

  • alle markierten Worte (einer oder mehrerer Kategorien) im Text hervorgehoben werden,
  • nacheinander angesprungen werden können (wie bei der Suchfunktion) und
  • im Idealfall auch in einer Art Referenz zusammengefasst werden können, also z.B.:

Orte:
Hamburg: Seite 1, 4, 12
Münchner: Seite 1, 23
Personen:
Hans: Seite 1
Münchner: Seite 1, 23

Die ersten beiden Punkte könnte man mit Zeichenformatvorlagen lösen, die sich nur dem Namen nach von der Standardformatierung unterscheiden (z.B. “Personen”, “Orte”). Wanderer, meinst Du das mit Styles ?
Zum Sichtbarmachen könnte man die Zeichenfarbe ändern.
Für die Referenz habe ich keine Lösung.
Außerdem kommt mir der Ansatz etwas unprofessionell vor, weil ich Layoutmittel zur semantischen Markierung “misbrauche”. Und bei Worten, die in zwei Kategorien (wie “Münchner”) geht es nicht.

Besser fände ich eine Lösung, die nur die Inhaltskategorie beschreibt, z.B. eine HTML-artige Markierung wie

… aus [KatOrt] Hamburg [/KatOrt] und auch die [KatOrt][KatPerson] Münchner [/KatOrt][/KatPerson] eintreffen. Sorry für die eckigen Klammern - spitze Klammern werden offenbar nicht angezeigt.

Dann könnte man Text, der zu mehreren Kategorien gehört, mehrfach markieren durch Schachtelung.

Unprofessionell wäre nur der Einsatz harter Formatierungen. Und selbstdefinierte Zeichen-Formate sind dasselbe, wie eigene Html-Auszeichnungen. Die Stildefinition entspricht dann dem, was Du im css-File noch festlegst. Auch html unterscheidet nicht zwischen semantischem und Layout-orientiertem Markup.


2 Kategorien gehen auch und werden in XML genau so geschachtelt, wie in html.

Man kann verwendete Stile dann auch via Suchen+Ersetzen anspringen…

Auf der Dokumentationsseite von LibreOffice findest Du auch ein Buch nur zum Einsatz von Styles mit dem Namen
“Designing with LibreOffice”
https://documentation.libreoffice.org/en/english-documentation/

Das Buch werde ich lesen, es geht um Vorlagen aller Art.
Bin erst auf Seite 40 von 510 …

Wie meinst Du das ? Wenn ich mit Zeichenformatvorlagen arbeite, kann ich immer nur eine Formatvorlage auf einen Text anwenden - eine neue Zuweisung verdrängt die alte.

Only one style of a particular type can apply to a selection.
You can have a character and a paragraph style applying to the same selection, but not two different character styles or two different paragraph styles.
(“Designing with LibreOffice”, S. 13)

Danke nochmals für den Buchtipp. Ich liebe Vorlagen aller Art.

Leider richtig, ich bezog mich nur auf das xml. Die Grammatik schränkt uns hier nicht ein, aber die Benutzeroberfläche.

Ja, kommt drauf an wie hoch Du den Aufwand treiben möchtest.
Du kannst zum Beispiel drei Zeichenvorlagen erstellen mit den Bedeutungen:

  • Münchner - Ort
  • Münchner - Person
  • Münchner - Ort+Person

    Das Ganze könntest Du auch mit Feldern machen (Datei>Eigenschaften>Benutzerdefinierte Eigenschaften).
    Prüfung über den Navigator.

90547 HB Text mit semantischem Markup anreichern.odt (17,3 KB)

Hallo Hrbrgr,
ja, ich könnte spezielle Zeichenformatvorlagen erzeugen, die zwei, drei, usw. Kategorien gleichzeitig kennzeichnen.
Einschränkung: ab vier, fünf Kategorien steigt die Zahl der Kombinationen stark an, so dass es unübersichtlich wird.

Die Lösung mit Dokumentinfo-Feldern hat den Vorteil, dass ich die Felder am Bildschirm grau hinterlegt darstellen, die Felder im Navigator sehen und direkt anspringen kann.
Aber das ist dann pro Feld ein Festtext, ähnlich wie Textbausteine. Scheint mir nicht geeignet, mehrere Textpassagen mit der gleichen Kategorie zu kennzeichnen.

Ich werde Zeichenformatvorlagen / Styles für das semantische Markup verwenden. Das ist bei der Texteingabe und auch nachträglich recht komfortabel.

Allerdings fehlt mir noch eine Lösung, wie ich

  • die Markierungen (z.B.Personennamen) nacheinander anspringen kann und
  • eine Referenz erzeugen kann (Beispiel weiter oben).

Erst dachte ich, ich könnte die Suche-und-ersetzen-Funktion nutzen, aber:
LibreOffice-Hilfe: „Die Suche nach Formaten findet nur direkte Zeichenattribute, sie findet keine Attribute, die als Teil einer Vorlage zugewiesen wurden.“ Warum ??
Bsp.: die harte Formatierung „fett“wird gefunden, die Zeichenformatierung „Stark betont“ (= fett) wird übersprungen.

Ich habe gerade mal ein bißchen rumgespielt.
Normaler Text: Liberation Serif, Standard, 12pt
Zeichenvorlage: Liberation Serif, Standard, 12,1pt (somit unterscheidet sich die Schrift kaum sichtbar)
Zeichenvorlage einem Namen zugeordnet.
Suchen&Ersetzen, Weitere Optionen öffnen, Reguläre Ausdrücke>Häkchen, Button “Keine Formatierung” - findet den Namen.

Die Referenz evtl. über ein Wörterverzeichnis (müsstest Du testen), ansonsten evtl. ein Macro (nicht mein Skill).

Du könntest hier die Extension AltSearch.oxt einsetzen, die kann das.

1 Like

Das konnte ich noch nicht nachvollziehen. Welche regulären Ausdrücke soll ich benutzen ? Den Namen der Zeichenvorlage als Suchbegriff ? Der steht doch gar nicht im Text drin. DerButton “keine Formatierung” ist bei mir ausgegraut, weil ich ja gar keine (harte) Formatierung zur Suche angegeben habe.

Das Stichwort “Reguläre Ausdrücke” Regular Expressions hat mich noch auf einen anderen Lösungsansatz gebracht:
HTML-ähnlicher Markup, der ausgeblendet formatiert wird, damit er beim Lesen nicht stört:

Vorbereitung
Zur vollständigen Anzeige müssen verborgene Zeichen angezeigt werden: Extras > Optionen > LibreOffice Writer > Formatierungshilfen > Formatierung anzeigen: > ausgeblendete Zeichen ankreuzen
Die Formatierungszeichen müssen am Bildschirm dargestellt sein (Schaltfläche klicken oder STRG + F10)

Textbausteine einfügen
hier z.B. zur Kennzeichnung von Orten:
Textbaustein einfügen (z.B. o + F3 für Ort): ___________ <Kat:Ort><\Kat:Ort>

Ort ergänzen ___________________________________<Kat:Ort>München<\Kat:Ort>

Marker als verborgen formatieren (hier nicht darstellbar): _<Kat:Ort>München <\Kat:Ort>

desgleichen mit anderen Markerkategorien ________<Kat:Person>Krause<\Kat:Person>

Die Marker können auch geschachtelt
werden: ________________<Kat:Ort><Kat:Person>Münchner<\Kat:Person><\Kat:Ort>

Kat: ist ein Festtext (wie Kategorie), der sonst nirgendwo im Text auftaucht. Er macht den Marker von anderem Text mit spitzen Klammern unterscheidbar.

Markup verbergen
Damit nicht alle Marker einzeln formatiert werden müssen, sollen sie mit Suchen und Ersetzen > Alle markieren markiert und dann zusammen als verborgen formatiert werden (Reguläre Ausdrücke ankreuzen).

Suchmuster: <\\?Kat:.+?>

Markup suchen
Jetzt kann mit einer Suche nach den gewünschten Kategorien gesucht werden (nächsten, vorherigen oder alle suchen).
Suchmuster: (<)(Kat:Ort>).+?\1\\\2
Das Suchmuster findet die Marke samt dem umschlossenen Text: <Kat:Ort>München <\Kat:Ort>
Wenn die Formatierungszeichen abgeschaltet sind (STRG + F10), ist im Text nur der gesuchte Begriff hervorgehoben: München
Das Eingabefeld im Suchen-Fenster ist eine Dropdownliste, die die letzten Suchen speichert. So kann man wiederholt auf mehrere Suchmuster zurückgreifen, ohne sie jedes Mal wieder eintippen zu müssen.

2 Likes

Wird aber beim schliessen der Datei gelöscht… Ich habe mir in ähnlichen Fällen eine Anleitungs-Datei nebenher gespeichert, aus der ich kompliziertere reguläre Ausdrücke kopieren kann.
.
Hier frage ich mich, ob eine Makro-Lösung sinnvoll wäre? Aktuell markierten Text als semantischen Marker suchen?

Das kann ich mir vorstellen.

Ich habe auch schon daran gedacht, das nachträgliche Kennzeichnen von Textpassagen per Makro zu automatisieren:
Grobe Schritte:

  • markierten Text ausschneiden, z.B. Köln
  • linken Teil des Markups an dieser Stelle einfügen und ausgeblendet formatieren: <Kat:Ort>
  • ausgeschnittenen Text einfügen (nicht ausgeblendet formatiert): <Kat:Ort>Köln
  • optional: dem Text die besondere Zeichenformatvorlage für diese Kategorie (z.B. blau) zuweisen
  • rechten Teil des Markups einfügen und ausgeblendet formatieren : <Kat:Ort>Köln<\Kat:Ort>

Ohne das Makro setze ich das Markup (z.B. <Kat:Beruf><\Kat:Beruf>) neben den betreffenden Text und verschiebe den Text dann in die Mitte.