继承的类选项-覆盖值

继承的类选项-覆盖值

我已经基于 构建了一个自定义类scrbook。我有一些用于继承的默认选项scrbook(例如 9pt),但我想scrbook通过 传递有效选项myclass来覆盖我设置的那些默认值(例如 15pt)。似乎我传递给 的选项myclass在传递给 的选项之前scrbook,但我希望它们在之后。

\documentclass[15pt]{myclass}  % I want the 15 pt to overwrite the default 9pt

\begin{document}
 Hello
\end{document}

我的类名.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrbook}}

\ProcessOptions\relax

\RequirePackage{luacode}
\begin{luacode*}
      texio.write_nl('>>>>>>>'..token.get_macro('@classoptionslist'))
\end{luacode*}

\LoadClass[%% Document Class
      9pt,  % 9 overwrites the 15 pt passed
    %   15pt, % if 15 pt comes after 15 pt, it wins. I want what the user specifies in main.tex to be put after the options (eg. 9pt) set here.
      % .... etc
]{scrbook}

\begin{luacode*}
      texio.write_nl('>>>>>>>'..token.get_macro('@classoptionslist'))
\end{luacode*}

答案1

\PassOptionsToClass也可以使用默认值:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}
\PassOptionsToClass{fontsize=9pt}{scrbook}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrbook}}

\ProcessOptions\relax

\typeout{>>>>> \csname [email protected]\endcsname}

\LoadClass{scrbook}

这将显示在日志中

Document Class: myclass 
>>>>> fontsize=9pt,fontsize=15pt

请注意,我使用fontsize=XX语法来避免 KOMA 退回到兼容模式并出现大量警告,并且我使用了 simply \typeout。通过 lua 来显示 simply 命令的内容似乎有点过头了。

相关内容