Discussion:
Dynamische Trennregeln
(zu alt für eine Antwort)
Stefan Ram
2024-06-01 11:12:04 UTC
Permalink
Binnen der letzten 24 Stunden habe ich ein Python-Programm
geschrieben, das für den Umbruch von Absätzen mit dickten-
gleichen Schriftzeichen Trennregeln beachtet und mit dynamischer
Programmierung global optimiert. Das war nicht ganz einfache.
(Ich hatte hier vielleicht schon einmal etwas Ähnliches gepostet,
aber es war damals nicht mit dynamischer Programmierung.)

Das Programm ist noch nicht ganz reif für den Einsatz, aber
hat einen ersten Test bestanden.

Hier eine Beispieleingabe:

Ich ha|be das ge|ba[ck]ene Profi-Be[tt]uch be|reits ge|se|hen.

. Das Programm findet die potentiellen Trennstellen also nicht
selber, sondern erwartet diese in der Eingabe und findet dann
den in einem gewissen Sinne "optimalen" Absatzumbruch.

Hier sind die Ausgaben für Absatzbreiten von 10 bis 20 Zeichen.

Ich habe
das gebak-
kene
Profi-
Bettuch
bereits
gesehen.

Ich habe
das gebak-
kene Profi-
Bettuch be-
reits ge-
sehen.

Ich habe
das gebak-
kene Profi-
Bettuch be-
reits ge-
sehen.

Ich ha-
be das gebak-
kene Profi-
Bettuch be-
reits ge-
sehen.

Hier sieht man, daß bei globaler Optimierung, eine /Vergrößerung/
der Breite paradoxerweise dazu führen kann, daß die erste Zeile
/kürzer/ wird, wenn dies entsprechend stärkere Verbesserungen in
folgenden Zeilen ermöglicht, die so groß sind, daß sie den Mangel
der kurzen ersten Zeile ausgleichen. Das Ergebnis sieht aber nicht
sehr harmonisch aus, weil das Programm derzeit noch nicht das
Ziel berücksichtigt, auch einen möglichst glatten rechten Rand zu
erzeugen, sonder nur alle Zeilen möglichst stark zu füllen.

Das Ausprobieren aller Möglichkeiten wäre (gerade, wenn man noch
Worttrennungen mit in Betracht zieht) sehr zeitaufwendig, aber
die "dynamische Programmierung" ist ein Trick, mit dem man den
Zeitaufwand dafür stark reduzieren kann.

Der obige Absatz wurde übrigens auch schon mit globaler Optimierung
umbrochen, durch ein früheres Python-Skript, das ich schrieb und
von meinem Newsreader aus für den Umbruch aufrufen kann. Aber dieses
ältere Programm berücksichtigte eben noch keine Trennmöglichkeiten.
Es kann später vielleicht durch das neuere ersetzt werden.

Ich habe das
gebackene
Profi-Bettuch
bereits ge-
sehen.

Ich habe das
gebackene
Profi-Bettuch
bereits ge-
sehen.

Ich habe das ge-
backene Profi-
Bettuch bereits
gesehen.

Ich habe das ge-
backene Profi-
Bettuch bereits
gesehen.

Ich habe das ge-
backene Profi-
Bettuch bereits
gesehen.

Ich habe das gebak-
kene Profi-Bettuch
bereits gesehen.

Ich habe das gebak-
kene Profi-Bettuch
bereits gesehen.

Man hat es jetzt hier nicht gesehen, aber "Bettuch" würde
nötigenfalls als "Bett-" und "tuch" getrennt werden.
Gunther Kriegeskotte
2024-06-02 21:07:36 UTC
Permalink
Post by Stefan Ram
Binnen der letzten 24 Stunden habe ich ein Python-Programm
geschrieben, das für den Umbruch von Absätzen mit dickten- gleichen
Schriftzeichen Trennregeln beachtet und mit dynamischer
Programmierung global optimiert.
Boah ey!
Post by Stefan Ram
Das war nicht ganz einfache.
Umso mehr wissen wir deine Mühe zu schätzen!
Post by Stefan Ram
Das Programm ist noch nicht ganz reif für den Einsatz, aber hat
einen ersten Test bestanden.
Und trotzdem deine "Vorankündigung" hier in der Gruppe! Vielen, vielen
Dank dafür!
Post by Stefan Ram
Hier eine Beispieleingabe:...
Okay.
Und den Quellcode mit den (gefühlten) zehntausend Zeilen wirst du
alsbald hier veröffentlichen? So wie vor ein paar Wochen/Monaten
anlässlich deines letzten Programmentwurfs? - Wir warten gespannt drauf...
----------

Ähm..., dein Friseur hat gerade wieder Urlaub?

Lesen Sie weiter auf narkive:
Loading...