获取 ConTeXt 新章节前的空白页?

获取 ConTeXt 新章节前的空白页?

当在右侧开始新的章节时,最好将上一页留空(没有页脚和页眉)。这可以通过定义新的分页符和设置页眉来实现,

\setuppagenumbering[alternative=doublesided]
\definepagebreak[chapterpagebreak][yes,header,footer,right]
\setuphead[chapter][page=chapterpagebreak]

\starttext
\startfrontmatter
\title{Preface}
\completecontent
\stopfrontmatter
\startbodymatter
\chapter{First Chapter}
\stopbodymatter
\startbackmatter
\chapter{Backmatter}
\stopbackmatter
\stoptext

但是正文章节之前的页面First Chapter不会清空,根据 wiki 的说法,我们应该添加一些设置

\setupsectionblock[frontpart][page=]
\setupsectionblock[bodypart] [page=]
\setupsectionblock[backpart] [page=]

此后,将First Chapter在正文的章节之前和Backmatter后页区域的章节之前生成一个空白页。这种方法并不完美,因为前页的页面应该用小写罗马数字编号,而正文的页面应该用阿拉伯数字编号。也就是说

\definestructureconversionset[frontpart:pagenumber][][romannumerals]
\definestructureconversionset[bodypart:pagenumber][][numbers] 

对于这个要求,这种方法不太适用。也许另一种方法是,当 frontmatter 中最后一页的页码为偶数时,使用 插入一个空白页\page[yes,empty,odd]。bodymatter 和 backmatter 也一样。

\def\emptyoddpage{%
  \ifodd\pagenumber
    \page[yes,empty,odd]
  \fi}

有没有人有其他方法可以解决这个问题?我认为这种方法来自 plain-TeX 而不是 ConTeXt,所以我期待一种 ConTeXt 方法。


编辑:也许我说的不清楚,让我写代码

% the method from wiki
\setuppagenumbering[alternative=doublesided]
\definepagebreak[chapterpagebreak][yes,header,footer,right]
\setuphead[chapter][page=chapterpagebreak]

\definestructureconversionset[frontpart:pagenumber][][romannumerals]
\definestructureconversionset[bodypart:pagenumber][][numbers] 

\startsectionblockenvironment[bodypart]
\setcounter[userpage][1]
\stopsectionblockenvironment

\setupsectionblock[frontpart][page=]
\setupsectionblock[bodypart] [page=]
\setupsectionblock[backpart] [page=]

\starttext
\startfrontmatter
\title{Preface}
\completecontent
\stopfrontmatter
\startbodymatter
\chapter{First Chapter}
\stopbodymatter
\startbackmatter
\chapter{Backmatter}
\stopbackmatter
\stoptext

这段代码并不完美,因为目录的页码是阿拉伯数字1而不是iii!所以,我应该通过定义一个宏来解决这个问题

% another method
\setuppagenumbering[alternative=doublesided]
\definepagebreak[chapterpagebreak][yes,header,footer,right]
\setuphead[chapter][page=chapterpagebreak]

\definestructureconversionset[frontpart:pagenumber][][romannumerals]
\definestructureconversionset[bodypart:pagenumber][][numbers] 

\startsectionblockenvironment[bodypart]
\setcounter[userpage][1]
\stopsectionblockenvironment

%\setupsectionblock[frontpart][page=]
%\setupsectionblock[bodypart] [page=]
%\setupsectionblock[backpart] [page=]

\def\emptyoddpage{%
  \ifodd\pagenumber
    \page[yes,empty,odd]
  \fi}

\starttext
\startfrontmatter
\title{Preface}
\completecontent
\emptyoddpage
\stopfrontmatter
\startbodymatter
\chapter{First Chapter}
\emptyoddpage
\stopbodymatter
\startbackmatter
\chapter{Backmatter}
\emptyoddpage
\stopbackmatter
\stoptext

我想问的是如果我不定义\emptyoddpage(那太plain-TeX了),能有ConTeXt的方式来解决这个问题吗?

答案1

在前部节块中设置page=yes。然后目录的页码将以罗马数字打印并继续编号,使其变为iii

\setupsectionblock
  [frontpart]
  [page=yes]

相关内容