我怎样才能通过类选项传递 babel 选项?

我怎样才能通过类选项传递 babel 选项?

我在文章类的基础上创建了一个类。这个类加载一个\maketitle命令为 define 的包。如果我不在类中加载 babel,文档的标题将始终为英文(日期)。因此,我想在类选项中传递语言,但我还想保留加载文章类选项的可能性。我该怎么办?

我想做这样的事:

\documentclass[language, opt1, opt2]{myclass}

在我的课程中,我将内容发送language到 babel 和opt1, opt2article 类。这是我的课程的开头:

% default options
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax

% load base class
\LoadClass[a4paper, 11pt]{article}

答案1

全局提供选项可能很方便。类文件将选项进一步传递给包。您提到了语言,让我们看看它。

在内部,siunitx加载包translator(beamer 包的一部分)。translator可以该语言的全局选项并通过使用正确的词典做出反应。

将全局选项传递给包的另一个著名例子是draft

\begin{filecontents}{\jobname.cls}
\ProvidesClass{\jobname}[2014/10/15 test class TeX.SX]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax

\LoadClass[a4paper, 11pt]{article}

\renewcommand{\maketitle}{
\begin{center}
\Huge \@date
\end{center}
}
\endinput
\end{filecontents}
\documentclass[
draft,
%draft=true,
%ngerman
french
]{\jobname}
\usepackage{babel}
\usepackage{siunitx}
\usepackage{mwe}%loads graphicx
\begin{document}
\maketitle
Let the pizza dough leaven for \SIrange{18}{24}{\hour}. Is the
draft option working here? hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

\includegraphics{example-image}
\end{document}

离题的一般建议
有没有陷阱?当然。设计新类是一件微妙的事情。标准类带有一些基本选项。KOMA 类(标准包的功能增强)带有大量选项,可以进行几乎任何设计更改。标准类和 KOMA 类都不关心任何区域设置s(信件与 DIN 纸除外)。用户负责。

的替代方案babelpolyglossia。 两者的作用相同,但 polyglossia 有另一种语法。 因此polyglossia 不知道ngerman (或french) 作为全局选项,因此会忽略它。 使用 polyglossia 语法,translator不会知道该选项,因此会忽略它。

你可以捕捉到一些问题并处理它,但不可能把用户行为的每一个小细节都考虑进去。

我曾经看到一个自定义类通过键值语法获取选项。请将上例中draft的替换为draft=true并查看输出。包graphicx不知道语法,因此会忽略它。

相关内容