我正在编写一个文档类(我们称之为 base.cls),它是我正在编写的其他几个类的基类。基类本身基于该类article
。默认情况下,字体大小设置为 12pt,即我\LoadClass[12pt]{article}
在 base.cls 中调用。现在,从 base.cls 派生的类之一(我们称之为 derived.cls)应该使用 11pt 而不是 12pt。因此,我向 base.cls 添加了默认选项处理程序,以将所有选项传递给在 derived.cls 中调用的article
when 。\LoadClass[11pt]{base}
事情就是从这里开始的。似乎一旦处理了 12pt 选项,就会忽略 11pt,字体大小仍为 12pt。我尝试交换字体大小,即在 base.cls 中将 11pt 设置为默认值,并在加载时指定 12pt base.cls
。derived.cls
在这种情况下,结果符合预期:字体大小为 12pt;如果我在加载时不指定 12pt base.cls
,则字体大小为 11pt。这是一个最小的工作示例。
基础类.cls:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{base}[2015/09/11 v0.1]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[a4paper,12pt]{article}
\endinput
派生类.cls:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{derived}[2015/09/11 v0.1]
\LoadClass[11pt]{base}
\endinput
示例.tex:
\documentclass{derived}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
有任何想法吗?
答案1
这是一个解决方案base.cls:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{base}[2015/09/11 v0.1]
\providecommand\mtfntsize{12pt}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[a4paper,\mtfntsize]{article}
\endinput
派生类.cls:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{derived}[2015/09/11 v0.1]
\def\mtfntsize{11pt}
\LoadClass[\mtfntsize]{base}
\endinput
示例.tex:
\documentclass{derived}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}