在类选项中使用参数时出现“未使用的全局选项”

在类选项中使用参数时出现“未使用的全局选项”

我已经使用自定义类文件一段时间了,它需要几个带参数的选项;例如,我的文档通常以类似 开头\documentclass[name=John\ Smith]{mathwork}。一段时间以来,它一直没有任何编译警告,但最近不知何故,每当我指定带有等号的选项时,我都会收到“未使用的全局选项”警告。

例如,考虑 MWE 类文件testwork.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testwork}
\LoadClass{article}

\RequirePackage{xkeyval}
\DeclareOptionX{test}{\newcommand{\foo}{#1}}
\ProcessOptionsX\relax

\endinput

和文档文件scratch.tex

\documentclass[test=wtf]{testwork}

\begin{document}
test \foo
  
\end{document}

当我尝试scratch.tex使用该命令进行编译时latexmk scratch.tex,收到警告

LaTeX Warning: Unused global option(s):
    [test=wtf].

但文档在其他方面编译得很好,而且\foo确实设置为“wtf”。另一方面,如果我用 替换该行\documentclass[test=wtf]{testwork}\documentclass[test]{testwork}文档现在编译时不会出现警告,但\foo只是空的。我很难理解为什么会发生这种情况;我只想让类选项带有参数,而不会引发“未使用的全局选项”警告。任何帮助都将不胜感激!

我在 Arch Linux 上使用该texlive-most软件包的 latexmk 版本 4.79。

答案1

我发现了一个可以解决这个问题的修改方法。修改原始代码

\documentclass[test=wtf]{testwork}

修订版本如下:

\documentclass{testwork}
\setkeys{testwork.cls}{test=wtf}

此更改会抑制警告。不幸的是,我目前不确定此调整起作用的根本原因。如果有人知道此解决方案为何有效,我将不胜感激。

相关内容