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