[Trennmuster] Spezialmusteranwendung
Keno Wehr
wehr at abgol.de
So Jun 19 21:39:36 CEST 2022
Liebe Trennmuster-Interessierte,
vielen Dank für die Rückmeldungen zum autotype-Paket.
Ein Teil der Verbesserungsvorschläge ist in der neuen Version 0.3
berücksichtigt worden:
https://codeberg.org/wehr/autotype
Anderes habe ich zunächst zurückgestellt, da ich mich bei dieser Version
vor allem auf eine Innovation konzentriert habe, nämlich einen
Trennalgorithmus mit gewichteten Trennstellen (Sprachoption
hyphenation=weighted). Hierfür werden drei Arten von Trennstellen
unterschieden: Primär-, Sekundär- und Tertiärtrennstellen und mit
unterschiedlichen Penalties (30, 60, 90) versehen. Die Werte sind
willkürlich gewählt und aus keiner Versuchsreihe entstanden. Die Muster
für Primär- und Sekundärtrennstellen werden mit autotype ausgeliefert,
die Tertiärtrennstellen sind durch die gewöhnlichen Muster aus hyph-utf8
abgedeckt.
Für Bindestrichwörter habe ich mich für folgendes Vorgehen entschieden:
An den Bindestrichen liegen Primärtrennstellen. Anders als beim
Standardalgorithmus kann aber auch innerhalb der Wortteile getrennt
werden; hier sind alle Trennstellen tertiär. Sekundärtrennstellen gibt
es in Bindestrichwörtern nicht.
Eine erste Möglichkeit, sich die Wirkung des neuen Algorithmus
anzusehen, ist die Datei weighted-hyph-Kant.tex im Verzeichnis tests.
Hier wird die Einleitung zu Kants Kritik der reinen Vernunft in der
linken Spalte mit dem herkömmlichen Trennalgorithmus und in der rechten
Spalte mit gewichteten Trennstellen gesetzt. Die Unterschiede sind nicht
groß, das Ergebnis mit gewichteten Trennstellen aber doch leicht besser.
Viel mehr wird man wohl auch nicht erreichen können. Der Preis ist
allerdings hoch: Die Übersetzung dauert bei mir mit dem gewichteten
Algorithmus achtmal so lange wie mit dem normalen. Javier Bezos hatte
mir einst aus Performance-Gründen von einem Trennalgorithmus in Lua
abgeraten und hier Recht behalten.
Wenn jemand mit den Penalty-Werten spielen will, muss er direkt die
Zeilen 48 bis 50 in autotype.lua ändern. Eine Schnittstelle ist momentan
nicht vorgesehen.
Weil es leicht zu machen war, habe ich zusätzlich noch die Option
hyphenation=primary implementiert, mit der nur an Primärtrennstellen
getrennt wird. (Das dauert etwa viermal so lange wie normal.) Große
Praxisrelevanz sehe ich dafür aber nicht.
Dann gibt es noch eine Option, die alle Trennstellen markiert, auch wenn
sie nicht zur Trennung genutzt werden (mark-hyph). Das funktioniert wie
beim Paket showhyphens mit kleinen farbigen Strichen an den
Trennstellen. Autotype nutzt allerdings drei verschiedene Farben, um
Trennstellen unterschiedlicher Güte zu markieren. Wenn man sich damit
den einen oder anderen Text ansieht, merkt man, dass die Fehlerquote bei
den Primär- und Sekundärtrennstellen höher liegt als bei den tertiären.
Das liegt daran, dass die Muster, die hierfür aus der Wortliste gewonnen
werden, naturgemäß weniger verallgemeinerbar sind, da die gesamte
Wortstruktur einfließt.
Die Version 0.3 führt auch eine konsequentere
Schlüssel-Wert-Schnittstelle ein. Statt noligbreak heißt die Option
jetzt ligbreak=off, statt no-long-s long-s=off. ligbreak und ligbreak=on
etc. sind äquivalent.
Das von Günter beschriebene Problem mit den Ligafaktur-Schriften (ZWNJ
als Teil von Eingabeligaturen) kann jetzt mit der Schriftoption
ligbreak-method=kern angegangen werden. Ich bin mir noch nicht sicher,
ob diese Option bleibt, denn ich sehe mittlerweile kaum noch einen Sinn
in der Verwendung der Bindehemmer. Sie sind zwar für die Verhinderung
von Ligaturen zuständig, doch das gilt vor allem bei direkter
Nutzereingabe. Wenn man sowieso im Nachhinein in die Liste der
eingegeben Zeichen eingreift, wie es autotype für den Ligaturaufbruch
tut, können die Ligaturen auch anders unterdrückt werden (z.B. durch
Kerning). Bevor ich hier eine Entscheidung treffe, muss ich aber die
Wechselwirkung zwischen den verschiedenen Ligaturaufbruchmethoden und
dem Standard-Kerning der Schrift noch genauer untersuchen.
Ansonsten habe ich die Anleitung etwas verbessert und einige
Literaturhinweise zum Fraktursatz mit TeX hinzugefügt. Auch gibt es in
den Anwendungsbeispielen zur long-s-Option jetzt ein Beispiel zu den
Ligafaktur-Schriften.
Auf lange Sicht sollen noch die Spezialtrennungen {ck/k=k} etc.
unterstützt werden. Vorher muss aber die vorhandene Funktionalität
konsolidiert werden. Dafür sind Rückmeldungen natürlich wieder sehr
willkommen!
Kürzlich ist auf dem CTAN eine Reihe mikrotypographischer Pakete vom
Thomas Kelkel aufgetaucht, darunter auch eines zum Ligaturaufbruch
(ligtype). Die Konkurrenz schläft also nicht.
Schöne Grüße
Keno
Mehr Informationen über die Mailingliste Trennmuster