blob: d7853713e35b9ae7ca7b90a0a2d7ac5dd52950c3 [file] [log] [blame]
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +01001= ÄndGgner -- Programmbibliothek zur Konsolidierung von Änderungsgesetzen des Bundes und der Länder
2Matthias Andreas Benkard
3// Meta
4:experimental:
5:data-uri:
6:sectnums:
7:toc:
8:stem:
9:toclevels: 2
10:description: ÄndGgner Manual
11:keywords: mulk
12// Settings
13:icons: font
14:source-highlighter: pygments
15
16
17== Resources
18
19|===
20|Resource |Links
21
22|Public Artifact
23|https://bintray.com/mulk/maven/aendggner[Bintray]
24
25|Bug Tracker
26|MantisBT
27|===
28
29
30[[building]]
31== Building a JAR
32
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +010033To build an executable JAR at `target/aendggner-${REVISION}.jar`:
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010034
35[source,shell script]
36----
37./mvnw package
38----
39
40`${REVISION}` defaults to `0.1.0-SNAPSHOT` unless you override it by
41passing the `-Drevision` flag to `mvnw`.
42
43
44== Running the Command Line Application
45
46To run the command line application after <<building,building>> it:
47
48[source,shell script]
49----
50./mvnw exec:java
51----
52
53
Matthias Andreas Benkard58e19982026-07-13 07:09:19 +020054[[usage]]
55== Usage
56
57ÄndGgner erzeugt aus einem Stammgesetz und einem Änderungsgesetz eine
58zweispaltige HTML-Synopse (alte Fassung links, neue rechts, Änderungen
59wortweise hervorgehoben).
60
61Eingaben:
62
Matthias Andreas Benkard65eff082026-07-18 12:24:32 +020063* Stammgesetz (Bundesrecht): XML im gii-norm-Format von
Matthias Andreas Benkard58e19982026-07-13 07:09:19 +020064 https://www.gesetze-im-internet.de/[gesetze-im-internet.de]
Matthias Andreas Benkard65eff082026-07-18 12:24:32 +020065* Stammgesetz (Landesrecht Bayern): konsolidierte Fassung von
66 https://www.gesetze-bayern.de/[gesetze-bayern.de] als PDF oder als
67 kanonischer Klartext im Format der `--extract-only`-Ausgabe; amtliche
68 Satznummern und Fußnotenmarker stehen als Unicode-Superskripte im
69 Text („¹Die freilebende Tierwelt …“, Enteignung⁶)“)
70* Änderungsgesetz: BGBl-, GVBl- oder Drucksachen-PDF (Bundestag,
71 Bundesrat, Bayerischer Landtag) oder Klartext
Matthias Andreas Benkard58e19982026-07-13 07:09:19 +020072
73[source,shell script]
74----
75java -jar target/aendggner-0.1.0-SNAPSHOT.jar \
76 stammgesetz.xml aenderungsgesetz.pdf -o synopse.html
77----
78
79Wichtige Optionen:
80
81`-o, --output <file>`::
82 Ausgabedatei (Default `synopse.html`; `-` = Standardausgabe).
83`--vollstaendig`::
84 Auch unveränderte Normen in die Synopse aufnehmen.
85`--artikel <n>`::
86 Nur diesen Artikel des Änderungsgesetzes anwenden (Default: alle
87 Artikel, deren Einleitung das Stammgesetz nennt).
88`--extract-only`::
89 Nur den bereinigten Lineartext des Änderungsgesetzes ausgeben. Nützlich,
90 wenn die PDF-Extraktion fehlerhaft ist: Text prüfen, von Hand
91 korrigieren und als Klartextdatei wieder einspeisen.
92
93Erkannt werden die gebräuchlichsten Änderungsbefehle des Handbuchs der
94Rechtsförmlichkeit (Ersetzen, Neufassung, Einfügen, Anfügen, Aufheben,
Matthias Andreas Benkardebd5a7b2026-07-15 20:54:27 +020095Streichen, Umnummerierung) einschließlich zahlreicher Sonderformen:
96Bereichs- und Koordinationsziele („Die Absätze 8 und 9 werden durch die
97folgenden Absätze 8 bis 10 ersetzt“), strukturelle Streichungen ganzer
98Einheiten („§ 9 wird gestrichen“), §- und Gliederungs-Umnummerierungen
99(„§ 9a wird zu § 9“, Der bisherige Abschnitt 2 wird zu Abschnitt 3“),
Matthias Andreas Benkardb7e9f0f2026-07-16 21:12:08 +0200100das Einfügen/Ersetzen ganzer §-Blöcke, Chapeau-Lokatoren („Im
101Satzteil vor Nummer 1 …“), Änderungen an Anhängen und Anlagen („Der
102Anhang wird wie folgt geändert: Nach Nummer 2 wird die folgende
103Nummer 2a eingefügt“), Angabe-Befehle auf die Inhaltsübersicht (gefasst,
104ersetzt, eingefügt, gestrichen sie werden auf die
105Inhaltsübersichts-Norm angewandt), das Einfügen und Ersetzen von
106Gliederungsberschriften („Nach § 33 werden die folgenden Überschriften
107zu Teil 3 eingefügt“), Voranstellungen, Mehrfach-Ersetzungs- und
108-Einfügepaare, Verbünde aus Umnummerierung und Folgeänderung („§ 50 wird
109zu § 38 und wird wie folgt geändert“) sowie die Neufassung der
110Gesetzesüberschrift. Die PDF-Aufbereitung toleriert dabei
111Drucksachen-Artefakte (Seitenköpfe und -füße, Vorabfassungs-Wasserzeichen,
112vertauschte oder gerade Anführungszeichen, verklebte Wortgrenzen) und
113bestimmt die Brotschrift seitenweise, sodass auch Ministeriumsentwürfe
114mit gemischten Layouts vollständig extrahiert werden. Auf den
115Beispieldaten werden damit alle Befehle der BGBl-Fassungen und der
116aktuellen Entwürfe angewandt (UWG/AGG/ProdHaftG: 0 manuell); was
117unsicher bleibt etwa Befehle gegen eine ältere Gesetzesfassung, deren
118Zieltext nicht mehr existiert landet mit Begründung im Abschnitt
119*Manuell prüfen* der Synopse und wird niemals stillschweigend verworfen.
Matthias Andreas Benkard58e19982026-07-13 07:09:19 +0200120
Matthias Andreas Benkard65eff082026-07-18 12:24:32 +0200121Für das bayerische Landesrecht versteht ÄndGgner die dortigen
122Konventionen: Stammgesetze gliedern sich in Artikel („Art. 6 Abs. 2
123Satz 1 Nr. 2“, durchgängig abgekürzt zitiert), Änderungsgesetze dagegen
124in Paragraphen auch mehrere Gesetze in einem GVBl-Heft, aus denen die
125auf das Stammgesetz zielenden §§ (einschließlich Weitere Änderung“)
126anhand des Einleitungssatzes ausgewählt werden. Amtliche Satznummern
127bleiben als Superskripte erhalten und dienen als exakte Satzgrenzen;
128zusätzlich erkannt werden die bayerischen Befehlsformen („Fußnote 1
129wird aufgehoben“, In Satz 1 wird die Satznummerierung 1 gestrichen“,
130Dem Wortlaut werden die folgenden Abs. 1 bis 4 vorangestellt“, Der
131bisherige Wortlaut wird Abs. 5“, Halbsatz-Ziele, Klauselketten mit
132gemeinsamem Schlussverb) sowie das Fortführungszeichen des GVBl (jedes
133neugefasste Aufzählungsglied öffnet erneut mit „). Metanderungen an
134Drucksachen nderungsanträge des Landtags) sind bewusst noch nicht
135abgedeckt.
136
Matthias Andreas Benkard58e19982026-07-13 07:09:19 +0200137
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100138== Running the Tests
139
140To build and run the tests:
141
142[source,shell script]
143----
144./mvnw verify
145----