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
。Babelamsmath
はheadinclude=true
、言語が指定されていないというエラーを返し、オプションはクラスfinal
では使用されているもののscrbook
、パッケージでは使用されていませんgraphix
。
\documentclass
との意味に違いがあるようです\LoadClass
。 に与えられたオプションは\documentclass
グローバルになり、暗黙的にすべてのパッケージに渡されます。 しかし、 に与えられたオプションはクラス自体によってのみ使用されます。 これが、 が などを取得しない\LoadClass
理由です。babel
ngerman
カスタム クラス ファイルでオプションをグローバルにする方法はありますか?
特に、大きな問題が 1 つあります。オプションは、headinclude=true
明示的にロードされるどのパッケージでも使用されません。(それtypearea
自体が によってロードされることによって使用されていると思いますscrbook
。) もちろん、 を使用することもできます\PassOptionToPackage{headinclude=true}{typearea}
が、このアプローチの問題は、すべてのオプションとパッケージに対してどのパッケージがどのオプションを使用するかを調べて、\PassOptionToPackage
明示的に呼び出す必要があることです。このアプローチはあまり期待できません。