ram@zedat.fu-berlin.de (Stefan Ram) wrote or quoted:
new_active_list.append( active )
this_line_quality = -adjustment**2
In August 2024, I posted an implementation of TeX's paragraph
algorithm for plain text in Python intended to be used to
generate ragged-right output. I'm still working on this code
and intend to publish the new version of the code once it's
finished. Here is a preliminary report:
This is an output of the algorithm:
Ich will das natürlich nicht überbewerten, aber eine gewisse Be-
schäftigung mit dem neuen/unbekannten Code vor Ausführung desselben
fände ich nicht schlecht, und sei es nur, die Zitatzeichen zu ent-
fernen und dabei mal einen Blick auf den Inhalt zu werfen ...
Now, I set "wrapper.adjdemerits = 1000":
Ich will das natürlich nicht überbewerten, aber eine gewisse Be-
schäftigung mit dem neuen/unbekannten Code vor Ausführung dessel-
ben fände ich nicht schlecht, und sei es nur, die Zitatzeichen zu
entfernen und dabei mal einen Blick auf den Inhalt zu werfen ...
Above, we see that the program now tries harder to make
the ragged right border less ragged. But we now have two
consecutive discretionary hyphens!
wrapper.adjdemerits = 1000
wrapper.doublehyphendemerits = 10000
Ich will das natürlich nicht überbewerten, aber eine gewisse Be-
schäftigung mit dem neuen/unbekannten Code vor Ausführung desselben
fände ich nicht schlecht, und sei es nur, die Zitatzeichen zu ent-
fernen und dabei mal einen Blick auf den Inhalt zu werfen ...
Now, we have a discretionary break in then penultimate line!
wrapper.adjdemerits = 1000
wrapper.doublehyphendemerits = 10000
wrapper.finalhyphendemerits = 100000
Ich will das natürlich nicht überbewerten, aber eine gewisse Be-
schäftigung mit dem neuen/unbekannten Code vor Ausführung dessel-
ben fände ich nicht schlecht, und sei es nur, die Zitatzeichen
zu entfernen und dabei mal einen Blick auf den Inhalt zu werfen ...
The price to be paid for the removal of the final hyphen is the
reintroduction of the double hyphen. I guess you just can't have
everything you wish for!
All of the above is actual program output, so these TeX parameters
(and some other) are already implemented, albeit with the numeric
values possibly not corresponding directly to TeX's values.
(So, "1000" in my code might not have the same meaning as in TeX.)
Now I plan to add some of my own ideas for parameters and then
to clean up the code and add some documentation . . .
One final example, wrapper.hyphenpenalty = 1000:
Ich will das natürlich nicht überbewerten, aber eine gewisse
Beschäftigung mit dem neuen/unbekannten Code vor Ausführung
desselben fände ich nicht schlecht, und sei es nur, die Zitatzeichen
zu entfernen und dabei mal einen Blick auf den Inhalt zu werfen ...