为什么 \CurrentOption 与 \l_keys_key_tl 不同?

为什么 \CurrentOption 与 \l_keys_key_tl 不同?

我正在尝试使用 构建一个类expl3。该类使用 管理其自己的选项l3keys2e。我的类(假设它被称为myclass)基于它加载的另一个类。这个基类(假设它被称为baseclass)是一个遗留的 latex2e 类。我需要将一些选项传递给baseclass,并且我想在处理传递给 的选项时设置它们myclass。为此,我调用了\PassOptionsToClass由 执行的选项管理代码l3keys2e \ProcessKeysOptions。处理完 中的选项后myclass,我将baseclass通过加载\LoadClass{baseclass}

现在,有些事情我不清楚。在处理 中的选项时myclass,当前选项应该在 中\l_keys_key_tl。但是,如果我\PassOptionsToClass{\l_keys_key_tl}{baseclass}这样做,则不起作用。该选项已传递,但它在 中仍未使用,baseclass好像无法识别它一样。相反,如果l3keys我在某些代码部分使用\PassOptionsToClass{\CurrentOption}{baseclass}它,则它可以工作(尽管代码\CurrentOption中的使用l3keys完全没有记录)。

奇怪的是,如果我检查\l_keys_key_tl和的内容,\CurrentOption它们\show在终端上显示为一模一样。因此,我相信它们在字符的 catcode 上一定有所不同。但为什么会这样呢?

相关内容