Legen Sie die globale Option fest (und übergeben Sie sie an alle Pakete) in einer benutzerdefinierten Klassendatei

Legen Sie die globale Option fest (und übergeben Sie sie an alle Pakete) in einer benutzerdefinierten Klassendatei

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=trueunbenutzt sind. Babel gibt den Fehler aus, dass keine Sprache angegeben ist und die Option zwar von der Klasse, aber nicht vom Paket finalverwendet wird .scrbookgraphix

Es scheint, dass es einen Unterschied in der Semantik von \documentclassund gibt \LoadClass. Optionen, die an gegeben werden, \documentclasswerden global gemacht und implizit an alle Pakete weitergegeben. Aber Optionen, die an gegeben werden, \LoadClasswerden nur von der Klasse selbst verwendet. Das ist der Grund, warum babelnicht erhält ngermanund 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=truewird von keinem Paket verwendet, das explizit geladen wird. (Ich glaube, sie wird von verwendet, typeareadas 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 \PassOptionToPackageexplizit aufrufen muss. Dieser Ansatz ist nicht sehr vielversprechend.

verwandte Informationen