Wie kann ich in einer benutzerdefinierten Klasse einige Optionen erzwingen und andere verwerfen?

Wie kann ich in einer benutzerdefinierten Klasse einige Optionen erzwingen und andere verwerfen?

Ich erstelle eine Dokumentklasse basierend auf memoir. Dazu erlaube ich die Übergabe mehrerer Klassenoptionen an meinen Code. Optionen, die nicht erkannt werden, werden einfach an übergeben memoir.

Meine Frage ist nun: Wie kann ich erzwingen, a4paperdass auch der Benutzer meiner Klasse letterpaperals Option übergibt? Anders ausgedrückt: Gibt es eine Möglichkeit, die anderen Dokumentgrößenoptionen ( letterpaper, a5paper, ebook, usw.) zu deaktivieren und gleichzeitig die Weitergabe von Optionen wie msoder weiterhin möglich zu halten fleqn?

Antwort1

Ich schlage Folgendes vor:

% declare options that should be passed to your code
% ...

% now specify which memoir options should not be used, using the following helper macro
\newcommand\warningoptionnotused@myclass
{%
  \OptionNotUsed%
  \ClassWarning{myclass}%
  {%
    Option '\CurrentOption'\space is incompatible with class
    `myclass' and will be ignored.
  }
}
\DeclareOption{letterpaper}{\warningoptionnotused@myclass}
\DeclareOption{a5paper}{\warningoptionnotused@myclass}
\DeclareOption{ebook}{\warningoptionnotused@myclass}
% do the same for all options that should be discarded...

% pass all other options to memoir
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}

% process options
\ProcessOptions\relax

% then load memoir with the desired options
\LoadClass[a4paper]{memoir}

verwandte Informationen