[Trennmuster] Woerter mit zwei und drei Buchstaben

Stephan Hennig mailing_list at arcor.de
Di Jul 29 00:59:35 CEST 2014


Am 24.07.2014 22:11, schrieb Guenter Milde:
> On 23.07.14, Stephan Hennig wrote:
> 
>> 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
> +   Aus-schu-ss

Und gemeint war 'Aus-schuß'. :-)  Die reformierte Rechtschreibung kam
mir bei dem schnell gesuchten, einfachen Wort in die Quere.  Schreiben
würde ich gebrochene Texte jedoch in traditioneller Rechtschreibung.
Einen Bedarf für automatische Lang-s-Wandlung in reformierter
Rechtschreibung (mit 'Aus-schu-ss') sehe ich dennoch, da mit der Zeit
wohl immer weniger traditionelle Rechtschreibung konsumiert und
produziert wird.


>> 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.
> 
> OK, das ist ein alternativer Weg. Aber auch dazu müssen die kurzen Wörter
> nicht in die Trennmusterliste sondern können bei der Erzeugung der
> Patgen-Eingabe hinzugefügt werden.

Gut, soll mir dann auch recht sein.


> Letztendlich ist es gar keine Sonderbehandlung mehr und auch nur eine
> Wandlung:
> 
> Der "hyphenator" macht aus dem Wort eine Liste von Wortteilen:
> 
>     parts = hyphenator.split_word(wort)
> 
> (z.B. ausgehen -> ["aus", "gehen"]). Dann reicht ein regulärer
> Ausdruck für die s-ſ Wandlung:
> 
>     # Wandle in jedem Teil alle klein S zu Lang-S, außer am Schluss:
>     
>     parts = [re.sub(u's(.)', ur'ſ\1', part) for part in parts]
> 
> Zum Schluß alles zusammenfügen und fertig:
> 
>     return u''.join(parts)

Reguläre Ausdrücke stehen in LuaTeX für Knotenlistenmanipulationen
leider nicht zur Verfügung.  Da muss alles von Hand gemacht werden.


> Aber natürlich sind auch Lang-S-Muster möglich.

Die wäre am einfachsten zu handhaben.  Aber wegen deines Arguments
bezüglich Ligaturen (siehe weiter unten) bin ich momentan zwiegespalten,
wie man mit dem langen s am besten umgeht.


> Viele Abkürzungen müssen auf jeden Fall explizit außerhalb der Liste
> gelistet werden, da Trennstellen (wenn überhaupt vorhanden) und
> Lang-S-Schreibung hier unabhängig sind: Es gilt die Schreibung des
> ungekürzten Worts.

OK.


>> 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.
> 
> Sind "hyphens" auch am Wortende zulässig? Wir haben sowohl "ſehen",
> als auch die Abkürzung "abſ" (absolut). Im Gegensatz dazu gibt es
> keinen Fall von Rund-S am Wortanfang.

Im Padrinoma-Paket sind sie es.  Bei Patgen weiß ich es nicht genau,
aber da es die Wortrandmarkierung '.' gibt, vermute ich, dass es mit
\lefthyphenmin=0 bzw. \righthyphenmin=0 geht.  Damit dürften Muster wie

  .1s

oder im anderen Fall

  .abs1.

herausfallen.  Bei der Konvertierung muss man in jedem Fall noch prüfen,
ob in der Eingabe tatsächlich ein Kleinbuchstabe steht.


>> Auch bei der Ligaturbehandlung bin ich dafür, alle Intelligenz vor
>> Patgen und in TeX lediglich Ligaturmuster anzuwenden. 
> 
> Was aber auch keinen Grund darstellt, prinzipiell untrennbare Wörter in
> die Wortliste aufzunehmen - wir können für Wörter mit weniger als 4
> Buchstaben aus der Trennliste keine Information gewinnen, die nicht in einer
> simplen Wortliste (aspell dump oder was auch immer) auch vorhanden ist.

Ich war mir nicht sicher, ob es nicht Abkürzungen gibt, die ohne Ligatur
geschrieben werden sollten.  Ich dachte da zum Beispiel an "eff.", aber
wie ich sehe, ist die erste Trennung in "effektiv" als Stammtrennung
markiert.


>> 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).
> 
> Sowohl im traditionellen 8-bit TeX, als auch in OpenType fonts werden
> Ligaturen (so sie gewünscht und im Font vorhanden sind) automatisch
> verwendet solange sie nicht explizit unterbunden sind.

Ja, LuaTeX macht dies in einem Callback 'ligaturing'.  Dort kann man
entweder alle Ligaturen selbst bauen oder man führt zunächst die
Funktion node.ligaturing aus und bricht falsche Ligaturen anschließend
auf.  Eine Unmenge an interessanten Informationen zu LuaTeXs Callbacks
findet man übrigens in Paul Isamberts TUGboat-Artikel "LuaTeX: What it
takes to make a paragraph",
<URL:https://www.tug.org/TUGboat/tb32-1/tb100isambert.pdf>.


> Steuern der Ligatur bedeutet also praktisch immer aktives Verhindern
> durch Einfügen von Trennern, »"|« mit Babel-German, »\-\hspace{0pt}« sonst
> (mit TeX) und \u200C ZERO WIDTH NON-JOINER for Unicode.

In LuaTeX ersetzt man einen Glyph-Knoten, der eine Ligatur
repräsentiert, durch Kopien seiner ursprünglichen Komponenten (diese
Information ist in der Knotenliste zu dem Zeitpunkt noch enthalten).


>> 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.
> 
> Ich glaube, hier gibt es ein Mißverständnis:
> 
> 1. Will ich nicht Lang-S-Ersetzung und Ligaturaufbruch mit den gleichen
>    Mustern machen (das geht wirklich nicht gut).
>    
> 2. Braucht man dann für jede Kombination von im Font vorhandenen Ligaturen
>    einen Pseudo-Trennmustersatz. Zumindest, wenn man nicht
>    Übergeneralisieren und für alle denkbaren Ligaturen prophylaktische
>    Trenner an Haupttrennstellen einfügen will. Das wird rasch sehr sehr
>    viel.

Das stimmt.  Dieser Vorteil deiner Herangehensweise war mir bisher
völlig entgangen.  Und wenn man für Ligaturen auf
Haupttrennstellenmuster zurückgreift, wäre es wiederum stimmig,
denselben Weg auch für Lang-s/Rund-s einzuschlagen.  Es gibt allerdings
einen Unterschied zu Ligaturen: Während sich falsche Ligaturen in
unmittelbarer Nachbarschaft zu Haupttrennstellen befinden und daher
leicht aufgefunden werden können, trifft dies für Lang-s nicht zu,
sondern nur für die weniger interessanten Rund-s.  Das erfordert einen
zweiten Durchlauf über die Knotenliste, wodurch dieses Verfahren
langsamer werden dürfte als mit expliziten Lang-s-Mustern.


>> Siehe oben, 's' ohne folgende Trennstelle wird Lang-s.  Gibt es Fälle,
>> wo diese Logik versagt?
> 
> Ja:
> 
> exceptions = (u'Abſ', # Abſatz/Abſender
>               u'Ausg', # Aus<gabe
>               u'beſ',  # beſonders
>               u'coſ',  # Ko<ſinus
>               u'coſec', # Ko<ſekans
>             # u'daſ',   # da<ſelbst (nicht von Artikel "das" zu unterscheiden!)

                            da<ſelbſt


>               u'desgl', # des<gleichen
>               u'Diſſ',  # Diſſertation
>               u'hrsg',  # herausgegeben
>               u'Hrsg',  # Herausgeber
>               u'Hſ',    # Handschrift
>               u'Maſſ',  # Maſſachusetts

                      Nicht Maſſachuſetts?  (Habe keine Frakturduden zur
Hand.)

>             # u'Miſſ',  # Miſſiſippi (nicht von Miſs (Frln.) zu unterscheiden)
>               # TODO: N-Z
>              )

In diesen Beispielen kann ich leider keinen Widerspruch zu meiner These
erkennen.  Aber wie hält's der /Dresd-ner/ -- langes oder rundes s?

Viele Grüße,
Stephan Hennig



Mehr Informationen über die Mailingliste Trennmuster