scrartcl
나는 다음과 같은 방법으로 수업 에 대한 래퍼를 작성했습니다 .
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mycls}[2012/08/23]
\RequirePackage{kvoptions}
\DeclareStringOption{title}
\DeclareStringOption{subtitle}
\ProcessKeyvalOptions*
\PassOptionsToClass{fleqn, openbib, headings=big, DIV=12}{scrartcl}
\LoadClassWithOptions{scrartcl}
이렇게 하면 scrartcl
like 에 대한 몇 가지 기본 인수를 제공 DIV=12
하고 전달하여 이를 재정의할 수 있습니다.
\documentclass{title=mytitle, subtitle=thesubtitle, DIV=10}
내가 가진 문제는 srcartcl
다른 옵션을 title=mytitle
사용되지 않은 것으로 표시한다는 것입니다.
LaTeX 경고: 사용되지 않은 전역 옵션
그것은 확실히 거짓이다. 나는 옵션을 설정 해제하려고 시도했다.
\DisableKeyvalOptions{mycls}{title}
바로 뒤에 있었지만 \ProcessKeyvalOptions*
작동하지 않았습니다. 해당 옵션을 사용된 것으로 표시하려면 어떻게 해야 합니까?
답변1
(A.4.8)을 신선하고 철저하게 살펴보고 The LaTeX Companion
문제를 직접 해결했습니다.
내가 이전에 가정했던 것에도 불구하고, \PassOptionsToClass
그리고 \LoadClassWithOptions
함께 일하지 않습니다. 요점은 \LoadClassWithOptions
현재 클래스가 얻은 것과 정확히 동일한 인수를 전달하는 것입니다. 따라서 여기서 전환하면 \LoadClass
이제 기본 옵션이 사용됩니다.
불행하게도 이제 사용자가 제공한 전역 옵션은 기본 옵션을 덮어쓰지 않습니다. 따라서 수동으로 클래스에 전달해야 합니다. 여기에는 클래식과 동등한 기능 kvoptions
이 제공됩니다 . 전체적으로 결과는 다음과 같습니다.\DeclareDefaultOption
\DeclareOption*
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mycls}[2012/08/23]
\RequirePackage{kvoptions}
\DeclareStringOption{title}
\DeclareStringOption{subtitle}
\PassOptionsToClass{fleqn, openbib, headings=big, DIV=12}{scrartcl}
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\ProcessKeyvalOptions*
\LoadClass{scrartcl}
따라서 에서 \ProcessKeyvalOptions*
와 같은 알 수 없는 옵션이 발견 될 때마다 DIV=10
이를 에 전달하여 scrartcl
프로세스의 기본값을 덮어씁니다. 그렇기 때문에 \PassOptionsToClass
그 앞으로 옮겨져야만 했습니다.