如果类文件和文档文件位于不同的目录中,则类选项不起作用

如果类文件和文档文件位于不同的目录中,则类选项不起作用

我有以下目录树:

.
├── 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=truefoo.tex所以我希望hyperref它能被加载,但事实并非如此。

但是如果我注释掉

% \makeatletter
% \def\input@path{{../testcls/}}
% \makeatother

testcls.cls通过调用指定路径

\documentclass[hyperref=true]{../testcls/testcls}

然后hyperref加载。这是怎么回事?

答案1

它已在存储库中修复(此请求请求, 进一步来说提交)。昨天(2020-10-27)补丁级别 2 已上传至 CTAN,因此更新已经可用:

[ 6/11, 00:56/04:17] update: latex [23033k] (56606 -> 56775) ... done

(可能需要一段时间,取决于您使用的镜像)。

相关内容