在interface3
文档中可以看到(以下内容并非逐字引用),变量\l_keys_choice_int
可用作多项选择键的索引寄存器,其值从 开始0
。尽管如此,根据我对以下代码的经验,起始值实际上是1
。
这是我的课程,在一个文件中有深刻的内涵myclass.cls
:
\RequirePackage{l3keys2e,xparse}
\ProvidesExplClass
{myclass}
{2013/08/25}
{1.0}
{myclass}
\bool_new:N \g_myclass_enum_bool
\bool_new:N \g_myclass_enumalt_bool
\NewDocumentCommand \SetTBool { m }
{
\bool_gset_true:c
{ g_myclass_\tl_trim_spaces:n {#1} _bool}
}
\NewDocumentCommand \TypeBool { m }
{ \bool_if:cTF { g_myclass_#1_bool } { T } { F } }
\keys_define:nn { myclass }
{
alter .choice_code:n =
{
\AtBeginDocument{Option ~ Index: ~ \int_use:N \l_keys_choice_int\par}
\int_compare:nNnTF { \l_keys_choice_int } = { 1 }
{ \SetTBool { enum } }
{ \SetTBool { enumalt } }
},
alter .generate_choices:n = { enum, enumalt }
}
\ProcessKeysOptions { myclass }
\LoadClass{memoir}
然后我有一个原名的文档文件,mydoc.tex
内容如下:
\documentclass[alter = enum]{myclass}
\begin{document}
\TypeBool{enum}\par
\TypeBool{enumalt}
\end{document}
我在排版文档中得到的是1 T F
,而根据文档我应该得到的是0 T F
。此外,如果我设置类选项alter = enumalt
,我得到的是2 F T
。我是不是搞错了什么?
答案1
我怀疑您有 的旧版本interface3
:我们不久前通常将索引从零改为索引从一。因此您的观察是正确的: 的索引\l_keys_choice_int
从一开始。