如何在自定义类中强制某些选项并丢弃其他选项?

如何在自定义类中强制某些选项并丢弃其他选项?

我正在基于 创建一个文档类memoir。为此,我允许将几个类选项传递给我的代码。无法识别的选项将直接传递给memoir

a4paper现在我的问题是:即使我的班级用户作为选项传递,我如何强制传递letterpaper?换句话说:是否有可能禁用其他文档大小选项(letterpaper、、等),同时保持传递诸如或之类a5paper的选项的可能性?ebookmsfleqn

答案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}

相关内容