![在自定义类文件中设置全局选项(并将其传递给所有包)](https://linux22.com/image/309977/%E5%9C%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B1%BB%E6%96%87%E4%BB%B6%E4%B8%AD%E8%AE%BE%E7%BD%AE%E5%85%A8%E5%B1%80%E9%80%89%E9%A1%B9%EF%BC%88%E5%B9%B6%E5%B0%86%E5%85%B6%E4%BC%A0%E9%80%92%E7%BB%99%E6%89%80%E6%9C%89%E5%8C%85%EF%BC%89.png)
我有一个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
明确调用。这种方法不是很有前途。