如何在 ConTeXt 中定义卷的章节标题?

如何在 ConTeXt 中定义卷的章节标题?

我有一份很长的文档,必须将其分成几卷。为了能够一次性编译,源文件组织如下:

\starttext
    \startfrontmatter
        % this contains the title page and table of contents
    \stopfrontmatter
    \startbodymatter
        % this contains the text for volume 1
    \stopbodymatter

    \startfrontmatter
        % this contains the title page and table of contents
    \stopfrontmatter
    \startbodymatter
        % this contains the text for volume 2
    \stopbodymatter

    \startfrontmatter
        % this contains the title page and table of contents
    \stopfrontmatter
    \startbodymatter
        % this contains the text for volume 3
    \stopbodymatter
\stoptext

ConTeXt 已经有了部分、章节和节的定义,但我找不到有关卷的任何详细信息。我发现关于添加新章节标题的文档,但我不知道这是否是正确的用法。

首先,与其他章节标题不同,我需要卷标题出现在每卷的标题页上,但不出现在正文中,例如:

 __________________
|                  |
|THIS IS THE TITLE |
|                  |
|    by Author     |
|                  |
|                  |
|                  |
|     Volume I     |
|__________________|

其次,它仍应像常规部分一样出现在目录中,例如:

Table of Contents
    Volume I
        Part 1 - Animals   3
        Part 2 - Plants   6
    Volume II
        Part 3 - Rocks   9

关于创建自定义部分标题的文档似乎没有涵盖这些要点。卷似乎与其他部分有很大不同,我不确定用它\setuphead来定义它们是否正确。将卷添加到文档的最佳方法是什么?

答案1

Part 是 ConTeXt 中的顶级分段命令,在我看来,它几乎不可能改变,因此如果您想要\volume分段命令,则必须使用 重新定义所有结构\definehead。其实并不难,但相当复杂。

\startfrontmatter但是像和这样的命令\startbodymatter并不意味着要重复(各种东西都会被重置,例如零件号),而且看起来你并不希望在新的卷开始时重置你的零件和页码。

因此,我的建议是使用专用宏为卷创建特殊页面,然后手动编写主目录或定义新的全局组合列表。它看起来应该像这样:

\definelist[volume]
\definecombinedlist
  [allcontent]
  [volume,part]
  [criterium=all,level=section]

\def\Volume#1%
  {\page[right]
   \writetolist[volume]{}{Volume #1}%
   % build up the title page here
   }

\starttext
\startfrontmatter
\placecombinedlist[allcontent]
\stopfrontmatter

\startbodymatter
\Volume{I}
\part{Animals}
\chapter{One}
\chapter{Two}
\part{Plants}

\Volume{II}
\part{Rocks}
\stopbodymatter

\stoptext

相关内容