Como posso forçar algumas opções e descartar outras em uma classe customizada?

Como posso forçar algumas opções e descartar outras em uma classe customizada?

Estou criando uma classe de documento baseada em memoir. Para isso, permito que diversas opções de classe sejam passadas para o meu código. As opções que não são reconhecidas serão simplesmente passadas para memoir.

Agora minha dúvida é: como posso forçar a4papermesmo que o usuário da minha classe passe letterpapercomo opção? Em outras palavras: existe a possibilidade de desabilitar as demais opções de tamanho do documento ( letterpaper, a5paper, ebook, etc.) mantendo a possibilidade de repassar opções como msou fleqn?

Responder1

Eu sugiro o seguinte:

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

informação relacionada