Verschiedene Schriftarten innerhalb und außerhalb des Mathematikmodus

Verschiedene Schriftarten innerhalb und außerhalb des Mathematikmodus

Bei der Verarbeitung der einfachen Datei:

\documentclass{report}

\begin{document}
1234567890

$1234567890$
\end{document}

Mit pdflatexeinem erhalten Sie ein PDF mit nur einer Schriftart (CMR10). Verwenden Sie jedoch bei der Verarbeitung mit xelatexoder lualatexdem erstellten PDF Latin Modern Roman 10 außerhalb des Mathematikmodus und CMR10 darin.

Was sind die Gründe dafür?

Antwort1

Seit TeX Live 2018 ist LaTeX nun standardmäßig UTF-8, da die „Unicode-Revolution“ abgeschlossen ist 1\usepackage[utf8]{inputenc} . Dies macht die Hinzufügung bei der Verwendung von pdfLaTeX überflüssig .

Die UTF-8-Unterstützung in pdfLaTeX ist jedoch unecht und Sie können nicht erwarten, eine sinnvolle Ausgabe zu erhalten, wenn Sie beliebige UTF-8-Zeichen in die Eingabe einfügen, da die zugrunde liegende pdfTeX-Engine von Natur aus auf die 8-Bit-Kodierung beschränkt ist.

Bei Xe/LuaTeX ist das ganz anders. Diese Engines unterstützen standardmäßig UTF-8 2 . Traditionelle TeX-Schriftarten sind in der Anzahl der angebotenen Glyphen sehr eingeschränkt 3 . Dies reicht definitiv nicht aus, um UTF-8 zu beschreiben, daher muss die Schriftart auch den gesamten UTF-8-Bereich abdecken 4 . Zu diesem Zweck wurde die TU-Kodierung eingeführt.

Standardmäßig lädt LaTeX die Schriftartfamilie Computer Modern (CM). Die Schriftart CMR10 ist in der TU-Kodierung nicht verfügbar (und wird es auch nie sein), daher wird stattdessen ihr nächster Verwandter Latin Modern Roman 10 geladen.

Nun bleibt die Frage, warum Latin Modern nicht im Mathematikmodus verwendet wird. Das liegt daran, dass die Dinge im Mathematikmodus etwas komplizierter sind. Das traditionelle Setup bestand darin, verschiedene Familien und Befehle wie \mathbf, \mathcal, usw. in eine andere Familie umzuschalten. Dies ist in Unicode nicht mehr möglich, da alle Symbole aus einer einzigen Schriftart stammen. Daher funktioniert der Ansatz des Familienwechsels nicht mehr und muss durch ein viel komplexeres System ersetzt werden, das Mathematikcodes hin und her tauscht. Dies ist im unicode-mathPaket implementiert. Sie werden auch feststellen, warum dies problematisch ist, da unicode-mathTeX mit dem Paket plötzlich viel langsamer ist, da Tausende von Mathematikcodes ständig neu zugewiesen werden müssen. Aus diesem Grund wird derzeit die standardmäßige OML/OMS-Kodierung beibehalten.


1 Heutzutage speichert jeder seine Dateien in UTF-8 und die meisten Programme verstehen UTF-8. Denken Sie nur an Emojis (die gibt es überall). Sie sind Teil von UTF-8, also muss alles, was Emojis anzeigen kann, UTF-8 unterstützen.
2 Tatsächlich wird LuaTeX Ihre Datei ablehnen, wenn sie nicht UTF-8 ist.
3 Die T1-Kodierung kann nur 256 Glyphen kodieren.
4 Ob die Schriftart die erforderliche Glyphe hat, ist eine andere Frage.

Antwort2

Die Einrichtung der Schriftart für Text und Mathematik sind in TeX völlig getrennte Aufgaben – bei Textschriftarten geht es um Dinge wie Akzentzeichen und Silbentrennung, bei Mathematikschriftarten um viele Symbole und die korrekte Platzierung von hoch- und hochgestellten Zeichen.

Ihr Beispiel verwendet nur wenige Glyphen, die in pdftex aus derselben Schriftart übernommen werden können. Wenn Sie jedoch beispielsweise ein Minus (-) oder Zeichen (abc) hinzufügen, sind die verwendeten Schriftarten innerhalb und außerhalb der Mathematik unterschiedlich. Und wenn Sie für den Text auf die empfohlene T1-Kodierung umstellen, \usepackage[T1]{fontenc}gibt es sogar Unterschiede für die Zahlen.

Für die Unicode-Engines gibt es bereits im Standard-Setup einen Unterschied, da die Verwendung einer Unicode-Schriftart als Textschriftart mehr oder weniger obligatorisch ist, um Akzentzeichen und Silbentrennung richtig zu machen (siehe z. B.https://tex.stackexchange.com/a/470987/2388). Anfang 2017 hat der LaTeX-Kernel daher den Standard für diese Engines geändert, sodass Benutzer nicht mehr gezwungen waren, die Fontspec zu laden.

In der Mathematik sind Silbentrennung und Akzentzeichen nicht wirklich relevant, daher funktioniert das alte Mathematik-Setup problemlos mit der Unicode-Engine. Aber selbst wenn das Mathematik-Setup geändert wird, um eine Unicode-Schriftart zu verwenden, wäre diese nicht dieselbe wie die Textschriftart, sondern z. B. moderne lateinische Mathematik.

verwandte Informationen