我正在使用一个非公开类,它有一个名为的选项,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}
当文档类用于设置我需要的其他文档功能时,正确的加载方式是什么babel
。british
english
答案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].
如果在清除代码之前未使用该选项(例如,由类文件使用)。