我已经使用自定义类文件一段时间了,它需要几个带参数的选项;例如,我的文档通常以类似 开头\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}
此更改会抑制警告。不幸的是,我目前不确定此调整起作用的根本原因。如果有人知道此解决方案为何有效,我将不胜感激。