Как можно принудительно задать некоторые параметры и отклонить другие в пользовательском классе?

Как можно принудительно задать некоторые параметры и отклонить другие в пользовательском классе?

Я создаю класс документа на основе memoir. Для этого я разрешаю передавать несколько опций класса в мой код. Опции, которые не распознаются, будут просто передаваться в memoir.

Теперь мой вопрос: как я могу заставить, a4paperдаже если пользователь моего класса передает letterpaperкак опцию? Другими словами: есть ли возможность отключить другие опции размера документа ( letterpaper, a5paper, ebook, и т. д.), сохраняя при этом возможность передавать такие опции, как msили fleqn?

решение1

Я предлагаю следующее:

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

Связанный контент