我很努力地理解课堂上选项的处理方式。作为一名 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 是在类选项处理器之前还是之后。