[Trennmuster] Kombinierende Zeichen in der TeX Eingabe

Guenter Milde g.milde at quantentunnel.de
Do Nov 2 18:04:41 CET 2023


Am  2.11.23 schrieb Werner LEMBERG:
> >> >> > oder Nachbearbeitung der Muster: ä1rö -> ä1rö, a(U+0308)1ro(U+0308)
> >> >> > (aus 1 mach 2)?
> >> > 
> >> >> Wohl letzteres – das müßte doch eigentlich ausreichen, oder?
> >> > 
> >> > Wie gesagt, es kann Probleme mit Umlauten am Wortanfang oder -ende
> >> > geben, da dann für den Trenn-Algorithmus 2 Zeichen am Rand stehen
> >> > und Ä-ther oder Windb- ö getrennt werden könnte.
> > 
> >> Hmm.  Inwieweit ist das anders als die Auflösung in »Aether« oder
> >> »Windboe«, was wir bereits haben?
> > 
> > Ich dachte, die Umlaut-Ersatzschreibung wird vor dem Patgen-Lauf zur
> > Wort-Stichprobe dazugefügt...

> Ja.  Falls Nachbearbeitung nicht adäquat funktioniert, fügen wir halt
> die Wörter mit Umlauten in allen NFC- und NFD-Kombinationen ein.  Wenn
> `patgen` ein paar Sekunden länger braucht, tut mir das nicht weh.

Ich denke, Mischformen ("Flötento(U+0308)ne", etc.) müssen wir nicht
unbedingt berücksichtigen.


> > Jetzt stellt sich die Frage, ob Ae-ther korrekt ist.

> Meiner Meinung nach sollte das vollständig äquivalent zu »Ä-ther«
> behandelt werden, d.h., nach »Ae« kommt eine Gesangstrennstelle und
> sonst nichts.  So machen wir das ja auch bereits, oder?

In der wortliste steht "Äther;Ä·ther".
Die Ersatzschreibung wird automatisch erzeugt und vor der Mustererzeugung
hinzugefügt.
Gegenwärtig trennen die aktuellsten Muster bei mir "Aether" als "Ae-ther".

Wenn wir Ae-ther nicht wollen, besteht Handlungsbedarf :(


> >> Ich habe darüber nachgedacht und keine Lösung gefunden, die einfach
> >> zu implementieren wäre, daher mein Vorschlag für ein `\x`-Makro,
> >> was ganz simpel ist.  Fällt Dir was besseres ein?
> > 
> > Nicht direkt, abgesehen von einem besseren Namen wie
> > \OnlyForUTFAcht.

> Warum ein langer Name?  Das Laden der Trennmuster findet innerhalb von
> `\begingroup ... \endgroup` statt; ich sehe daher keinerlei
> Notwendigkeit, die Datei unnötig größer zu machen.

Als self-documenting code. Aber vielleicht nicht ganz so lang...


> > Ich glaube bei expl3 könnte etwas passendes dabeisein, zumindest
> > gibt es da eine Reihe interessanter Textverarbeitungsfunktionen. So
> > ist z.B. \MakeUppercase inzwischen vor "inputenc" angesetzt und
> > arbeitet mit der Unicode Datenbank.

> Was genau meinst Du?  Soweit ich erkennen kann, hat expl3 nur
> Unterstützung, um NFD auszugeben (via `\codepoint_to_nfd:n`), aber
> nicht das Gegenteil.

Meine Idee wäre eine Funktion, die 

* mehrere Muster als Leerzeichen-getrennten String als Argument annimmt,
* dieses in einzelne Muster zerlegt
* für jedes Muster eine Übersetzung nach einer Code-Tabelle vornimmt und
  - wenn alle Zeichen übersetzt werden können das Resultat ausgibt 
  - wenn ein Zeichen nicht übersetzt werden kann, dieses Muster überspringt.
  
  Bsp: \UtfAchtToTeEins{grün Škoda λογο groß}
       → gr"fdn gro"ff

Die Funktion `\text_titlecase_all:n(n)` schreibt alle Wörter des
Arguments mit großem Anfangsbuchstaben. D.h. es gibt eine Funktion, die
ähnliche Aufgaben wie meine Zielfunktion ausführt:
- Zerlegen der Eingabe an Leerzeichen
- Ersetzen von Zeichen
Ihre Definition könnte ggf. bei der Implementierung meiner Zielfunktion
als Vorbild oder Ausgangspunkt dienen. Ein LaTeX3-Experte möglicherweise
helfen...





Mehr Informationen über die Mailingliste Trennmuster