[Trennmuster] Alternative Trennmusterverwendung mit LuaTeX
Guenter Milde
milde at users.sf.net
Fr Okt 2 09:55:25 CEST 2020
Lieber Keno, Stephan, liebe Trennfreunde,
On 30.09.20, Keno Wehr wrote:
> Am 26.09.20 um 16:48 schrieb Stephan Hennig:
...
> > > Ich vermute, dass drei verschiedene Güteebenen für Trennstellen in der
> > > Praxis für einen sehr ordentlichen Umbruch ausreichen
> > Dazu braucht man ein aussagekräftiges Maß für die Ordentlichkeit eines
> > Umbruchs.
Was ja auch immer an den Nebenbedingungen (Zeilenlänge, -abstand,
Schriftart, Absatzlänge, Absatztrennung, Block- vs. Flattersatz, ...) hängt.
> Hier gilt: Das Auge entscheidet. Der Algorithmus hat sich nach der Ästhetik
> zu richten, nicht umgekehrt.
Statt der Ästhetik würde ich für Brottext die Lesefreundlichkeit als Maß
bevorzugen. Zu viel Interpretationsspielraum gibt es bei beiden :(
> > > Zu 2:
> > > Die Spezialtrennungen sind im padrinoma-Projekt bereits implementiert.
> > > Dabei wird auf den bereits genannten LuaTeX-Callback „hyphenate“
> > > zurückgegriffen, in den nach einer standardmäßigen Worttrennung die
> > > Spezialtrennungen eingefügt werden.
> > > Wenn man das mit der Nr. 1 zusammensieht wird klar, dass beide Projekte
> > > gemeinsam implementiert werden müssen, da sie erstens den gleichen
> > > Callback benötigen (bei unabhängiger Implementierung würde vermutlich
> > > der eine Algorithmus den anderen überschreiben)
> > LuaTeX stellt dafür keine Verwaltungsmechanismen zu Verfügung (Stand
> > damals), aber das Paket luatexbase (o.ä.).
> luatexbase wird offenbar nicht mehr gepflegt: ...
> Stattdessen gibt es jetzt ltluatex, das den Großteil der Funktionalität (und
> auch den Lua-Namensbereich „luatexbase“) übernimmt und Bestandteil des
> LuaLaTeX-Kernels ist.
> Es gibt in LuaTeX callbacks, mit denen zusätzliche Funktionen eingefügt
> werden können (z. B. pre_linebreak_filter) und andere, die eine bestimmte
> TeX-Funktion ersetzen (z. B. hyphenate). Für den zweiten callback-Typ kann
> nur *eine* Funktion hinterlegt werden.
> Falls also zwei Pakete den hyphenate-callback beanspruchten, könnte auch ein
> Verwaltungsmechanismus nur eine Fehlermeldung ausgeben. Gleichzeitig so und
> so trennen, geht nicht.
Dann ist es Zeit für einen Master callback: ein "Ersatz-callback" (z.B.
hyphenate) kann weitere callbacks bereithalten.
Statt eines komplexen Gesamtpakets schwebt mir da eher ein plug-in
Mechanismus vor.
...
> > Da ein Mustersatz immer nur eine Ja/Nein-Aussage bezüglich einer
> > Position innerhalb eines Wortes geben kann, läuft das dann auf einen
> > Strauß von Mustern hinaus. Aber das lässt sich gut durchschauen,
> > dokumentieren und automatisieren.
> Ja.
> > > Mein Hauptanliegen zu dieser Thematik wäre ein Skript im
> > > Wortlistenrepositorium, das die Spezialtrennmuster erzeugen kann; soweit
> > > ich sehe, gibt es das bisher nicht.
> Ich vermute, dass Günter das auch über „sprachauszug.py“ regeln kann.
Dazu bräuchte ich eine Aussage, was da gewünscht ist, am besten in Form von
Eingabe-Ausgabe Listen für die internen Tests in stilfilter.py. wie z.B.
hi-n<auf -> hin<auf
wo-r=um -> wor=um
Chry-s<an-the-me -> Chrys<an-the-me
Hek-t<ar -> Hekt<ar
Sollen {ck/k-k} und die Dreikonsonantenregel in verschiedene Mustersets
oder in einen?
> > > Zu 4:
> > > Für die Rund-s-Lang-s-Ersetzung können die vorhandenen Skripte bereits
> > > Pseudotrennmuster erstellen. Ohne diese getestet zu haben, ist mein
> > > Eindruck, dass die Skripte weitgehend ausgereift sind.
...
> > > Außerdem stellt sich die Frage, ob für Texte mit Lang-s eigene
> > > Trennmuster erforderlich sind oder TeX dazu überredet werden kann, bei
> > > der Trennung ſ wie s zu behandeln.
> > Das müsste LuaTeX mit lccodes erklärt werden können. Ist aber kein
> > Gebiet, auf welchem ich mich gut auskenne.
Die uc/lc-Beziehung für S ist bei *Frakturschriften* wie für das
griechische Sigma:
ſ und Schluss-s werden beide zu S
σ und Schluss-ς werden beide zu Σ
Die Wandlung zu Kleinbuchstaben ist nicht eindeutig.
In *Antiqua* steht s für ſ und Schluss-s.
Falls TeX intern mit Großbuchstaben rechnet, kein Problem.
Ansonsten müssten
a) Wörter mit ſ als Alternativschreibungen in den de-* Mustersatz
b) "de-*-Latf" einen eigenem Mustersatz bekommen
c) der "hyphen"-Callback Wörter vor dem Abgleich mit dem de-* Mustersatz
normalisieren (Gaſthaus -> Gasthaus) und die gefundenen Trennmöglichkeiten
in das Originalwort einfügen (Gaſt-haus).
Günter
Mehr Informationen über die Mailingliste Trennmuster