我有以下目录树:
.
├── foo
│ └── foo.tex
└── testcls
└── testcls.cls
哪里foo.tex
\makeatletter
\def\input@path{{../testcls/}}
\makeatother
\documentclass[hyperref=true]{testcls}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\section{A section}
\blindtext
\end{document}
并且testcls.cls
是
\RequirePackage{expl3}
\RequirePackage{l3keys2e}
\ProvidesExplClass{testcls}{}{}{}
\bool_new:N \l_hyperref_bool
\keys_define:nn { module }
{
hyperref .bool_set:N = \l_hyperref_bool,
hyperref .initial:n = { false },
hyperref .default:n = { true },
}
\ProcessKeysOptions { module }
\LoadClass{article}
\bool_if:NT \l_hyperref_bool { \RequirePackage{hyperref} }
我testcls.cls
正在使用l3keys2e
一个用于类选项的键值接口。唯一的类选项是一个布尔值hyperref
,它控制包的加载hyperref
。
因为我正在传递hyperref=true
,foo.tex
所以我希望hyperref
它能被加载,但事实并非如此。
但是如果我注释掉
% \makeatletter
% \def\input@path{{../testcls/}}
% \makeatother
并testcls.cls
通过调用指定路径
\documentclass[hyperref=true]{../testcls/testcls}
然后hyperref
加载。这是怎么回事?