Tenía un tex
archivo que básicamente comenzaba de la siguiente manera
\documentclass[
a4paper, hyperref, amsmath, headinclude=true, ngerman, final
]{scrbook}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{graphix}
Convertí esto en mi propio archivo de clase 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}
El tex
archivo se reduce a
\documentclass{kitbook}
Pero de repente recibo una advertencia de LaTeX que indica que las opciones hyperref
no amsmath
se headinclude=true
utilizan. Babel da el error de que no se especifica ningún idioma y la clase final
utiliza la opción scrbook
, pero no el graphix
paquete.
Parece que hay una diferencia en la semántica de \documentclass
y \LoadClass
. Las opciones que se dan \documentclass
se hacen globales y se pasan implícitamente a todos los paquetes. Pero las opciones dadas \LoadClass
solo las usa la clase misma. Ésa es la razón por la que babel
no lo consigue ngerman
y así sucesivamente.
¿Hay alguna forma de hacer que las opciones sean globales en un archivo de clase personalizado?
Especialmente, veo un problema importante. La opción headinclude=true
no la utiliza ningún paquete que esté cargado explícitamente. (Creo que lo usa y typearea
lo carga en sí scrbook
). Por supuesto, podría usarlo, \PassOptionToPackage{headinclude=true}{typearea}
pero el problema con este enfoque es que necesito averiguar qué paquete usa qué opción para cada opción y paquete y luego llamar \PassOptionToPackage
explícitamente. Este enfoque no es muy prometedor.