From 65eff08b32a0f00ff0f5e4bda3fe5793f631ed64 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sat, 18 Jul 2026 12:24:32 +0200 Subject: =?UTF-8?q?Support=20Bavarian=20state=20law=20(BayJG)=20with=20Art?= =?UTF-8?q?./=C2=A7=20inversion=20and=20superscripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extend ÄndGgner from federal-only to Bavarian state law. Bavarian base laws are structured in Artikel while their amending acts are structured in Paragraphen (inverted from the Bund); official sentence numbers and footnote markers are carried as Unicode superscripts (¹²³, ⁶)). - Generalise Stelle.Paragraph to carry a sigil ("§" or "Art.") and route it through recogniser, applier and resolver (bit-identical Bund output). - Superscript pipeline: geometric detection in FontgroessenFilter (SuperskriptModus BEHALTEN), Superskript util, exact sentence splitting in SatzTeiler, label-based sentence resolution. - BayRechtLoader/BayRechtTextParser for gesetze-bayern.de PDF/plaintext. - §-structured amending acts, GVBl/Landtag column titles, non-breaking spaces, the GVBl continuation quote; Bavarian command forms (footnote aufhebung, Satznummerierung streichung, Wortlaut forms, Halbsatz, gapping chains). Acceptance (EndToEndTest.bayJgGvblAcceptance): the pre-2026 BayJG fassung (BayJG-alt.txt, reconstructed from Wayback single-article snapshots) with GVBl 6/2026 §§ 1-2 applied — 154 commands, 0 unknown, 149 applied automatically, 5 pinned residuals (follow-up edits inside two multi-step renumbering sequences in Art. 29a and Art. 56). Application-side fixes surfaced by the acceptance run (all Bund-safe): sentence-start superscript before §; sentence boundaries = {0} ∪ {each number ≥ 2}; gapping scope inheritance for bare word operations; footnote definition lines hidden from word operations; absatz aufhebung marks "(weggefallen)" keeping its number, and absatz renumbering overwrites an empty placeholder (weggefallen/gegenstandslos) target. 211 tests green (mvnw verify); federal reference numbers unchanged. Co-Authored-By: Claude Opus 4.8 Change-Id: Iebae4c17ca90755c5fd36251362042f3d5796fd0 --- README.adoc | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'README.adoc') diff --git a/README.adoc b/README.adoc index 1ba4343..d785371 100644 --- a/README.adoc +++ b/README.adoc @@ -60,9 +60,15 @@ wortweise hervorgehoben). Eingaben: -* Stammgesetz: XML im gii-norm-Format von +* Stammgesetz (Bundesrecht): XML im gii-norm-Format von https://www.gesetze-im-internet.de/[gesetze-im-internet.de] -* Änderungsgesetz: BGBl-PDF oder Klartext +* Stammgesetz (Landesrecht Bayern): konsolidierte Fassung von + https://www.gesetze-bayern.de/[gesetze-bayern.de] als PDF oder als + kanonischer Klartext im Format der `--extract-only`-Ausgabe; amtliche + Satznummern und Fußnotenmarker stehen als Unicode-Superskripte im + Text („¹Die freilebende Tierwelt …“, „Enteignung⁶)“) +* Änderungsgesetz: BGBl-, GVBl- oder Drucksachen-PDF (Bundestag, + Bundesrat, Bayerischer Landtag) oder Klartext [source,shell script] ---- @@ -112,6 +118,22 @@ unsicher bleibt — etwa Befehle gegen eine ältere Gesetzesfassung, deren Zieltext nicht mehr existiert — landet mit Begründung im Abschnitt *Manuell prüfen* der Synopse und wird niemals stillschweigend verworfen. +Für das bayerische Landesrecht versteht ÄndGgner die dortigen +Konventionen: Stammgesetze gliedern sich in Artikel („Art. 6 Abs. 2 +Satz 1 Nr. 2“, durchgängig abgekürzt zitiert), Änderungsgesetze dagegen +in Paragraphen — auch mehrere Gesetze in einem GVBl-Heft, aus denen die +auf das Stammgesetz zielenden §§ (einschließlich „Weitere Änderung“) +anhand des Einleitungssatzes ausgewählt werden. Amtliche Satznummern +bleiben als Superskripte erhalten und dienen als exakte Satzgrenzen; +zusätzlich erkannt werden die bayerischen Befehlsformen („Fußnote 1 +wird aufgehoben“, „In Satz 1 wird die Satznummerierung „1“ gestrichen“, +„Dem Wortlaut werden die folgenden Abs. 1 bis 4 vorangestellt“, „Der +bisherige Wortlaut wird Abs. 5“, Halbsatz-Ziele, Klauselketten mit +gemeinsamem Schlussverb) sowie das Fortführungszeichen des GVBl (jedes +neugefasste Aufzählungsglied öffnet erneut mit „). Meta-Änderungen an +Drucksachen (Änderungsanträge des Landtags) sind bewusst noch nicht +abgedeckt. + == Running the Tests -- cgit v1.2.1