¿Cómo puedo forzar algunas opciones y descartar otras en una clase personalizada?

¿Cómo puedo forzar algunas opciones y descartar otras en una clase personalizada?

Estoy creando una clase de documento basada en memoir. Para esto, permito que se pasen varias opciones de clase a mi código. Las opciones que no sean reconocidas simplemente se pasarán a memoir.

Ahora mi pregunta es: ¿cómo puedo forzar a4paperaunque el usuario de mi clase pase letterpapercomo opción? En otras palabras: ¿existe la posibilidad de desactivar las otras opciones de tamaño de documento ( ,,, letterpaperetc. ) manteniendo la posibilidad de pasar opciones como o ?a5paperebookmsfleqn

Respuesta1

Sugiero lo siguiente:

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

información relacionada