키-값 클래스 옵션을 사용됨으로 표시

키-값 클래스 옵션을 사용됨으로 표시

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}

이렇게 하면 scrartcllike 에 대한 몇 가지 기본 인수를 제공 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그 앞으로 옮겨져야만 했습니다.

관련 정보