![继承的类选项-覆盖值](https://linux22.com/image/456867/%E7%BB%A7%E6%89%BF%E7%9A%84%E7%B1%BB%E9%80%89%E9%A1%B9-%E8%A6%86%E7%9B%96%E5%80%BC.png)
我已经基于 构建了一个自定义类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 命令的内容似乎有点过头了。