Ich arbeite gerade an einem Buch, das der der Verlag in Times New Roman haben will. Es enthält neben englischen auch Teile in singhalesischer Schrift, die ich mit dem Präprozessor Indica erstellt habe (diese natürlich nicht in Times). Mein Problem: Sowie das Paket
Unten ein Minimalbeispiel. Um es zu kompilieren, müssen sinhala.sty und die dazugehörigen Fonts installiert sein. Das Problem wird deutlich, wenn Der Umstieg auf XeLaTeX ist übrigens keine Option. Dafür ist das Buch schon zu weit, und die Deadline steht kurz bevor. \documentclass[12pt]{article} \usepackage{sinhala} \usepackage{mathtools} % \usepackage{times} \begin{document} Normaler Text (Times). Singhalesischer Text: {\SHa\char213a}{\SHa\-\char5\char253a\char0} \textbf{{\SHa\char189a}{\SHb\-\char69}{\SHb\-\char69a}}. \end{document} gefragt 07 Aug '20, 19:47 Sven_B
Ergebnis 5 von 6
show 1 more comments
|
Vielen Dank an alle. Wir haben jetzt zwei Lösungen, die beide funktionieren.
Der Umstieg auf LuaTeX oder XeTeX ist in der Tat keine Option. Nicht nur in meinem speziellen Fall, weil das Buch so weit fortgeschritten und bereits komplett nach den Verlagsvorgaben formatiert ist, sondern auch aus prinzipiellen Gründen. Wenn man sowohl mit wissenschaftlicher Umschrift als auch mit asiatischer Originalschrift arbeitet, lässt sich das eine nicht so einfach in das andere konvertieren. Man braucht einen Präprozessor, der mehr als nur den Einzelbuchstaben im Blick hat, oder man muss den Text zweimal tippen. (bei einzelnen Sätzen machbar, aber nicht bei 50+ Seiten singhalesischem Text, für Hindi, Sanskrit usw. gilt dasselbe). Das liegt an der Logik indischer Schriften, die mit Ligaturen arbeiten und bei denen der Vokal dem Konsonanten inhärent ist. Ein "Buchstabe" setzt sich also aus mehr als einem Laut zusammen. Zum Beispiel haben die Lautfolgen ta, ti, tra und tri jeweils eine eigene Position im Unicode-System. Ein Präprozessor wie Indica kann damit umgehen. Ein normaler Editor wie Emacs oder vi nur mit umfangreichen RegExp-Befehlen. Ich werde dem Entwickler des Sinhala-Pakets einen Request schicken, bin aber pessimistisch, ob er überhaupt noch für die Entwicklung eines so alten Pakets zur Verfügung steht. beantwortet 10 Aug '20, 14:34 Sven_B 1
also 2. ist besser, weil 1. kann Seiteneffekte haben und hängt zu sehr von den Eigenschaften der Textschrift ab und würde wahrscheinlich nicht funktionieren, wenn du das singalesisch nach \sffamily verwendest. Was aber die Sachen mit dem Präprozessor angeht: Informationen über Grapheme und Silben sind in den Unicodedaten, und nutzen kann man sowas mit lualatex, siehe z.B. https://ctan.org/pkg/lua-uni-algos
(10 Aug '20, 14:57)
Ulrike Fischer
Selbstverständlich ist das eine Antwort. Es handelt sich um die drei verschiedenen Lösungswege, die hier erarbeitet wurden, säuberlich zusammengefasst, auf den Punkt gebracht, korrigiert und mit einer Anleitung versehen. Genau das, was späteren Nutzern, die auf den Thread stoßen, eine prägnante Lösung bietet. Allenfalls die abschließende Erläuterung, warum die dritte Antwort in der gegebenen Situation weniger hilfreich ist, kann mit einigem Recht als "Kommentar" bezeichnet werden.
(10 Aug '20, 17:36)
Sven_B
@Ulrike: Ist mir schon klar, dass Unicode (fast) alle Grapheme kennt. Es ist kein Darstellungs- oder Codierungsproblem. Es geht ganz pragmatisch um den Workflow, mit dem man die eine Schrift in die andere konvertiert. Es müsste für jede mögliche Silbe (d.h. jede zulässige Kombination aus 1-5 lateinischen Buchstaben) die passende singhalesische Unicode-Stelle gemapt werden. Ich wüsste nicht, wie das ohne Preprocessing (z.B. Python- oder Perl-Script) gehen soll. Meines Wissens existiert so ein Script nicht. Es selbst zu schreiben, würde bei meinen geringen Fähigkeiten eine Woche dauern.
(10 Aug '20, 18:14)
Sven_B
@Ijon Tichy: Ich habe mich bemüht, aus den Ermahnungen, die ich im Laufe des Threads erhalten habe, zu lernen und es beim nächsten Mal richtig zu machen. Wie man in einem Kommentar Code formatiert (1. Ermahnung), entzieht sich mir. Daher habe ich meine erste "Nicht-Antwort" mit dem Antwort-Tool geschriben. Aus stefans ausführlicher und sympathischer Erläuterung (per PM im Anschluss an die 2. Ermahnung), warum das nicht richtig war, habe ich leider den falschen Schluss gezogen, dass eine abschließende zusammenfassende Antwort nützlich und im Sinne der Archivierung erwünscht sein könnte.
(10 Aug '20, 22:15)
Sven_B
Auch wenn diese letzte Antwort nicht neu war, erfüllt sie dennoch die Kriterien einer Antwort. So etwas nennt man Konklusion. Dass die Moderatoren eine solche als Thread-Abschluss gedachte zusammenfassende Antwort nicht für nützlich halten, kann ich akzeptieren.
(10 Aug '20, 22:15)
Sven_B
Allerdings, Ijon, wird mir der Unterschied zu Deiner sogenannten Antwort nicht klar. Denn diese war ja selbst nichts anderes als eine Wiederholung der beiden Lösungsvorschläge, die von Ulrika und mir bereits gefunden worden waren (siehe die ersten beiden Kommentare im Thread). Plus einem zwar interessanten, aber nicht problemrelevanten Kommentar (!) zur Aktualität des Times-Paketes (übrigens ein Sub-Kommentar zu Deinem eigenen Kommentar und keine Antwort auf die Frage, zumal mit den vorgeschlagenen Alternativen das Problem ja weiterhin besteht).
(10 Aug '20, 22:16)
Sven_B
2
Das sind Kommunikationssmodalitäten, in die ich als Neuling hätte hinein wachsen können. Was ich nicht akzeptieren will, ist Ijons PM an mich, in der er (?) mich mit "Konsequenzen" bedroht, wenn ich seine Auffassung nicht akzeptiere. Dieses insouveräne Insistieren auf die Moderatoren-Autorität war unnötig. Die zuvor gepostete Erläuterung Deiner Auffassung wäre ausreichend gewesen. Das hat mir leider die gesamte Plattform unsympathisch gemacht. Daher ziehe ich nun selbst die angedrohten Konsequenzen.
(10 Aug '20, 22:16)
Sven_B
Ich bedanke mich bei allen, die mir mit ihrer Kompetenz und Hilfsbereitschaft bei der Lösung dieses Problems geholfen haben. Ich bedaure, dass ich diese Hilfsbereitschaft nicht mehr erwidern kann.
(10 Aug '20, 22:16)
Sven_B
Jetzt wollen wir das vielleicht nicht ausufern lassen. Ich habe verstanden, dass der eine Kommentar, den ich für eine PM hielt, von Dir wieder gelöscht worden ist, um genau dieses Missverständnis, das ich dann ja auch hatte, zu verhindern. Das versöhnt mich wieder. Ich habe gestern beim vergeblichen Versuch, mein Konto zu löschen, erst verstanden, wie das mit Moderation und Punktesystem hier funktioniert. Als alter Newsgroup-User kannte ich das nicht. Ich finde das System auch kritisch.
(11 Aug '20, 13:09)
Sven_B
Hätte ich das System gestern schon verstanden gehabt, hätte ich meine Kommentare vielleicht nochmal ganz anders geschrieben. Insbesondere, warum Du eine eigene Antwort aus Ulrikas und meinen Lösungen generiert hast, anstatt unsere Kommentare zu Antworten "aufzuwerten". Schreckliches System. Aber ich sehe auch die Idee dahinter. Als Neuling kann ich nur darauf hinweisen, dass mit einem Belohnungssystem automatisch ein Machtspiel generiert wird, auch wenn das in niemandes bewusster Absicht liegt. Und nach Deinem heutigen Engagement um Aufklärung unterstelle ich Dir das auch nicht mehr, Ijon.
(11 Aug '20, 13:17)
Sven_B
Ich möchte trotzdem allen mit Moderatorenrechten raten, nach dem "Abwerten" von Beiträgen einige erklärende Worte an den/die Betreffende(n) zu richten, so wie stefan es getan hat. Mit einem vorgefertigten Posting, in dem auf die Regeln verlinkt wird (die dann hilfreich sein können oder nicht) wirkt das Verfahren schnell kaltschnäuzig und unsympathisch. Erinnert dann an die automatischen Email-Antworten auf eine Frage bei der Telekom.
(11 Aug '20, 13:23)
Sven_B
1
@Sven_B Das formale Frage-Antwort-System hier ist manchmal schwer einzuhalten, insbesondere wenn Lösungen aus einer Diskussion heraus erwachsen. Das Ziel der Struktur ist halt spätere optimale Nutzbarkeit bei wiederkehrenden Problemen, kanonischen Fragen. Das schränkt die Nutzbarkeit als Diskussionsforum etwas ein, lässt sich halt mit Kommentaren lösen. Weiterhin wirken einfach nur sachliche Kommentare auf einen schnell mal zu belehrend und können als nicht freundlich wahrgenommen werden, daher gehe ich selbst immer noch einen Extra-Schritt, indem ich Freundlichkeit auch betone. Wenn man seine Meinung nach Gegen-Meinung noch begründet, wirkt es schnell unnötig heftiger. Macht gibt es hier auch nicht, eher Arbeit und Verpflichtung, auch für mich. Schriftliches Mitteilen im Internet ist schwierig, weil ein freundliches Wesen in einem sachlichen Kommentar oft nicht ohne Zutun sichtbar wird.
(11 Aug '20, 13:37)
stefan ♦♦
@Ijon Ja, manchmal werte ich spontan Beiträge von Neulingen wieder um meine eine Stimme auf, wenn ich sie auf negativ bzw. unter Null sehe, aber nicht als schädlich. Meine Schwelle ist halt eher bei 0 als bei -1, denn als -1 (negativ) gewichte ich eher falsche, schädliche, oder echt unpassende Beiträge. Ich denke, eine -1 kommt viel härter beim Beitragenden an als eine Minusstimme wenn es schon Plusstimmen gibt (wünschenswerter Normalfall). Was vllt. nicht so gutes aber nicht schlimmes kann man auch einfach bei 0 belassen. Die guten Sachen und Perlen findet man sowieso mit deutlich größer 0.
(11 Aug '20, 13:57)
stefan ♦♦
Ergebnis 5 von 13
show 8 more comments
|
"Der Umstieg auf XeLaTeX ist übrigens keine Option." So wie ich es sehe geht es darum, Sinhala zu erhalten, vermittelst der internen Ansteuerungsbefehle des sinhala-Paketes, z.B. Hinweis: Da bei meinem TeXLive kein sinhala Paket dabei ist, habe ich den dortigen Ordner runtergeladen und folgendes Testbeispiel darin ausgeführt. Ich hole mir also % arara: lualatex \documentclass[12pt]{article} \usepackage{fontspec} \setmainfont[Extension=.ttf, %Language=German, BoldFont=timesbd, ItalicFont=timesi]{times} % ja... \usepackage{sinhala} \usepackage{mathtools} % \usepackage{times} \usepackage{mwe} % Dummy Text \begin{document} \section{Normaler Text (Times)} \lipsum[66] \section{Singhalesischer Text} {\SHa\char213a}{\SHa\-\char5\char253a\char0} \textbf{{\SHa\char189a}{\SHb\-\char69}{\SHb\-\char69a}}. \end{document} beantwortet 10 Aug '20, 12:24 cis |
Wie bereits von Ulrike in einem Kommentar vorgeschlagen, funktioniert: \documentclass[12pt]{article} \usepackage{sinhala} \usepackage{mathtools} \usepackage{times} \DeclareFontSeriesDefault[rm]{bf}{bx} \begin{document} Normaler Text (Times). Singhalesischer Text: {\SHa\char213a}{\SHa\-\char5\char253a\char0} \textbf{{\SHa\char189a}{\SHb\-\char69}{\SHb\-\char69a}}. \end{document} und liefert mit LaTeX2e <2020-02-02> patch level 5: Wie jedoch in einem anderen Kommentar erwähnt, ist das Paket \documentclass[12pt]{article} \usepackage{sinhala} \usepackage{mathtools} \usepackage{mathptmx} %\usepackage[scaled]{helvet} %\usepackage{courier} \DeclareFontSeriesDefault[rm]{bf}{bx} \begin{document} Normaler Text (Times). Singhalesischer Text: {\SHa\char213a}{\SHa\-\char5\char253a\char0} \textbf{{\SHa\char189a}{\SHb\-\char69}{\SHb\-\char69a}}. \end{document} Eine weitere Alternative wäre die Verwendung von \documentclass[12pt]{article} \usepackage{sinhala} \usepackage{mathtools} \usepackage{newtxtext} \DeclareFontSeriesDefault[rm]{bf}{bx} \begin{document} Normaler Text (Times). Singhalesischer Text: {\SHa\char213a}{\SHa\-\char5\char253a\char0} \textbf{{\SHa\char189a}{\SHb\-\char69}{\SHb\-\char69a}}. \end{document} Für Helvetica und Courier gibt es ebenfalls diverse Alternativen zu Auch bei Verwendung dieser Alternativen ist die Verwendung besagter Deklaration notwendig. Wie Ulrike ebenfalls erwähnt hat, wäre es genau genommen sinnvoll, die Entsprechende Zeilen würden für \DeclareFontShape{SH1}{sinha}{b}{n}{ <-> ssub * sinha/bx/n }{}% \DeclareFontShape{SH1}{sinha}{b}{sc}{ <-> ssub * sinha/bx/n }{} \DeclareFontShape{SH1}{sinha}{b}{it}{ <-> ssub * sinha/bx/n }{} \DeclareFontShape{SH1}{sinha}{b}{scit}{ <-> ssub * sinha/bx/n }{} \DeclareFontShape{SH1}{sinha}{b}{sl}{ <-> ssub * sinha/bx/n }{} \DeclareFontShape{SH1}{sinha}{b}{scsl}{ <-> ssub * sinha/bx/n }{} lauten. Für die beiden anderen Dateien entsprechend mit beantwortet 10 Aug '20, 12:17 gast3 |
Ich finde das recht verwirrend, wie Schau Dir diese Dann kannst Du z.B. MWE (die o.g. Schriftdatei iskpota.ttf (und times.ttf) muss vorhanden sein!) % arara: lualatex \documentclass[a4paper]{article} %\usepackage{times} % nein... \usepackage{fontspec} \setmainfont[Extension=.ttf, %Language=German, BoldFont=timesbd, ItalicFont=timesi]{times} % ja... \newfontfamily{\myfont}[Scale=1]{iskpota.ttf} % U+0D80 (3456) .... U+0DFF (3583) <---- Sinhala! \newcommand\sinha[2][]{{#1\myfont\symbol{#2}}} \usepackage{pgffor, mwe} \begin{document} \section{Times Test} \lipsum[66] \section{Sinhala Test} Test: {\myfont\symbol{3461}} Test: \sinha{3461} \subsection{Unicodebereich} \foreach \No in {3456,...,3583}{ \noindent\sinha[\Huge]{\No} } \end{document} beantwortet 09 Aug '20, 19:32 cis 1
da in der Frage steht "Der Umstieg auf XeLaTeX ist übrigens keine Option", ist lualatex wahrscheinlich auch keine Option.
(09 Aug '20, 21:07)
Ulrike Fischer
@UlrikeFischer Das habe ich überlesen. Meiner Erfahrung nach führen bei asiatischen Schriften alle Wege zu LuaLaTeX (XeLaTeX habe ich bisher nicht verwendet), sonst wird es kompliziert und eingeschränkt. Er kann ja testen, ob sein Dokument mit LuaLaTeX übersetzt wenn er den "nein"-Teil durch den "ja"-Teil ersetzt.
(09 Aug '20, 21:25)
cis
Wenn auch scheints zu spät, ist es ansonsten selten ein Fehler erstmal die Grundlagen zu klären, anstatt Brute-Force ein ganzes Buch in einer ungünstigen Methode zu teXen.
(09 Aug '20, 21:32)
cis
|
versuche es mal mit
\DeclareFontSeriesDefault{bf}{bx}
.Hi
Vielen Dank für die Antwort. Es funktioniert zwar so nicht, aber Du hast mich auf die richtige Idee gebracht. Das Problem ist, dass das Times-Paket die boldfonts auf "b" umdefiniert, statt das übliche "bx" zu verwenden. LaTeX sucht also den b-Fontshape, während das Sinhala-Paket nur den bx-Fontshape kennt. Ich habe nun in den fd-Dateien des Pakets selbst die DeclareFontShape-Befehle von "bx" auf "b" geändert. Damit harmonisiert das Paket mit Times. Eher unelegant, aber es funktioniert.
Herzlichen Dank
Sven
Dann hast du kein aktuelles LaTeX (ich hatte meinen Vorschlag getestet ...).
Das ist seltsam. Ich benutze TeXLive 2020 auf Arch Linux. Aktueller geht es wohl nicht. Um möglicherweise veraltete Pakete auszuschließen, habe ich meinen Ordner $HOME/texmf mal völlig aus dem Weg geschafft und neu konstruiert mit nur den zum sinhala-Paket gehörigen Dateien. Dasselbe Ergebnis.
LaTeX (pdfLaTeX) sucht immer noch nach "SH1/sinhb/b/n". Mit Deiner Deklaration hätte ich erwartet, dass "SH1/sinhb/bx/n" gesucht und auch gefunden wird. Irgend etwas mache ich falsch. Die Deklaration wird offenbar ignoriert. Muss sie noch irgendwie aktiviert werden? Mit \selectfont o.ä.? Oder eingebettet in \renewcommand? Habe die Zeile an X verschiedenen Stellen versucht: Präambel, vor \usepackage{times}, danach, im Haupttext ...
Hm, es ist zu heiß, ich meinte
\DeclareFontSeriesDefault[rm]{bf}{bx}
. Aber nachdem ich mir das genauer angeschaut habe, denke ich es wäre vernünftiger, die fd-Dateien von sinhala zu erweitern, so dass sie auch b abdecken.