[Trennmuster] Woerter mit zwei und drei Buchstaben

Stephan Hennig mailing_list at arcor.de
Mi Jul 23 20:11:18 CEST 2014


Am 21.07.2014 08:36, schrieb Guenter Milde:
> On 21.07.14, Werner LEMBERG wrote:
> 
>> > Wörter mit weniger als vier Buchstaben sind auch für Lang-s-Muster
>> > relevant, zum Beispiel bei 'es' und 'ist'.  Ebenso für Ligaturmuster.
> 
> Da in beiden Fällen nur die Frage nach Haupttrennstellen interessiert
> aber im Deutschen für jegliche Trennung mindestens 4 Buchstaben benötigt
> werden würde die Aufnahme dieser Wörter in die Trennliste keine
> Zusatzinformation liefern: wir wissen schon, daß in keinem Wort mit weniger
> als 4 Buchstaben eine Trennstelle ist und können dieses Wissen bei Lang-S-Schreibung
> und Ligaturaufbruch nutzen:
> 
> Lang-S: 
>   Für ein Lang-S Wörterbuch kann eine simple Wortliste mit <3-Wörtern
>   (z.B. aus dem aspell-dump bzw. der Quellliste) mit s2long-s.py
>   verarbeitet werden.
> 
>   Für Lang-S-Ersetzung über Trennmuster muß der Ersetzungs-Algorithmus
>   das s am Wortende generell gesondert wandeln. Rund-S an erster
>   Stelle kommt generell nicht vor (merke, das große S entspricht einem
>   langem S). An zweiter Stelle kann Rund-S nur in Ausnahmen
>   (Abkürzungen) oder längeren Wörtern vorkommen -- für Abkürzungen ist
>   eine Ausnahmeliste zu erstellen.

Nach meiner Vorstellung gibt es überhaupt keine Sonderbehandlungen.
/Alle/ Lang-s werden über spezielle Lang-s-Muster erkannt.  Diese Muster
sind /nicht/ Haupt- oder Fugen-Trennstellen-Muster, sondern werden aus
einer Liste von Wörtern wie

  Aus-schuss
  Wa-s-ser
  u-sw

erstellt.  Das Wissen um die Lang-s-Regeln würde ich nicht erst in TeX
anwenden, sondern schon bei der Erzeugung von Patgens Eingabe-Liste.
Das hat zwei Vorteile: Zum einen ist der Implementierungsaufwand in TeX
erheblich geringer.  Das ist deshalb von Bedeutung, weil die
Datenstrukturen in TeX nicht einfache Strings sind, sondern etwas
komplizierter (Knoten und gewisse Tabellen).  Eine Sonderbehandlung von
Schluss-s (und ein Wörterbuch für kurze Wörter) kann man in externen
Skripten mit ein paar einfachen Stringoperationen recht einfach
durchführen.  Die Knotenmanipulationen in LuaTeX sind schon nicht ganz
trivial, da möchte man nicht noch zig Dinge nebenher tun.  Hinterher
soll der Kode ja auch noch wartbar sein.  Ich bin dafür, auf TeX-Ebene
alles möglichst einfach zu halten.  Zweitens dürften die
Sonderbehandlungen mit mehrfachem Verarbeiten von Buchstaben oder gar
ganzen Wörtern der Geschwindigkeit nicht zuträglich sein.  Beim Anwenden
von Mustern wird dagegen jeder Buchstabe nur genau einmal konsultiert.

Aus letzterem Grund ist es auch sinnvoll Lang-s-Muster zu verwenden,
statt Rund-s-Muster.  Mit Rund-s-Mustern müsste man die Wörter wieder
zweimal durchgehen, um erst einmal alle Rund-s in Lang-s zu verwandeln.
 Während des Mustervergleichs wird nämlich keine Liste geführt, wo sich
überall s in der Eingabe befinden (die man nach solchen überprüfen
könnte, welche gerade nicht von Rund-s-Mustern erkannt wurden und
folglich in Lang-s gewandelt werden sollten).

Um nun u-sw in die Eingabeliste für Lang-s-Muster zu bekommen, reichte
es, wenn

  usw;usw

in der Liste enthalten wäre und ein Skript daraus per Regel "Ohne
folgende Trennstelle in der Wortliste wird s zu Lang-s" u-sw macht.  Oder?

Für eine TeX-Implementierung wäre es übrigens egal, ob die Stelle vor
oder nach einem Lang-s markiert ist.  Patgens Eingabeliste für
Lang-s-Muster könnte also auch

  Auss-chuss
  Was-s-er
  us-w

lauten.


> Ligaturaufbruch
>   findet in "normalen" kurzen (<3) Wörtern nicht statt. Nur in Abkürzungen,
>   wobei da aber andere Regeln gelten:
>   
>   * "echtes Wort": keine Ligatur wenn Morphemgrenze=Trennstelle
>     (bei uns [<>=]+). Algorithmusidee: Wort mit "major-Mustern" trennen und
>     für "Ligaturkandidaten" (ff, fi, ...) einen "Aufbruchsmarker" einfügen,
>     wenn im getrennten Wort f-f, f-i, ...) steht.
>     
>   * Abkürzungen: hier gelten spezielle Regeln, die sowieso in einer
>     Ausnahmeliste erfaßt werden müßten. (Mir fällt gegenwärtig nur
>     "Aufl." ein, was a) in der Liste ist und b) soweit ich weiß auch mit
>     Ligatur gesetzt wird, d.h. der obig angedachte Algorithmus macht es
>     schon richtig.

Auch bei der Ligaturbehandlung bin ich dafür, alle Intelligenz vor
Patgen und in TeX lediglich Ligaturmuster anzuwenden.  Die Anwendung von
Ligaturen ist sowieso noch schwieriger, weil man auch noch in den
Schriften nachsehen muss, welche Ligaturen überhaupt vorhanden sind
(entweder um sie anzuwenden oder um sie wieder aufzulösen, wobei
letzteres geringfügig einfacher ist).

So nett die Idee auch klingt, sowohl die Lang-s-Ersetzung,
Ligaturbehandlung und Spezialtrennungen mit einem Haupt- oder
Fugentrennmustersatz (und auch noch in einem Durchlauf) zu erledigen,
ich denke am Ende landet man so nur bei unwartbarem Kode.  Ich würde
alle diese Arten von Knotenmanipulationen trennen und mit jeweils
eigenen Mustern durchführen.


> es heißt uſw. (< und ſo weiter) Aber in s2lang-s.py steht es in einer
> Ausnahmeliste, denn es gibt keine generelle Regel welche aus dem
> String "usw" die korrekte Schreibung ermitteln könnte.

Siehe oben, 's' ohne folgende Trennstelle wird Lang-s.  Gibt es Fälle,
wo diese Logik versagt?


> Aber wie gesagt: bei Abkürzungen lassen sich Lang-S und Ligaturaufbruch
> nicht aus den Trennstellen ableiten, ich sehe daher keinen Grund kurze
> Abkürzungen in die Liste aufzunehmen.

Falls es Fälle gibt, in denen das tatsächlich nicht möglich sein sollte,
könnten wir solche Stellen auch mit einem neuen Zeichen auszeichnen.  So
könnte man vielleicht auch das Problem aus der Diskussion 'diss und
dass' lösen ...

Viele Grüße,
Stephan Hennig




Mehr Informationen über die Mailingliste Trennmuster