Ich hatte eine tex
-Datei, die im Wesentlichen wie folgt begann
\documentclass[
a4paper, hyperref, amsmath, headinclude=true, ngerman, final
]{scrbook}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{graphix}
Ich habe dies in meine eigene benutzerdefinierte Klassendatei konvertiert
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{kitbook}[2015/04/23 KITbook]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=KIT,prefix=KIT@}
...
\ProcessKeyvalOptions*\relax
\LoadClass[
a4paper, hyperref, amsmath, headinclude=true, ngerman, final
]{scrbook}
\RequirePackage{babel}
\RequirePackage{ntheorem}
\RequirePackage{graphix}
Die tex
-Datei wird reduziert auf
\documentclass{kitbook}
Doch plötzlich erhalte ich eine LaTeX-Warnung, dass die Optionen hyperref
, amsmath
, headinclude=true
unbenutzt sind. Babel gibt den Fehler aus, dass keine Sprache angegeben ist und die Option zwar von der Klasse, aber nicht vom Paket final
verwendet wird .scrbook
graphix
Es scheint, dass es einen Unterschied in der Semantik von \documentclass
und gibt \LoadClass
. Optionen, die an gegeben werden, \documentclass
werden global gemacht und implizit an alle Pakete weitergegeben. Aber Optionen, die an gegeben werden, \LoadClass
werden nur von der Klasse selbst verwendet. Das ist der Grund, warum babel
nicht erhält ngerman
und so weiter.
Gibt es eine Möglichkeit, Optionen in einer benutzerdefinierten Klassendatei global zu machen?
Insbesondere sehe ich ein großes Problem. Die Option headinclude=true
wird von keinem Paket verwendet, das explizit geladen wird. (Ich glaube, sie wird von verwendet, typearea
das selbst von geladen wird scrbook
.) Natürlich könnte ich verwenden, \PassOptionToPackage{headinclude=true}{typearea}
aber das Problem bei diesem Ansatz ist, dass ich für jede Option und jedes Paket herausfinden muss, welches Paket welche Option verwendet, und dann \PassOptionToPackage
explizit aufrufen muss. Dieser Ansatz ist nicht sehr vielversprechend.