tud-cd / tudscr

TUD-Script
Other
106 stars 23 forks source link

tudscrfonts und UTF-8 im Mathematikmodus #43

Closed keinstein closed 5 years ago

keinstein commented 5 years ago

Es scheint, dass tudscrfonts die Unicode-Eingabe in LuaLaTeX kaputt macht. Beispiel:

% $Header$
% use lualatex for compilation
\documentclass[british]{beamer}
\usepackage[utf8]{luainputenc}
\mode<presentation>
{
  \usetheme[cd2018,beamerfont]{tud}
  \usepackage{fontspec}
  \usepackage[cdfont=heavy,cdfont=ultrabold]{tudscrfonts}
%  \usecolortheme{tud}
}
\usepackage{babel}
\title[ex]
{Example}

\author
{anon}

\institute[] % (optional, but mostly needed)
{
  Department of Computer Science\\
  Technical University Dresden
}

\begin{document}
\maketitle

\begin{frame}{test}
    \(a \beta γ \delta \Rightarrow\)
\end{frame}
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

Ausgabe: test2.pdf

Erwartet: erwartet.pdf

mrpiggi commented 5 years ago

In welcher Konfiguration sollte das denn laufen? Das hier funktioniert bei mir auch nicht, deshalb ist es schwierig, nach einem Fehler zu suchen.

% $Header$
% use lualatex for compilation
\documentclass{scrreprt}
\usepackage{fontspec}
\begin{document}
a γ b
\(a \beta γ \delta \Rightarrow\)
\end{document}
keinstein commented 5 years ago

Zum Vergleich:

% $Header$
% use lualatex for compilation
\documentclass[british]{beamer}
\usepackage[utf8]{luainputenc}
\mode<presentation>
{
  \iffalse
  \usetheme[cd2018,beamerfont]{tud}
  \usepackage{fontspec}
  \usepackage[cdfont=heavy,cdfont=ultrabold]{tudscrfonts}
  \else
  \usetheme[cd2018]{tud}
  \fi
%  \usecolortheme{tud}
}
\usepackage{babel}
\title[ex]
{Example}

\author
{anon}

\institute[] % (optional, but mostly needed)
{
  Department of Computer Science\\
  Technical University Dresden
}

\begin{document}
\maketitle

\begin{frame}{test}
    \(a \beta γ \delta \Rightarrow\)
\end{frame}
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

bzw.

% $Header$
% use lualatex for compilation
\documentclass{scrreprt}
\usepackage[utf8]{luainputenc}
\usepackage{unicode-math}
\usepackage{fontspec}
\begin{document}
a γ b
\(a \beta γ \delta \Rightarrow\)
\end{document}
mrpiggi commented 5 years ago

Der erste Schuss funktioniert schon einmal für den Textmodus

% $Header$
% use lualatex for compilation
\documentclass{scrreprt}
\usepackage{tudscrfonts}
\usepackage{fontspec}
\usepackage{unicode-math}
\begin{document}
a γ b

\(a \beta γ \delta \Rightarrow\)
\end{document}

Und für die Matheschriften, wobei ich nicht sagen kann, was da alles Probleme bereiten könnte, weil Open Sans nun mal keine OTF-Features für Mathematikschriften enthält.

% $Header$
% use lualatex for compilation
\documentclass{scrreprt}
\usepackage[cdmath=false]{tudscrfonts}
\usepackage{fontspec}
% \usepackage{amsmath}
\usepackage{unicode-math}
% notwendig, weil tudscrfonts das Setup für Schriften verzögert
\AtBeginDocument{
  \setmathfont{XITS Math}
  \setmathfont[range={up}]{OpenSans-Light}
  \setmathfont[range={it}]{OpenSans-LightItalic}
}
\begin{document}
a γ b

\(a \beta γ \delta \Rightarrow\)
\end{document}

Anmerkung am Rande: Das Paket luainputenc sollte nicht mehr verwendet werden, da LaTeX2e mittlerweile standardmäßig Unicode als Eingabekodierung verwendet. Das Steht auch direkt zu Beginn der Dokumentation des Paketes, welches aktuell in einer Version von 2010/11/19 vorliegt.

keinstein commented 5 years ago

luainputenc ist in den Beispielen aus Kompatbilitätsgründen mit älteren TeX-Distributionen. Ich müsste lügen, aber ich bin mir sicher, ich habe mit LuaTeX deutlich nach 2010 angefangen. Und da brauchte ich das noch.

Gut und wo liegt jetzt genau der Vorteil, tudscrfonts zu verwenden?

Die enstprechenden range-Anweisungen sind ja schon in beamerfontthemetud.sty drin. Soweit ich das verstanden habe, ist deren Aufgabe, die entsprechenden OTF-Features durch normaltext-Zeichen zu ersetzen (ich finde gerade die Doku nicht). Sprich: Wenn die OTF-Tabelle nicht da ist, bauen wir uns halt eine. Für Alphabete sollte das relativ einfach Font-unabhängig zu machen sein. Dann hat man auch keinen Ärger mit Ligaturen, weil die sinnvollerweise nicht mit übernommen werden. Interessant werden die Mathe-OTF-Tabellen für Buchstaben erst dann, wenn die Buchstaben im Mathe-Modus anders aussehen, als im Text-Modus. Das ist hier aber nicht möglich.

mrpiggi commented 5 years ago

luainputenc ist in den Beispielen aus Kompatbilitätsgründen mit älteren TeX-Distributionen. Ich müsste lügen, aber ich bin mir sicher, ich habe mit LuaTeX deutlich nach 2010 angefangen. Und da brauchte ich das noch.

Ab und an ändert sich doch ein wenig im LaTeX-Universum und ich persönlich finde es immer gut, wenn ich von außerhalb darauf aufmerksam gemacht werde. Sollte also bloß ein Hinweis sein.

Gut und wo liegt jetzt genau der Vorteil, tudscrfonts zu verwenden?

Das Paket war und ist von mir gedacht, die Verwendung der Schriften für das CD möglichst universell und flexibel auch für andere Klassen, Pakete etc. zu gestalten. Dabei habe ich versucht Wert darauf zu legen, möglichst kompatibel zu pdfLaTeX und LuaLaTeX repsektive XeLaTex zu sein. Das Paket unterstützt alle Engines wohingegen beamerfontthemetud.sty nicht mit pdfLaTeX nutzbar ist. Ich halte es auch für ziemlich ineffektiv, wenn jeder seine eigenen Lösungen bastelt anstatt auf bereits vorhandene Möglichkeiten zurückzugreifen.

Das Paket stellt alle möglichen Optionen bereit, um die Schriften selbst möglichst flexibel anzuwenden und auch noch einfach innerhalb des Dokumentes anpassen zu können. Hier mal ein kleines Beispiel:

% use pdflatex or lualatex for compilation
\documentclass[ngerman,cdfont=heavy]{scrreprt}
\usepackage{tudscrfonts}
\ifpdftex{
  \usepackage[T1]{fontenc}
}{
  \usepackage{fontspec}
}
\usepackage{babel}
\usepackage[math]{blindtext}

\begin{document}
\blindtext

1234567890

\TUDoption{cdfont}{light,oldstylefigures,upgreek}

\blindtext

1234567890

\end{document}

Wobei mir dabei gerade wieder einfällt, dass ich für die jeweils eingesetzte Schriftstärke noch variable Matheversionen definieren wollte... tudscrfontstest.pdf

keinstein commented 5 years ago

Also wenn pdfLaTeX verwendet wird, lädt beamerfontthemetud.sty das Paket opensans. Also gehen tut es schon, halt mit Einschränkungen im Mathefont.

Um meine Frage zu präzisieren: Warum baust Du das opensans-Paket nach, anstatt einen Wrapper zu bauen, den man später upstream integrieren kann. So haben mehr Leute was von Deinen Font-Kunststücken. Bei Univers war das aus Copyright-Gründen nicht sinnvoll, aber hier halte ich das für sehr sinnvoll. Beim Wrapper sieht man auch deutlicher, wo der Unterschied liegt.

Der andere Teil der Frage richtet sich an den Unicode-Support. Ich benutze gerade im Mathemodus viel UTF-8, weil dann einiges einfacher zu lesen ist. Wenn ich dafür das Font-Setup komplett neu machen muss, was bleibt dann von tudscrfonts übrig?

mrpiggi commented 5 years ago

Dass beamerfonttheme nicht mit pdflatex will, ist ein anderer Bug. Ich habe gerade keine Idee, wer da fontspec reinzieht. Theoretisch dürfte das nicht passieren.

Sorry, mein Fehler.

Um meine Frage zu präzisieren: Warum baust Du das opensans-Paket nach, anstatt einen Wrapper zu bauen, den man später upstream integrieren kann. So haben mehr Leute was von Deinen Font-Kunststücken. Bei Univers war das aus Copyright-Gründen nicht sinnvoll, aber hier halte ich das für sehr sinnvoll. Beim Wrapper sieht man auch deutlicher, wo der Unterschied liegt.

Der Ursprung des Paketes tudscrfonts liegt ja bei den alten Schriften. Ich baue das Paket opensans nicht nach (das sind nur etwas mehr als 100 Zeilen Quelltext) sondern lade die Schriften aus dem Bundle derart, dass ich diese mittels interner Befehle von TUD-Script nutzen und dabei ziemlich einfach auch auf Univers oder eine vom Anwender geladene Schriftart wechseln kann. Alternativ könnte ich opensans laden und müsste dann ziemlich viele der internen Befehle auf die TUD-Script-Befehle mappen. Das wäre wesentlich aufwendiger und fehleranfälliger.

Ich hatte vor einer Weile schon einmal begonnen, an einem Paket opensans-math zu arbeiten. Allerdings habe ich leider damit aufhören oder es zumindest erst einmal pausieren müssen, weil die Schrift nun mal nicht für den mathematischen Satz gedacht ist. Bis auf griechische Buchstaben und ein paar Operatoren ist da eigentlich nicht viel drin. Und ich habe keine geeignete Schrift gefunden, die diese Zeichen enthält und sich mit Open Sans kombinieren lässt. Ich hatte auch Kontakt zu den Entwicklern der Open Sans, die momentan gerade ziemlich massiv überholt wird (https://github.com/laerm0/opensans). Allerdings haben die gerade allerhand zu tun, sodass eine Erweiterung um notwendige Glyphen (bspw. Pfeile jeglicher Art, alle möglichen Symbole, größenveränderliche Operatoren für Wurzeln und Integrale etc.) wohl nicht so bald passieren wird.

Ich benutze gerade im Mathemodus viel UTF-8, weil dann einiges einfacher zu lesen ist. Wenn ich dafür das Font-Setup komplett neu machen muss, was bleibt dann von tudscrfonts übrig?

Was meinst denn mit neu machen? Du kannst dein bisheriges Setup der Mathematikschriften doch einfach nach dem Laden von tudscrfonts.sty ausführen. So hättest du auch bei der Verwendung von pdfLaTeX bspw. eine rudimentäre Unterstützung für den Mathematikmodus. Weiterhin müsstest du dich nicht um die Schriften für den Fließtext kümmern und die Optionen für die Auswahl der Schriftstärke mit cdfont= oder auch die gezielte Verwendung eines bestimmten Schriftschnitts mit \textcd bzw. \cdfont wären möglich.

Aber du ja machen was du willst, wenn du tudscrfonts.sty nicht verwenden möchtest, dann sei es so. Ich wollte dir lediglich ermöglichen, etwas Quelltext einzusparen und im Zweifel bei Problemen mit dem Finger auf mich zeigen zu können. Du hattest tudscrfonts.sty ja auch für die Univers verwendet und ich wollte lediglich darauf hinweisen, dass das Paket mittlerweile auch Open Sans spricht.