在自訂類別檔案中設定全域選項(並將其傳遞給所有套件)

在自訂類別檔案中設定全域選項(並將其傳遞給所有套件)

我有一個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明確調用。這種方法不太有前景。

相關內容