我设置了一个宏,可以非常简单地创建标题“拼图 1”、“拼图 2”等等。
\newcount\a\newcount\counter
\advance\a by 1
\define\puzzle{\chapter{Puzzle~\the\a}\advance\a by 1}
\starttext
\completecontent
\puzzle
\puzzle
\puzzle
\puzzle
\puzzle
\puzzle
\stoptext
编号在文档中正确显示,但在目录中,它仅显示计数器的起始值。
如何才能使目录正确显示递增的数字?
另外,如果我需要添加其他类型的章节标题,例如“新词汇 1”、“新词汇 2”(也是在章节级别),该怎么办?我也尝试添加它,但是“谜题 1”和“新词汇 1”的代码产生了奇怪的效果,导致出现在文档不同部分的两个章节标题混杂在一起,重叠在一起。
答案1
忘记我以前的解决方案(如果您需要将其与编号头一起使用,它无论如何都行不通)。由于您需要一些不同的东西(最好从一开始就给出一个更清晰的例子来说明一个人需要什么;)
),可以执行以下操作:
\definenumber[vocabularycounter][way=bytext,prefix=no]
\definenumber[puzzlecounter][way=bytext,prefix=no]
\setuphead[chapter][expansion=yes]
\setnumber[puzzlecounter][1]
\setnumber[vocabularycounter][1]
\defineexpandable\puzzle%
{\chapter{Puzzle \rawcountervalue[puzzlecounter]}\incrementnumber[puzzlecounter]}
\defineexpandable\vocabulary%
{\chapter{Vocabulary \rawcountervalue[vocabularycounter]}\incrementnumber[vocabularycounter]}
\starttext
\completecontent
\puzzle
\vocabulary
\puzzle
\vocabulary
\puzzle
\puzzle
\puzzle
\vocabulary
\puzzle
\stoptext
它能满足你的要求吗?
答案2
Jaira 提供了一个更优雅的替代解决方案,但让我解释一下你的解决方案出了什么问题以及如何修复它。如果你打开文件.tuc
,你会看到
utilitydata.structures.lists.collected={
{
...
["titledata"]={
["label"]="chapter",
["title"]="Puzzle~\\the \\a ",
},
},
},
}
如您所见,ConTeXt 实际上是将其存储Puzzle~\\the\\a
为章节的标题。因此,当您使用 放置目录时\completecontent
,相同的标题会被复制到目录中。当目录排版时, 的值\a
等于1
,因此您可以Puzzle 1
在目录中看到。
现在我们了解了发生了什么,修复就很容易了。只需添加
\setuphead[chapter][expansion=yes]
它指示 ConTeXt 在将标题内容存储到文件之前对其进行扩展.tuc
。在本例中,.tuc
文件包含:
utilitydata.structures.lists.collected={
{
...
["titledata"]={
["label"]="chapter",
["title"]="Puzzle~1",
},
},
...
["titledata"]={
["label"]="chapter",
["title"]="Puzzle~2",
},
},
}
我们得到了正确的目录!