Eu tinha um tex
arquivo que basicamente começava da seguinte maneira
\documentclass[
a4paper, hyperref, amsmath, headinclude=true, ngerman, final
]{scrbook}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{graphix}
Eu converti isso em meu próprio arquivo de classe personalizado
\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}
O tex
-file é reduzido para
\documentclass{kitbook}
Mas de repente recebo um aviso do LaTeX de que as opções hyperref
, amsmath
, headinclude=true
não são utilizadas. Babel apresenta o erro de que nenhum idioma foi especificado e a opção final
é de fato usada pela scrbook
classe, mas não pelo graphix
pacote.
Parece que há uma diferença na semântica de \documentclass
e \LoadClass
. As opções fornecidas a \documentclass
são tornadas globais e passadas implicitamente para todos os pacotes. Mas as opções fornecidas \LoadClass
são usadas apenas pela própria classe. Essa é a razão pela qual babel
não consegue ngerman
e assim por diante.
Existe alguma maneira de tornar as opções globais em um arquivo de classe personalizado?
Especialmente, vejo um grande problema. A opção headinclude=true
não é usada por nenhum pacote carregado explicitamente. (Acredito que seja usado por typearea
ser carregado por scrbook
.) Claro, eu poderia usar, \PassOptionToPackage{headinclude=true}{typearea}
mas o problema com essa abordagem é que preciso descobrir qual pacote usa qual opção para cada opção e pacote e então chamar \PassOptionToPackage
explicitamente. Esta abordagem não é muito promissora.