我目前正在使用\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}
我不太清楚你为什么会选择这样做:一个班级不应该真的去处理这种事情。