カスタム クラス ファイルでグローバル オプションを設定し (すべてのパッケージに渡す)

カスタム クラス ファイルでグローバル オプションを設定し (すべてのパッケージに渡す)

tex基本的に次のように始まるファイルがありました

\documentclass[
  a4paper, hyperref, amsmath, headinclude=true, ngerman, final
]{scrbook}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{graphix}

これを自分のカスタムクラスファイルに変換しました

\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}

-ファイルtexは次のように縮小されます

\documentclass{kitbook}

しかし突然、オプション 、 が使用されていないという LaTeX 警告が表示されますhyperref。Babelamsmathheadinclude=true、言語が指定されていないというエラーを返し、オプションはクラスfinalでは使用されているもののscrbook、パッケージでは使用されていませんgraphix

\documentclassとの意味に違いがあるようです\LoadClass。 に与えられたオプションは\documentclassグローバルになり、暗黙的にすべてのパッケージに渡されます。 しかし、 に与えられたオプションはクラス自体によってのみ使用されます。 これが、 が などを取得しない\LoadClass理由です。babelngerman

カスタム クラス ファイルでオプションをグローバルにする方法はありますか?

特に、大きな問題が 1 つあります。オプションは、headinclude=true明示的にロードされるどのパッケージでも使用されません。(それtypearea自体が によってロードされることによって使用されていると思いますscrbook。) もちろん、 を使用することもできます\PassOptionToPackage{headinclude=true}{typearea}が、このアプローチの問題は、すべてのオプションとパッケージに対してどのパッケージがどのオプションを使用するかを調べて、\PassOptionToPackage明示的に呼び出す必要があることです。このアプローチはあまり期待できません。

関連情報