Unicode mit Transkription

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benny
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 10. Mär 2012, 23:34

Unicode mit Transkription

Beitrag von Benny »

Hallo,

ich bin auf der Suche nach einem Ansatz, nicht nach einer kompletten Lösung.

Mit XeTeX kann ich ja wunderbar fremdsprachige Texte, beispielsweise Hebräisch, eingeben und setzen lassen. Soweit, so gut.

Jetzt hab ich aber keine hebräische Tastatur und komm auch mit den Bildschirmtastaturen nicht so ganz klar (bei Mas Os ist das okay, alles andere ist stark verbesseurngswürdig).

Mein Gedanke: Ein Befehl, der mir aus lateinischen Buchstaben hebräischen Unicode transkribiert.

Das Paket cjhebrew macht ja was ähnliches, allerdings bringt das seine eigenen Schriften mit. Ich will aber nur die Zeichen in Unicode erstellen, alles andere würde ich dann mit \newfontfamily etc machen. Außerdem soll es, wenn es läuft, vielleicht gar nicht nur auf Hebräisch beschränkt bleiben (während cjhebrew Unicode produziert, macht ibycus4 das beispielsweise nicht).

Es soll also ienen Befehl geben, der in etwa folgendermaßen funktioniert:

\transkribiere{abgd}

mit der Ausgabe:

אבגד

Right-to Left Erkennung muß auch nicht sein, das kann ich dann ja nochmal mit \RL{} lösen, bidi bringt das ja mit...

Meine Fragen wären also:
1. Wie setze ich das um? Leider versteh ich den Quellcode von cjhebrew nicht.
2. Wo fang ich an, zu lesen (um obige Frage zu präzisieren, ich will ja dazulernen)? Guck ich mir irgendwelche TeX Primitiven an, oder ist das Unsinn, weil TeX ja kein Unicode kann?
3. Ergibt es Sinn, sich lediglich auf die Umsetzung der Zeichen von lateinisch nach anderes Alphabet zu konzentrieren, und Schriftrichtung bidi zu überlassen, sowie etwaige hyphenations und Ligaturesn für polyglossia etc.? Oder überseh ich etwas, womit ich mir ins Bein schieße?

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4267
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Sowas kannst du mit einem TECkit-mapping machen. Suche mal auf der xelatex mailing-Liste, da gab es ein paar Beispiele.

http://tug.org/mailman/htdig/xetex

Benny
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 10. Mär 2012, 23:34

Beitrag von Benny »

Danke.

Kurze Rückfrage: Beim ersten Überfliegen hab ich gelesen, daß teckit mappings ganz am Ende umgesetzt werden. Muß ich mir dann selbst Gedanken zu Ligaturen, Worttrennungen etc machen, oder kann ich da noch die Funktionalität anderer Pakete (babel, polyglossia,...?) nutzen?

Benny
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 10. Mär 2012, 23:34

Beitrag von Benny »

Nach ein bißchen rumlesen im Internet hab ich den Eindruck, folgendes Verstanden zu haben:

Der Mechanismus, mit dem das klappt, was ich vorhabe, ist der gleiche Mechanismus, mit dem mehrere Zeichen durch die entsprechenden Ligaturen im Font ersetzt werden.

Wenn ich das Ganze also anginge, müßte ich gleichzeitig ne eigene Version von Mapping=tex-text bauen.

Die Entscheidung über Trennregeln werden wohl andernorts getroffen, wenn ich es richtig verstehe, muß ich mich damit nicht befassen...

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

Eine andere Möglichkeit wäre, auf Tastatur- oder Editorebene anzusetzen: Wähle eine Tastaturbelegung oder Eingabemethode, die die hebräischen Zeichen direkt eingibt. Das hat den Vorteil, dass die richtigen Zeichen direkt im Quellcode auftauchen.


Deinen ursprünglichen Vorschlag könntest du beispielsweise auf Makroebene so realisieren:
documentclass[pagesize=auto, version=last]{scrartcl}

\usepackage{expl3}
\usepackage{xparse}
\usepackage{fontspec}

\ExplSyntaxOn
\NewDocumentCommand \transcribe {m} {
  \tl_map_function:nN {#1} \transcribe_aux:n
}
\cs_new_protected_nopar:Nn \transcribe_aux:n {
  \tl_use:c { c_transcribe_char_#1_tl }
}
\tl_map_inline:nn {
  { a א }
  { b נ }
  { c ב }
  { d ג }
} {
  \tl_const:cx { c_transcribe_char_ \tl_head:n {#1} _tl } { \tl_tail:n {#1} }
}
\ExplSyntaxOff

\setmainfont{Arial}

\begin{document}

\transcribe{abcd}

\end{document}

Benny
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 10. Mär 2012, 23:34

Beitrag von Benny »

Eine andere Möglichkeit wäre, auf Tastatur- oder Editorebene anzusetzen: Wähle eine Tastaturbelegung oder Eingabemethode, die die hebräischen Zeichen direkt eingibt. Das hat den Vorteil, dass die richtigen Zeichen direkt im Quellcode auftauchen.
Das mach ich ja normal auch so. Allerdings will ich ein paar Kommilitonen von LaTeX überzeugen, und die sind es gewohnt unter Word mit bestimmten Schriftarten zu arbeiten, die an der Stelle von a ein Aleph etc kodiert haben (mit dem schönen Effekt, daß man eben genau die Schriftart aufm Rechner haben muß, um den Text dann überhaupt lesen zu können).

Das mit den Tastaturen ist dann schon schwieriger, vor allem, wenn man bedenkt, daß Modernhebräisch und Moderngriechisch zwar noch recht gut geht, aber die antiken Formen mit ihrer Punktation und Akzenten dann jeweils noch ein wenig Nacharbeit verlangen beim Einstellen der Eingabemethode (wie gesagt: die einzige Plattform, wo es keine Probleme gibt, ist Mac - aber den hat nicht jeder).
Deinen ursprünglichen Vorschlag könntest du beispielsweise auf Makroebene so realisieren
Danke, genau so etwas hab ich gesucht. Ich versteh es zwar noch nicht ganz, aber es funktioniert, und das ist erst einmal die Hauptsache. A propos funktioniert: In der Form kamen Fehler auf, der stört sich am & Zeichen. Ich hab den entsprechenden Teil dann so umgeschrieben:
\tl_map_inline:nn {
  { a \symbol{1488}}
  { b \symbol{1489}}
  { c  \symbol{1490}}
  { d \symbol{1491}}
}
Funktioniert wunderbar. Vielen Dank nochmal an alle.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4267
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

In der Form kamen Fehler auf, der stört sich am & Zeichen.
Das liegt nur daran, dass das Forum, Unicodezeichen in der Code-Umgebung in html-Schreibweise "übersetzt". א ist für LaTeX nicht geeignet.

Du solltest dir aber im Klaren sein, dass sich eine derartige Transskription sich nicht für längere Abschnitte eignet: z.b. kannst du keine Befehle benutzen. \transcribe{ab\textbf{anbc}cd} führt zu Fehlern. Und du hast da Problem der Schreibrichtung und von Akzenten damit noch nicht gelöst.

cjhebrew macht übrigens *nicht* sowas ähnliches. Es wechselt zu einer anderen Schrift, d.h. die Transscription wird auf der Schriftebene (u.a. durch ligaturen) gemacht, also so wie xetex es mit den Mapping-Dateien machen würde.

Benny
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 10. Mär 2012, 23:34

Beitrag von Benny »

Das liegt nur daran, dass das Forum, Unicodezeichen in der Code-Umgebung in html-Schreibweise "übersetzt". א ist für LaTeX nicht geeignet.
Wieder was gelernt, danke.
Du solltest dir aber im Klaren sein, dass sich eine derartige Transskription sich nicht für längere Abschnitte eignet: z.b. kannst du keine Befehle benutzen. \transcribe{ab\textbf{anbc}cd} führt zu Fehlern. Und du hast da Problem der Schreibrichtung und von Akzenten damit noch nicht gelöst.
Danke für den Hinweis, war mir in der Tat nicht klar. Stört mich momentan jedoch auch nicht. Ich vermute mal, \textbf{\transcribe{abcd}} würde gehen, und das würde erst mal reichen.
cjhebrew macht übrigens *nicht* sowas ähnliches. Es wechselt zu einer anderen Schrift, d.h. die Transscription wird auf der Schriftebene (u.a. durch ligaturen) gemacht, also so wie xetex es mit den Mapping-Dateien machen würde.
cjhebrew kopieren wollte ich ja genau nicht. Wozu auch, ist ein wunderbares Paket! Und "ähnlich" bezieht sich bei mir hier wohl eher auf die Handhabung, nicht auf die Funktion hinter den Kulissen. Hätt ich dazu schreiben sollen, sorry.

Jedenfalls vielen Dank Euch beiden für Eure Hilfe, das hat mich weitergebracht. Bin jedoch im Moment grad an einer ganz anderen, dringenderen Baustelle, daher auch meine verspätete Antwort.

Antworten