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 times geladen wird, werden einige fontshapes des singhalesischen Fonts unverfügbar. Konkret werden Grapheme in boldfont nicht mehr gefunden und durch den Standard ersetzt. Die Fehlermeldung lautet:

 LaTeX Font Warning: Font shape `SH1/sinha/b/n' undefined
 (Font)              using `SH1/sinha/m/n' instead on input line 11.

Unten ein Minimalbeispiel. Um es zu kompilieren, müssen sinhala.sty und die dazugehörigen Fonts installiert sein. Das Problem wird deutlich, wenn \usepackage{times} aus- bzw. einkommentiert wird. Das zweite Wort soll fett sein.

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's gravatar image

Sven_B
2715
Akzeptiert-Rate: 0%

bearbeitet 09 Aug '20, 01:19

versuche es mal mit \DeclareFontSeriesDefault{bf}{bx}.

(07 Aug '20, 20:57) Ulrike Fischer

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

(08 Aug '20, 02:03) Sven_B

Dann hast du kein aktuelles LaTeX (ich hatte meinen Vorschlag getestet ...).

(08 Aug '20, 11:16) Ulrike Fischer

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.

(08 Aug '20, 12:28) Sven_B

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 ...

(09 Aug '20, 01:07) Sven_B

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.

(09 Aug '20, 18:34) Ulrike Fischer
Ergebnis 5 von 6 show 1 more comments

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:

mit times und fett

Wie jedoch in einem anderen Kommentar erwähnt, ist das Paket times veraltet, worauf auch in der Anleitung der psnfss-Sammlung, von der das Paket bereitgestellt wird, ausdrücklich hingewiesen wird. Eine ebenfalls ins besagter Anleitung erwähnte Alternative wäre die Verwendung von mathptmx (ggf. in Verbindung mit courier und helvet):

\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 newtxtext aus newtx ggf. ebenfalls in Verbindung mit newtxmath, falls auch Mathematik im Dokument vorkommt:

\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 helvet und courier, beispielsweise tgheros und tgcursor aus der tex-gyre-Font-Sammlung.

Auch bei Verwendung dieser Alternativen ist die Verwendung besagter Deklaration notwendig.

Wie Ulrike ebenfalls erwähnt hat, wäre es genau genommen sinnvoll, die fd-Dateien SH1sinha.fd, SH1sinhb.fd, SH1sinhc.fd um Substitutionsregeln zu erweitern, damit diese für b ggf. automatisch bx verwenden. Auch wenn an dem Paket offenbar seit 1996 nichts mehr getan wurde, solltest du einen entsprechenden Feature-Request an Vasantha Saparamadu und Dominik Wujastyk schicken. Schön wäre auch, wenn die beiden dabei auch gleich die Lizenz aller Dateien klarstellen würden. Während nämlich die mf-Dateien unter GPL stehen, ist für die fd-Dateien und die sty-Datei keine Lizenz angegeben. Ob die Datei LICENSE ausreicht, um auch diesen Dateien eine freie Lizenz zu geben, weiß ich nicht.

Entsprechende Zeilen würden für SH1sinha.fd beispielsweise:

\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 sinhb bzw. sinhc statt sinha.

Permanenter link

beantwortet 10 Aug '20, 12:17

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 10 Aug '20, 16:12

Ich finde das recht verwirrend, wie pdflatex seine Schriften handhabt. Dutzende Einzeldateien, seltsame Ansteuerung etc.
Daher der Tip: Besorge Dir doch einfach ttf-Dateien für die Sinhala-Schrift, z.B. iskpota.ttf.

Schau Dir diese iskpota.ttf Datei am besten mit einem Programm wie FontForge an, laut wikipedia ist der Unicodebereich für Sinhala U+0D80 (3456) .... U+0DFF (3583):

alt text

Dann kannst Du z.B. iskpota.ttf (und genauso times.ttf) mit dem fontspec-Paket aktivieren und die Sinhala-Zeichen mit der üblichen Unicodenummer erhalten.
Der Lauf ist dann LuaLatex (nicht pdflatex).
Anders als bei den CJK-Schriften scheint mir Sinhala hier noch relativ überschaubar.

MWE (die o.g. Schriftdatei iskpota.ttf (und times.ttf) muss vorhanden sein!)

alt text

% 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}
Permanenter link

beantwortet 09 Aug '20, 19:32

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 09 Aug '20, 20:23

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.
Ich habe auch 2 Wochen gebraucht bis ich mich durchringen konnte LuaLaTeX zu verwenden.

(09 Aug '20, 21:32) cis
"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. {\SHa\char213a}; nicht etwa durch Unicodenummern, wie z.B. \mysinhalafont\symbol{3461}.
Ansonsten soll aber "Times" die Hauptschrift sein.

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 times.ttf mit Hilfe des fontspec-Paketes und verwende für Sinhala weiterhin das sinhala-Paket.
Kann natürlich sein, dass ich etwas übersehe, aber:
Das scheint zu funktionieren; wenngleich der Lauf dann zwingend LuaLateX (nicht pdflatex) ist.

alt text

% 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}
Permanenter link

beantwortet 10 Aug '20, 12:24

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 10 Aug '20, 12:25

-1

Vielen Dank an alle. Wir haben jetzt zwei Lösungen, die beide funktionieren.

  1. lokales Umdefinieren des Fontshapes von bx auf b in der Präambel der tex-Datei:

    \DeclareFontSeriesDefault[rm]{bf}{bx}

  2. globale Lösung: Ergänzen der drei fd-Dateien des Sinhala-Pakets: Jede Definition eines bx-Fontshapes (6 Coe-Blocks pro fd-Datei) kopieren und in der Kopie das "bx" durch "b" ersetzen (nur in der jeweils ersten Zeile des entsprechenden Blocks, nicht im Namen des Fonts selbst),

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.

Permanenter link

beantwortet 10 Aug '20, 14:34

Sven_B's gravatar image

Sven_B
2715
Akzeptiert-Rate: 0%

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
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×49
×23

gestellte Frage: 07 Aug '20, 19:47

Frage wurde gesehen: 7,232 Mal

zuletzt geändert: 11 Aug '20, 13:57