我有一个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 警告,提示选项hyperref
、amsmath
、headinclude=true
未使用。Babel 给出错误,提示未指定语言,并且该选项final
确实由类使用,scrbook
但未由graphix
包使用。
\documentclass
和的语义似乎有所不同\LoadClass
。 给 的选项\documentclass
是全局的,并隐式传递给所有包。 但给 的选项仅由类本身使用。 这就是无法获取等的\LoadClass
原因。babel
ngerman
有没有办法在自定义类文件中将选项变为全局选项?
尤其是,我发现一个主要问题。headinclude=true
任何明确加载的包都没有使用该选项。(我相信它被使用,typearea
而它本身是由加载的scrbook
。)当然,我可以使用,\PassOptionToPackage{headinclude=true}{typearea}
但这种方法的问题在于,我需要找出每个选项和包的哪个包使用了哪个选项,然后\PassOptionToPackage
明确调用。这种方法不是很有前途。