我有一個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
, amsmath
,headinclude=true
未使用。 Babel 給的錯誤是沒有指定語言,而且該選項final
確實由類別使用scrbook
,但不是由graphix
套件使用。
看來\documentclass
和的語意是有差別的\LoadClass
。提供的選項\documentclass
是全域的並隱式傳遞給所有套件。但給定的選項\LoadClass
只能由類別本身使用。這就是為什麼babel
沒有得到ngerman
等等的原因。
有沒有辦法在自訂類別檔案中使選項全域化?
特別是,我看到一個主要問題。headinclude=true
任何明確載入的套件都不會使用該選項。 (我相信它typearea
本身是由 加載的scrbook
。)當然,我可以使用,\PassOptionToPackage{headinclude=true}{typearea}
但這種方法的問題是我需要找出哪個包對每個選項和包使用哪個選項,然後\PassOptionToPackage
明確調用。這種方法不太有前景。