사용자 정의 클래스 파일에서 전역 옵션 설정(및 모든 패키지에 전달)

사용자 정의 클래스 파일에서 전역 옵션 설정(및 모든 패키지에 전달)

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명시적으로 호출해야 한다는 것입니다. 이 접근 방식은 그다지 유망하지 않습니다.

관련 정보