blob: 1ba43438b924bc86b684064a7448037d6555fa57 [file] [log] [blame]
= ÄndGgner -- Programmbibliothek zur Konsolidierung von Änderungsgesetzen des Bundes und der Länder
Matthias Andreas Benkard
// Meta
:experimental:
:data-uri:
:sectnums:
:toc:
:stem:
:toclevels: 2
:description: ÄndGgner Manual
:keywords: mulk
// Settings
:icons: font
:source-highlighter: pygments
== Resources
|===
|Resource |Links
|Public Artifact
|https://bintray.com/mulk/maven/aendggner[Bintray]
|Bug Tracker
|MantisBT
|===
[[building]]
== Building a JAR
To build an executable JAR at `target/aendggner-${REVISION}.jar`:
[source,shell script]
----
./mvnw package
----
`${REVISION}` defaults to `0.1.0-SNAPSHOT` unless you override it by
passing the `-Drevision` flag to `mvnw`.
== Running the Command Line Application
To run the command line application after <<building,building>> it:
[source,shell script]
----
./mvnw exec:java
----
[[usage]]
== Usage
ÄndGgner erzeugt aus einem Stammgesetz und einem Änderungsgesetz eine
zweispaltige HTML-Synopse (alte Fassung links, neue rechts, Änderungen
wortweise hervorgehoben).
Eingaben:
* Stammgesetz: XML im gii-norm-Format von
https://www.gesetze-im-internet.de/[gesetze-im-internet.de]
* Änderungsgesetz: BGBl-PDF oder Klartext
[source,shell script]
----
java -jar target/aendggner-0.1.0-SNAPSHOT.jar \
stammgesetz.xml aenderungsgesetz.pdf -o synopse.html
----
Wichtige Optionen:
`-o, --output <file>`::
Ausgabedatei (Default `synopse.html`; `-` = Standardausgabe).
`--vollstaendig`::
Auch unveränderte Normen in die Synopse aufnehmen.
`--artikel <n>`::
Nur diesen Artikel des Änderungsgesetzes anwenden (Default: alle
Artikel, deren Einleitung das Stammgesetz nennt).
`--extract-only`::
Nur den bereinigten Lineartext des Änderungsgesetzes ausgeben. Nützlich,
wenn die PDF-Extraktion fehlerhaft ist: Text prüfen, von Hand
korrigieren und als Klartextdatei wieder einspeisen.
Erkannt werden die gebräuchlichsten Änderungsbefehle des Handbuchs der
Rechtsförmlichkeit (Ersetzen, Neufassung, Einfügen, Anfügen, Aufheben,
Streichen, Umnummerierung) einschließlich zahlreicher Sonderformen:
Bereichs- und Koordinationsziele („Die Absätze 8 und 9 werden durch die
folgenden Absätze 8 bis 10 ersetzt“), strukturelle Streichungen ganzer
Einheiten („§ 9 wird gestrichen“), §- und Gliederungs-Umnummerierungen
(„§ 9a wird zu § 9“, Der bisherige Abschnitt 2 wird zu Abschnitt 3“),
das Einfügen/Ersetzen ganzer §-Blöcke, Chapeau-Lokatoren („Im
Satzteil vor Nummer 1 …“), Änderungen an Anhängen und Anlagen („Der
Anhang wird wie folgt geändert: Nach Nummer 2 wird die folgende
Nummer 2a eingefügt“), Angabe-Befehle auf die Inhaltsübersicht (gefasst,
ersetzt, eingefügt, gestrichen sie werden auf die
Inhaltsübersichts-Norm angewandt), das Einfügen und Ersetzen von
Gliederungsberschriften („Nach § 33 werden die folgenden Überschriften
zu Teil 3 eingefügt“), Voranstellungen, Mehrfach-Ersetzungs- und
-Einfügepaare, Verbünde aus Umnummerierung und Folgeänderung („§ 50 wird
zu § 38 und wird wie folgt geändert“) sowie die Neufassung der
Gesetzesüberschrift. Die PDF-Aufbereitung toleriert dabei
Drucksachen-Artefakte (Seitenköpfe und -füße, Vorabfassungs-Wasserzeichen,
vertauschte oder gerade Anführungszeichen, verklebte Wortgrenzen) und
bestimmt die Brotschrift seitenweise, sodass auch Ministeriumsentwürfe
mit gemischten Layouts vollständig extrahiert werden. Auf den
Beispieldaten werden damit alle Befehle der BGBl-Fassungen und der
aktuellen Entwürfe angewandt (UWG/AGG/ProdHaftG: 0 manuell); was
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.
== Running the Tests
To build and run the tests:
[source,shell script]
----
./mvnw verify
----