在自定义类文件中设置全局选项(并将其传递给所有包)

在自定义类文件中设置全局选项(并将其传递给所有包)

我有一个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}

-filetex简化为

\documentclass{kitbook}

但是突然我收到一个 LaTeX 警告,提示选项hyperrefamsmathheadinclude=true未使用。Babel 给出错误,提示未指定语言,并且该选项final确实由类使用,scrbook但未由graphix包使用。

\documentclass和的语义似乎有所不同\LoadClass。 给 的选项\documentclass是全局的,并隐式传递给所有包。 但给 的选项仅由类本身使用。 这就是无法获取等的\LoadClass原因。babelngerman

有没有办法在自定义类文件中将选项变为全局选项?

尤其是,我发现一个主要问题。headinclude=true任何明确加载的包都没有使用该选项。(我相信它被使用,typearea而它本身是由加载的scrbook。)当然,我可以使用,\PassOptionToPackage{headinclude=true}{typearea}但这种方法的问题在于,我需要找出每个选项和包的哪个包使用了哪个选项,然后\PassOptionToPackage明确调用。这种方法不是很有前途。

相关内容