aboutsummaryrefslogtreecommitdiff
path: root/FASSUNGEN.txt
Commit message (Collapse)AuthorAgeFilesLines
* Classify line breaks geometrically via PDFBox coordinates and support list ↵Matthias Andreas Benkard2026-07-171-27/+25
| | | | | | | | | | | | | | | | | | | | | | | indentation Replaces the heuristic character-count full-width check with real geometric layout analysis. FontgroessenFilter collects the right-edge X coordinate of the text runs on each page and classifies line endings against the local 90th percentile of page margins (using a 20-line sliding window) into soft, hard, or unclassified breaks. TextBereiniger uses this classification to reflow only soft line wraps (WEICH) and keep deliberate ones (HART or UNBEKANNT). Also aligns quote normalization and GII-XML flattening to indent continuation lines in lists (e.g., hanging definitions in UWG Anhang): - BefehlAnwender.normalisiereZitatText applies to single-unit Neufassung and indents continuation lines deeper (4 spaces) than list items (2 spaces). - ContentFlattener generates the same structure for sibling <LA> elements inside <DD>. This ensures the paragraph parser correctly groups these lines as child lines. Change-Id: I1fd7039d4933a273cc2dc55f958d34b439e2302c
* Fix markerless line-break join gluing whole words without a spaceMatthias Andreas Benkard2026-07-171-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | TextBereiniger.verbindeUmbrueche assumed any letter-ending, no-trailing-space line followed by a lowercase continuation was a hyphen-less mid-word split (PDF extraction artifact) and joined it with zero separator. That assumption breaks for deliberate word-boundary breaks, e.g. the short-label/hanging- indent definition format in the UWG Anhang ("...Nachhaltigkeitssiegels" + "das Anbringen..."), producing glued words in the rendered synopsis. Gate the markerless join on the candidate line reaching a locally-typical "full column width" (90th percentile in a ±20-line window), since automatic wraps always land near the column edge while deliberate breaks don't. The window is local rather than document-wide because some source PDFs mix column widths within one document (narrower Regelungstext vs. wider Begründung), which a global statistic would otherwise penalize. Also route the single-unit Neufassung fallback through the existing normalisiereZitatText normalization, matching its sibling code paths, so that internal line breaks now more often preserved by the fix above don't leak into the HTML output as spurious line breaks instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Change-Id: I0a79f22f9286cd4a90eea32bad9b54cb4a082cf4
* Support Anhang/Anlage targets, Inhaltsübersicht Angabe commands, and ↵Matthias Andreas Benkard2026-07-161-0/+90
| | | | | | | | | | | | | | Gliederungs-Überschriften insertion/replacement Fourth enablement wave: Anhänge/Anlagen resolve as ordinary norm targets with nested Nummer/Buchstabe block resolution, InhaltsuebersichtAnwender applies Angabe commands automatically, GliederungsUeberschriften handles inserting and replacing structural headings, the law's own heading can be recast, and FontgroessenFilter now determines body text per page instead of document-wide. Sample data (UWG/AGG/ProdHaftG) now applies with 0 manual cases. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Change-Id: I1a76750afbecfa1aae734bcdabc91470a28420ca
* Support range structure replacement, struct renumbering, and multi-paragraph ↵Matthias Andreas Benkard2026-07-151-0/+81
| | | | | | | | | | | | blocks Adds bisStelle to StrukturErsetzung for coordinated target ranges, recognizes deletion/renumbering of whole structural units (paragraphs and Gliederung entries), and handles insertion/replacement of multi-paragraph blocks split on §-headings. Updates FASSUNGEN.txt accordingly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Change-Id: I637cc5effbe32c094e62c070b63c470149a77c85
* Add FASSUNGEN.txt version registerMatthias Andreas Benkard2026-07-131-0/+134
Record the changes of the "Fassung vom 13.7.2026" in bureaucratic legal German, mirroring the amendment-act style the tool itself processes. Convention: add a dated section (newest first) for every day the code changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: Ib39e4f78405b33b439be006325e2c310b72b1511