全局选项处理

全局选项处理

我很努力地理解课堂上选项的处理方式。作为一名 MWE

foo.tex

\documentclass[draft,figures]{foo}
\begin{document}
  \includegraphics{example-image}
\end{document}

foo.cls

\ProvidesClass{foo}
\RequirePackage{foo}
\LoadClassWithOptions{article}
\RequirePackage{graphicx}

foo.sty

\ProvidesPackage{foo}
\RequirePackage{etoolbox}
\newbool{foo@figures}
\DeclareOption{figures}{\booltrue{foo@figures}}
\ProcessOptions\relax
\ifbool{foo@figures}{\PassOptionsToPackage{final}{graphicx}}{}

当我处理foo.tex日志pdflatex显示时

LaTeX 警告:未使用的全局选项:[数字]。

但我也看到了图形,这意味着我正在将final选项传递给graphicx包。为什么 LaTeX 认为该figures选项未使用?

移至\LoadClassWithOptions包加载之前可消除警告。在我的实际用例中,正在加载的类会加载包graphicx,因此我需要在加载类之前加载包。

答案1

全局选项处理的某些方面可能没有那么直观,但基本上未使用的选项列表是在课程结束时设置的,目的是捕捉包的误用之内该文件。

类中加载的包或多或少是类处理的一部分,而全局选项检查在设计时并没有真正考虑到它们,因为类中包含的包处理的选项是由类静态确定的,它们不依赖于最终用户在控制文档中的使用。

也就是说,包处理的嵌套使用使其很难完全隔离类中包的使用(特别是考虑到当时的内存要求),因此您只会得到您得到的,正如 Christian 指出的那样,您会得到不同的结果,具体取决于嵌套的 RequirePackage 是在类选项处理器之前还是之后。

相关内容