In einer eigenen Dokumentenklasse möchte ich einen Befehl zur vereinfachten Verwendung einer bestimmten Schriftart definieren (hier: TeX Gyre Chorus, bekannt als Zapf Chancery).

Bei Verwendung von pdflatex funktioniert das folgendermaßen:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\begin{filecontents*}{meineklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meineklasse}
\ProcessOptions\relax
\newcommand*{\zapf}[1]{{\fontfamily{qzc}\selectfont #1}}
\LoadClass{scrartcl}
\end{filecontents*}
\documentclass{meineklasse}
\begin{document}
normaler Text
\zapf{Text in TeX Gyre Chorus}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dieses Dokument lässt sich zwar auch mit xelatex compilieren, dann erscheint die zweite Zeile aber nicht in der gewünschten, sondern in der Standard-Schriftart.

Das zur Schriftauswahl mit xelatex vorgesehene Paket fontspec bietet einen gleichnamigen Befehl zur Schriftauswahl an. Das Folgende funktioniert jedoch nicht:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\begin{filecontents*}{meinexeklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meinexeklasse}
\ProcessOptions\relax
\RequirePackage{fontspec}
\newcommand*{\zapf}[1]{{\fontspec{texgyrechorus-mediumitalic.otf} #1}}
\LoadClass{scrartcl}
\end{filecontents*}
\documentclass{meinexeklasse}
\begin{document}
normaler Text
\zapf{Text in TeX Gyre Chorus}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die ausgegebenene Fehlermeldung ist „The font size command \normalsize is not defined: there is probably something wrong with the class file.

Was muss ich ändern?

gefragt 07 Mär '17, 23:54

Cletus's gravatar image

Cletus
1.6k75866
Akzeptiert-Rate: 75%

bearbeitet 07 Mär '17, 23:55


Das Problem ist relativ trivial: Pakete sind normalerweise dafür ausgelegt nach der Klasse geladen zu werden. So erwartet auch fontspec, dass die Klasse bereits Basiseinstellungen und -definitionen wie die von \normalsize vorgenommen hat. Du lädst das Paket fontspec aber bereits vor der Klasse scrartcl, die diese Einstellungen für deine Wrapper-Klasse vornehmen soll. Also musst du schlicht das Laden der Klasse vorziehen.

Ich empfehle allerdings dringend, vor der Verwendung von fontspec innerhalb einer Klasse zu prüfen, ob auch wirklich XeTeX oder LuaTeX verwendet wird:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\begin{filecontents*}{meinexeklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meinexeklasse}
\ProcessOptions\relax
\LoadClass{scrartcl}
\RequirePackage{ifxetex,ifluatex}
\ifnum 0=\ifxetex 1\else\ifluatex 1\else 0\fi\fi\relax
\newcommand*{\zapf}[1]{{\fontfamily{qzc}\selectfont #1}}
\else
\RequirePackage{fontspec}
\newcommand*{\zapf}[1]{{\fontspec{texgyrechorus-mediumitalic.otf} #1}}
\fi
\end{filecontents*}
\documentclass{meinexeklasse}
\begin{document}
normaler Text
\zapf{Text in TeX Gyre Chorus}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Nebenbei bemerkt würde ich den Font – zumindest bei Verwendung von LuaLaTeX statt XeLaTeX oder bei XeLaTeX wenn der Font als Systemfont verfügbar ist – eher über den Namen als über den Dateinamen laden und mit \newfontfamily eine eigene Familie für den Font definieren. Zu den Vorteilen sei auf die fontspec-Anleitung verwiesen.

Permanenter link

beantwortet 08 Mär '17, 08:18

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 09 Mär '17, 12:24

Das ist alles nachvollziehbar, aber das Laden einer Schrift der TeX-Distribution über den Fontnamen statt den Dateinamen ist mit XeLaTeX meines Wissens nicht möglich.

(09 Mär '17, 11:39) Cletus

@Cletus: Das stimmt nicht generell. Bei mir sind alle OTF-Fonts der TeX-Distribution gleichzeitig Systemfonts. Aber das wäre eigentlich eine andere Frage. Ist ja auch nur eine Nebenbemerkung.

(09 Mär '17, 12:12) saputello
Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×14
×13
×10
×4

gestellte Frage: 07 Mär '17, 23:54

Frage wurde gesehen: 7,407 Mal

zuletzt geändert: 09 Mär '17, 12:41

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×