キー値クラスオプションを使用済みとしてマークする

キー値クラスオプションを使用済みとしてマークする

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この方法では、いくつかのデフォルト引数を提供し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を の前に移動する必要がありました。

関連情報