Marcar opciones de clase clave-valor como utilizadas

Marcar opciones de clase clave-valor como utilizadas

He escrito un contenedor para la scrartclclase de la siguiente manera:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mycls}[2012/08/23]

\RequirePackage{kvoptions}

\DeclareStringOption{title}
\DeclareStringOption{subtitle}

\ProcessKeyvalOptions*

\PassOptionsToClass{fleqn, openbib, headings=big, DIV=12}{scrartcl}
\LoadClassWithOptions{scrartcl}

De esta manera puedo proporcionar algunos argumentos predeterminados para scrartclme gusta DIV=12y aun así anularlos pasando

\documentclass{title=mytitle, subtitle=thesubtitle, DIV=10}

El problema que tengo, es que srcartclmarca las otras opciones, por ejemplo, title=mytitlecomo no utilizadas .

Advertencia de LaTeX: opciones globales no utilizadas

lo cual es ciertamente falso. Intenté desarmar las opciones con

\DisableKeyvalOptions{mycls}{title}

justo después \ProcessKeyvalOptions*, pero eso no funcionó. ¿Cómo puedo marcar esas opciones como utilizadas?

Respuesta1

Eché un vistazo nuevo y exhaustivo a The LaTeX Companion(A.4.8) y resolví el problema yo mismo.

A pesar de lo que supuse anteriormente, \PassOptionsToClassya \LoadClassWithOptionsno trabajan juntos. El objetivo \LoadClassWithOptionses pasar exactamente los mismos argumentos que obtuvo la clase actual. Así que aquí, cambiar a \LoadClassahora tomará las opciones predeterminadas.

Desafortunadamente, ahora el usuario con opciones globales no sobrescribirá las predeterminadas. Por lo tanto, deben pasarse manualmente a la clase. Aquí kvoptionsse ofrece \DeclareDefaultOptioncomo equivalente al clásico \DeclareOption*. Con todo, el resultado es el siguiente:

\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}

Entonces, cada vez que \ProcessKeyvalOptions*ve una opción desconocida, como DIV=10, se la pasa a scrartcl, sobrescribiendo cualquier valor predeterminado en el proceso. Por eso \PassOptionsToClasshubo que colocarlo delante.

información relacionada