根据ConTeXt 维基:
默认情况下
\part
不生成标题,因为大多数情况下这些需要特别注意和特定设计。然而在后台,零件编号处于活动状态并执行几个初始化。其他部分命令设置为排版标题。
如果我想使用该\part{}
命令但又不想让它生成空白页该怎么办?相反,我希望它根本不生成任何页面。
那可能吗?
答案1
我必须承认这有点令人困惑。部分困惑在于默认情况下part
不显示标题,因此必须猜测发生了什么。如果您输入placehead=yes
Henri Menke 的代码,您将看到发生了什么。该页面不是由后续页面生成的\part
,而是由后续页面生成的\chapter
在 ConTeXt 中,您可以使用 键控制节标题与其后续标题之间的分页符(即部分与章节之间的分页符或章节与节之间的分页符)continue
。为了便于解释,我将限制较高级别的标题为part
,将较低级别的标题限制为chapter
,但对于任何两个连续级别也适用相同的方法。
如果我们有
\setuphead[chapter][continue=yes, page=yes]
(这是默认设置),则部分标题和章节标题之间会有分页符即使部分标题后没有文字。另一方面,如果我们设定
\setuphead[chapter][continue=no, page=yes]
那么如果章节开头的分页符紧跟在部分标题之后,则会被抑制。
因此,您需要在代码中做的就是设置
\setuphead[chapter][continue=no]
这是一个完整最小的例子:
\setuphead
[chapter]
[
continue=yes,
]
\starttext
\startpart[title=Part One]
\startchapter[title=Chapter One]
\stopchapter
\startchapter[title=Chapter Two]
\stopchapter
\stoppart
\startpart[title=Part Two]
\startchapter[title=Chapter One]
\stopchapter
\startchapter[title=Chapter Two]
\stopchapter
\stoppart
\stoptext
答案2
您可以page=no
在设置中设置part
。由于我不明白的原因,这在文档的第一页上不起作用,但我认为这是个小问题,因为第一页通常是标题页。无论如何,我在邮件列表中询问了(https://mailman.ntg.nl/pipermail/ntg-context/2017/090445.html)。
汉斯回答了我的问题并列出了可能的解决方案,我在此引用:
这与页面上必须有某个节点来注册部件信息有关,并且当章节刷新页面时,最终会出现在某个页面上
% solution 1: \setuphead [part] [page=no, placehead=hidden] \setuptexttexts [\synchronizehead{part}] % solution 2: \setuphead [part] [page=no, placehead=hidden] \appendtoks \synchronizehead{part}% \to \everybeforepagebody % solution 3 (new in beta): \setuphead [part] [placehead=section]
这将延迟刷新,直到下一个节头到位。它仍然不是 100% 可预测的,但在大多数情况下可能会正常工作。