我正在尝试创建自己的类,继承自extarticle
。
我希望仍然能够使用此类的选项,因此我在阅读的大多数文档中找到了一种方法:
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}}
\ProcessOptions\relax
不幸的是,这不起作用。我不明白,因为很多文档都建议这样做。
即使我尝试对命令进行硬编码,也不会发生任何事情:
\PassOptionsToClass{14pt}{extarticle}
读取选项的唯一方法extarticle
似乎是在 loadclass 命令期间对它们进行硬编码(这不是我想要的):
\LoadClass[14pt,english]{extarticle}
我的课程到目前为止什么都没做,只是做了最低限度的事情:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{base}[2017/12/19 base class]
\LoadClass{extarticle}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}}
\ProcessOptions\relax
答案1
此处语句\LoadClass
写得太早:派生类必须先处理选项,然后用 指示将未知的选项(即派生类未定义的选项)交给基类\DeclareOption*
,然后再加载基类。
类代码——稍作修改,以便轻松更改基类
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{extbase}[2017/12/19 base class]
\def\extbase@baseclass{extarticle}
\DeclareOption{myoption}{\typeout{This is a nice option}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\extbase@baseclass}}
\ProcessOptions\relax
\LoadClass{\extbase@baseclass}
请注意,\LoadClassWithOptions{extarticle}
而不是\LoadClass{extarticle}
在这里是没用的,因为它不会识别在派生类中定义的选项,因此 LaTeX 会抱怨未知选项。
一些测试代码
\documentclass[14pt,myoption]{extbase}
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}
错误示例\LoadClassWithOptions
——以下输出显示 LaTeX 警告有关myoption
未知的内容extarticle
:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{extbasewrong}[2017/12/19 base class]
\def\extbase@baseclass{extarticle}
\DeclareOption{myoption}{\typeout{This is a nice option}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\extbase@baseclass}}
\ProcessOptions\relax
\LoadClassWithOptions{\extbase@baseclass}
输出:
这是 pdfTeX,版本 3.14159265-2.6-1.40.18(TeX Live 2017)
(预加载格式=pdflatex)\write18 已启用。进入扩展模式
(./clsloaderwrong.tex LaTeX2e <2017-04-15> Babel <3.15> 和
已加载 84 种语言的连字模式。(./extbasewrong.cls
文档类别:extbasewrong 2017/12/19 基类 这是一个很好的
选项 )
(/usr/local/texlive/2017/texmf-dist/tex/latex/extsizes/extarticle.cls
文档类别:extarticle 1996/10/08 v1.0 非标准 LaTeX 文档类别
(/usr/local/texlive/2017/texmf-dist/tex/latex/extsizes/size14.clo)
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/exscale.sty)
(/usr/local/texlive/2017/texmf-dist/tex/latex/blindtext/blindtext.sty
(/usr/local/texlive/2017/texmf-dist/tex/latex/tools/xspace.sty)
LaTeX 警告:未使用的全局选项:
[myoption].
(./clsloaderwrong.aux)
[1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/up
dmap/pdftex.map}](./clsloaderwrong.aux)
) 输出写在
clsloaderwrong.pdf(1 页,14840 字节)。抄录于
clsloaderwrong.log。