PassOptionsToClass 与全局选项

PassOptionsToClass 与全局选项

我目前正在使用\PassOptionsToClass,如建议的条件编译和 \documentclass用多种语言编译文档。但是,如果我在 中使用 language-options \PassOptionsToClass,它们将不会传递给babel

MWE:

\documentclass[english]{article}

\usepackage{babel}

\begin{document}
\end{document}

编译(没有任何抱怨)一个空文档。但是

\PassOptionsToClass{english}{article}
\documentclass{article}

\usepackage{babel}

\begin{document}
\end{document}

产量

! Package babel Error: You haven't specified a language option.

因为 babel 没有这个english选项。

所以这是我的实际问题:在实际之前是否有任何(简单的)可能性来添加全局选项(传递给后续包)\documentclass

答案1

所使用的机制\PassOptionsToClass(或者实际上\PassOptionsToPackage使用的只是该文件:因此它相当于

\LoadClass[<options>]{<name>}

和非常相似

\RequirePackage[<options>]{<name>}
\usepackage[<options>]{<name>}

相比之下,作为行的一部分给出的选项\documentclass对于所有加载的包和类都是全局可用的(是的,你只能使用一个类\documentclass但可以加载一系列要构建的类)。因此,全局选项存储在另一个地方。除了以下方式外,没有预定义的机制可以“公开”访问此选项:通过的可选参数\documentclass。当然,可以使用内部名称访问它

\makeatletter
\def\@classoptionslist{english}
\makeatother
\documentclass{article}

\usepackage{babel}

\begin{document}
\end{document}

我不太清楚你为什么会选择这样做:一个班级不应该真的去处理这种事情。

相关内容