为了完成我的整个background
系列,我正在尝试弄清楚如何仅为前两页的头部(part
,,chapter
等等)设置背景。这是我从一本法语书中找到的一个例子
如您所见,前两页可能是具有“两页背景”的超级头部级别(或者只是 SVG 图形,但我们假设它不是),然后,部分和章节页面回到default
背景。这就是我目前试图获得的结果。
为此,我通过一些链接进行了调查:首先,上一个答案的米凯普允许我更改结构第一页的背景。无需任何实际修改,我们得到的结果如下:
\definemeasure[PartPaperWidth][\paperwidth]
\definemeasure[PartPaperHeight][\paperheight]
\startuseMPgraphic{PartBackgroundGraphic}
path background;
background := origin -- (2*\measure{PartPaperWidth},0cm) --
(2*\measure{PartPaperWidth},\measure{PartPaperHeight}) --
(0cm,\measure{PartPaperHeight}) --
cycle ;
fill background withcolor 0.3[white,red] ;
\stopuseMPgraphic
\definelayer[PartBackgroundLayer][width=\paperwidth, height=\paperheight]
\defineoverlay[PartBackgroundOverlay][\directsetup{PartBackgroundSetup}]
\setupbackgrounds[page][background=PartBackgroundOverlay]
\startsetups PartBackgroundSetup
\doifelsemode {partpage} {
\setlayer[PartBackgroundLayer][preset=lefttop]{\useMPgraphic{PartBackgroundGraphic}}
\globaldisablemode[partpage]
}{}
\placelayer[PartBackgroundLayer]
\stopsetups
\startsetups part:before
\globalenablemode[partpage]
\stopsetups
\setuphead[part][
number=no,
placehead=yes,
header=high,
before=\setup{part:before},
]
\starttext
\startpart[title={An awesome title}]
\dorecurse{20}{\samplefile{ward}}
\startpart[title={An awesome title}]
\dorecurse{20}{\samplefile{ward}}
\stoppart
\stoptext
正如我们所观察到的,我们只能在左页面上看到图形的左半部分,而右页面上则看不到图形的右半部分。
为了做到这一点,我尝试了以下沃尔夫冈·舒斯特和戴夫·贾维斯在此链接这使得我能够将背景跨越两页。
为了在我的案例中实现这一点,我做了一些改变PartBackgroundSetup
,就像这样
\startsetups PartBackgroundSetup
\doifelsemode {partpage} {
\setlayer[PartBackgroundLayer][y=.0\paperheight]
{\clip[nx=2,x=\doifelseoddpage{1}{2}]
{\useMPgraphic{PartBackgroundGraphic}}}
\globaldisablemode[partpage]
}{}
\placelayer[PartBackgroundLayer]
\stopsetups
然后,根据我是否使用,会有两种可能的输出\globaldisablemode[partpage]
。如果我使用它,我会得到
如果我不用它,我就会得到
在某一点阿迪亚 给了我一个想法:如果我使用页面计数器partmode
在第二页后退出会怎么样?是的,听起来很棒,让我们这样做吧!
\definecounter[PartPageCounter][way=bypage]
\startsetups PartBackgroundSetup
\doifelsemode {partpage} {
\setlayer[PartBackgroundLayer][y=.0\paperheight]
{\clip[nx=2,x=\doifelseoddpage{1}{2}]
{\useMPgraphic{PartBackgroundGraphic}}}
\ifnum\rawcountervalue[PartPageCounter]>2\globaldisablemode[partmode]\fi
}{}
\placelayer[PartBackgroundLayer]
\stopsetups
\startsetups part:before
\globalenablemode[partpage]
\setcounter[PartPageCounter][1]
\stopsetups
但...它没有起作用。
我怎样才能使背景仅出现在新标题的前两页(part
、chapter
等)上?
答案1
\realpageno
这里有一个想法:在每一页的开始处,保存每个部分开头的值,然后partpage
每当禁用该模式时 \realpageno=\LastPart+2
。
\definemeasure[PartPaperWidth][\paperwidth]
\definemeasure[PartPaperHeight][\paperheight]
\startuseMPgraphic{PartBackgroundGraphic}
path background;
background := origin -- (2*\measure{PartPaperWidth},0cm) --
(2*\measure{PartPaperWidth},\measure{PartPaperHeight}) --
(0cm,\measure{PartPaperHeight}) --
cycle ;
fill background withcolor 0.3[white,red] ;
\stopuseMPgraphic
\definelayer[PartBackgroundLayer][width=\paperwidth, height=\paperheight]
\defineoverlay[PartBackgroundOverlay][\directsetup{PartBackgroundSetup}]
\setupbackgrounds[page][background=PartBackgroundOverlay]
\permanent\countdef\LastPart\zerocount
\startsetups PartBackgroundSetup
\doif{\the\realpageno}{\the\numexpr\LastPart+2\relax}
{\globaldisablemode[partpage]}
\doifelsemode {partpage} {
\setlayer[PartBackgroundLayer][y=.0\paperheight]
{\clip[nx=2,x=\doifelseoddpage{1}{2}]
{\useMPgraphic{PartBackgroundGraphic}}}
}{}
\placelayer[PartBackgroundLayer]
\stopsetups
\startsetups part:before
\globalenablemode[partpage]
\LastPart=\realpageno\relax
\stopsetups
\setuphead[part][
number=no,
placehead=yes,
header=high,
before=\setup{part:before},
]
\starttext
\startpart[title={An awesome title}]
\dorecurse{40}{\samplefile{ward}}
\startpart[title={An awesome title}]
\dorecurse{40}{\samplefile{ward}}
\stoppart
\stoptext