如何隐藏 Babel 中的全局选项

如何隐藏 Babel 中的全局选项

我正在使用一个非公开类,它有一个名为的选项,english用于设置某些文本。我希望使用babel它来进行连字,并将语言(变体)指定为英国。然而,

\usepackage[main=british]{babel}

产生警告

 Package Babel Warning: The package option `english' should not be used
 (Babel)                with a more specific one (like `british') on input line 4.

\PassOptionsToPackage{main=british}{babel}如果我在加载文档类之前尝试,我会收到同样的警告。

下面是使用该类的最小工作示例article

\documentclass[english]{article}

\usepackage[main=british]{babel}

\begin{document}

Some text.

\end{document}

当文档类用于设置我需要的其他文档功能时,正确的加载方式是什么babelbritishenglish

答案1

Marijn 指出https://tex.stackexchange.com/a/33389/15925当代码放在主文档中并包装在 中时,它将起作用\makeatletter...\makeatother。但 Phelye Oleinik 指出,使用 LaTeX 内部组件有一个更简洁的答案

\documentclass[english]{unusualcls}

\makeatletter
\@expandtwoargs\@removeelement{english}\@classoptionslist\@classoptionslist
\makeatother

\usepackage[main=british]{babel}

\begin{document}

Some \unusualtext.

\end{document}

哪里unusual.cls

\ProvidesClass{unusualcls}[2010/12/15 v0.0001]

\RequirePackage{xkeyval}

\def\unusualtext{Patagonian}
\DeclareOptionX{english}{\gdef\unusualtext{English}}

\ProcessOptionsX*

\LoadClass{article}

无论哪种情况你都会得到

LaTeX Warning: Unused global option(s):
    [english].

如果在清除代码之前未使用该选项(例如,由类文件使用)。

相关内容