aboutsummaryrefslogtreecommitdiff
path: root/FASSUNGEN.txt
diff options
context:
space:
mode:
Diffstat (limited to 'FASSUNGEN.txt')
-rw-r--r--FASSUNGEN.txt66
1 files changed, 45 insertions, 21 deletions
diff --git a/FASSUNGEN.txt b/FASSUNGEN.txt
index d3195bb..9ea3b7e 100644
--- a/FASSUNGEN.txt
+++ b/FASSUNGEN.txt
@@ -32,7 +32,7 @@ UWG-Anhang) sowohl im PDF-Extraktor als auch im XML-Flattener vereinheitlicht.
Artikel 1
-Geometrische Spaltenbreiten-Klassifikation für markerlose Zeilenumbrüche
+Geometrische Klassifikation der Zeilenenden nach Ausrichtungs-Clustern
Der Textbereiniger (TextBereiniger.verbindeUmbrueche) zog eine Zeile, die ohne
Leerraum am Ende mit einem Buchstaben schließt und deren Folgezeile klein
@@ -41,37 +41,61 @@ Annahme, es handle sich um eine bei der PDF-Extraktion um den Bindestrich
gebrachte Silbentrennung. Diese Annahme trifft auf einen bewussten Wortgrenzen-
Umbruch (etwa das Stichwort einer hängend eingerückten Definition, wie er im
Anhang zum UWG vorkommt) nicht zu. Zur Behebung bestimmt der PDF-Vorverarbeiter
-(FontgroessenFilter) das geometrische End-X der Zeilenläufe und klassifiziert
-die Zeilenenden anhand des lokalen rechten Randes (90. Perzentil in einem
-Fenster von 20 Zeilen davor/danach) in weiche (am Rand endende), harte (deutlich
-davor endende) oder unklassifizierte Umbrüche. Der Textbereiniger zieht nur noch
-geometrisch weiche oder (in Ermangelung von Geometriedaten als Rückfalloption)
-zeichenzahlnäherungsweise am Rand liegende markerlose Umbrüche zusammen. Harte
-Umbrüche bleiben als gewollte Wortgrenzen-Umbrüche erhalten.
+(FontgroessenFilter) das geometrische End-X jeder Zeile (unter Flush auch am
+Seitenende, damit die letzte Zeile einer Seite nicht die erste der Folgeseite
+verfälscht) und klassifiziert die Zeilenenden anhand von Ausrichtungs-Clustern
+in einem Fenster von 20 Zeilen davor/danach: Ein Zeilenende ist weich, wenn
+mindestens fünf Fensterzeilen (auf vier Punkt genau) gleich ausgerichtet enden
+(Satzspiegelrand des Blocksatzes), und hart, wenn ein solcher Rand mindestens
+zehn Punkt oberhalb des Zeilenendes verläuft — dort wäre noch Platz gewesen,
+der Umbruch ist mithin gewollt. Cluster statt eines Fenster-Perzentils, weil am
+Spaltenwechsel des zweispaltigen alten Bundesgesetzblatts beide Spaltenränder
+in ein Fenster fallen; maßgeblich ist der Rand, an dem die Zeile selbst
+ausgerichtet ist. Der Textbereiniger zieht markerlose Umbrüche nur noch bei
+weichen Zeilenenden zusammen (in Ermangelung von Geometriedaten näherungsweise
+nach Zeichenzahl wie bisher), nie jedoch vor einer Folgezeile, die mit einem
+Aufzählungsmarker („d)“, „3.“) beginnt.
Artikel 2
+Zusammenzug weicher und Erhaltung harter Umbrüche
+
+Nach den Einzelzusammenzügen fügt der Textbereiniger geometrisch weiche
+Zeilenenden mit einem Leerzeichen zu Fließtext zusammen (Reflow); harte und
+unklassifizierte Umbrüche bleiben erhalten. Nach der Bereinigung ist damit
+jeder verbleibende Zeilenumbruch nach bester Einschätzung beabsichtigt, weshalb
+die Zitat-Normalisierung des Befehlsanwenders (normalisiereZitatText) Umbrüche
+nicht mehr zu Leerzeichen faltet. Ausgenommen vom Reflow sind Strukturzeilen
+(„Artikel 2“, „§ 19“, allein stehende Gliederungs-Bezeichnungen): Gleich
+breite, zentrierte Überschriften in Serie bilden ein Schein-Cluster, der Parser
+benötigt sie jedoch allein auf der Zeile.
+
+
+Artikel 3
Strukturierung und Normalisierung hängend eingerückter Definitionslisten
Damit die nunmehr erhaltenen hängenden Zeilenenden in Definitionslisten (wie
-beim UWG-Anhang) korrekt strukturiert werden:
-1. Der Befehlsanwender (BefehlAnwender.normalisiereZitatText) unterwirft nunmehr
- auch die stellenlose Neufassung (z.B. eines Satzes) der Zitat-Normalisierung
- und rückt fortlaufende Zeilen innerhalb eines Aufzählungspunktes tiefer
- (vier Leerzeichen) ein als den Aufzählungspunkt selbst (zwei Leerzeichen).
-2. Der XML-Flattener (ContentFlattener) trennt mehrere <LA>-Geschwister innerhalb
- eines <DD>-Elements durch Zeilenumbrüche und rückt sie tiefer ein.
-Beide Wege erzeugen dieselbe kanonische Zeilenform, welche für die korrekte
-Erkennung von Kindzeilen durch die Stellenauflösung erforderlich ist.
+beim UWG-Anhang oder in § 2 IfSG) korrekt strukturiert werden:
+1. Der XML-Flattener (ContentFlattener) trennt mehrere <LA>-Geschwister innerhalb
+ eines <DD>-Elements durch Zeilenumbrüche und rückt die Folgezeilen tiefer ein
+ als die Aufzählungszeile (Kindzeilen der Einheit für die Stellenauflösung).
+2. Der Befehlsanwender rückt beim Einsetzen von Zitattext (rueckeZitatEin)
+ Fortsetzungszeilen zwei Zeichen tiefer ein als die Aufzählungszeile.
+Beide Wege erzeugen dieselbe kanonische Zeilenform („ 2a. Stichwort“ nebst
+„ Definitionstext“), welche für die korrekte Erkennung von Kindzeilen durch
+die Stellenauflösung (StellenAufloeser.zeilenBlock) erforderlich ist.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle (einhun-
-dertvierundsiebzig an der Zahl) sowie durch die vollständige Erstellung (mvnw
-verify) bestätigt worden. Anlass war ein anhand der UWG-Novelle 2026 gemeldeter
-Wiedergabefehler; die Behebung wurde anhand der Beispieldaten (UWG-Anhang,
-Nummern 2a sowie 4a bis 4c) verifiziert.
+dertneunundsiebzig an der Zahl), durch die vollständige Erstellung (mvnw verify)
+sowie durch einen Vorher-nachher-Vergleich sämtlicher einundzwanzig Beispiel-
+kombinationen (UWG, AGG, ProdHaftG, GEG, IfSG; Anwendungs- und Prüfzahlen
+durchgehend unverändert) bestätigt worden. Anlass war ein anhand der UWG-Novelle
+2026 gemeldeter Wiedergabefehler (verklebte Kurzüberschriften im Anhang, auch in
+der Grundvorschrift); die Behebung wurde anhand der Beispieldaten (UWG-Anhang,
+Nummern 2a, 4c sowie 22; § 2 IfSG) verifiziert.
════════════════════════════════════════════════════════════════════════════════