tex
기본적으로 다음과 같이 시작된 -file이 있습니다 .
\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}
-file 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
명시적으로 호출해야 한다는 것입니다. 이 접근 방식은 그다지 유망하지 않습니다.