我正在尝试使用 MetaFun 重现部分和章节中的类似内容:
将内容放在页面上很简单,所以我想获得彩色背景。但是我不知道如何将它放在所有的页...
我的第一次尝试是设置alternative
一个MPpage
:
\setuppapersize[A6][A6]
\startsetups[partHeadRendering]
\startMPpage
StartPage ;
numeric w ; w := bbwidth(Page) ;
numeric h ; h := bbheight(Page) ;
fill (unitsquare xyscaled (w,h)) withcolor \MPcolor{darkred} ;
StopPage ;
\stopMPpage
\stopsetups
\defineheadalternative[partrenderer][alternative=vertical, renderingsetup=partHeadRendering]
\setuphead[part][alternative=partrenderer, placehead=yes]
\showframe
\starttext
\startpart
\stoppart
\stoptext
但...
然后我尝试使用MPgraphic
如图overlay
所示封面页 wiki
\setuppapersize[A6][A6]
\startuseMPgraphic{PartCover}
\startMPpage
StartPage ;
fill Page withcolor \MPcolor{darkred} ;
StopPage ;
\stopMPpage
\stopuseMPgraphic
\defineoverlay[PartCover][\useMPgraphic{PartCover}]
\startsetups[partHeadRendering]
\setupbackgrounds[page][background=PartCover]
\stopsetups
\defineheadalternative[partrenderer][alternative=vertical, renderingsetup=partHeadRendering]
\setuphead[part][alternative=partrenderer, placehead=yes]
\showframe
\starttext
\startpart
\stoppart
\stoptext
但结果也不太好……
我也看过这个这但我得到了与第一个相同的结果。
答案1
我今天了解到,您可以使用一种partpage
模式和一个仅填充部分页面内容的图层。如下所示。
定义 MetaFun 背景:
\startuseMPgraphic{part}
StartPage ;
fill Page withcolor 0.25[white,darkcyan] ;
picture p, q ;
p := textext("\ss\bf\setstrut\strut\getmarking[partnumber]") scaled 14 ;
q := textext("\ss\bf\setstrut\strut Lesson") scaled 2 ;
p := (p shifted - center p) ;
q := (q shifted - center q) ;
draw image (
draw p withcolor white ;
draw q ;
) shifted urcorner Field[Text][Text] shifted - urcorner p ;
StopPage ;
\stopuseMPgraphic
定义一个图层、一个覆盖层(使用\directsetup
下一步中介绍的),并设置背景以使用它们。
\definelayer[part][width=\paperwidth, height=\paperheight]
\defineoverlay[pagebackground][\directsetup{pagebackground}]
\setupbackgrounds[page][background=pagebackground]
添加刚才提到的设置。它会检查您是否在 中partpage
,如果在,它会使用 更新图层的内容\setlayer
,然后禁用该partpage
模式(如果不是,您还将在接下来的页面上获得该图层)。然后放置图层。
\startsetups pagebackground
\doifelsemode {partpage} {
\setlayer[part][preset=lefttop]{\useMPgraphic{part}}
\globaldisablemode[partpage]
}{}
\placelayer[part]
\stopsetups
我们添加了另一个设置,启用部分页面模式并推送部分页面的内容。
\startsetups part:before
\globalenablemode[partpage]
\blank[force,20*line]
\stopsetups
最后我们设置部分。这里对我们来说最重要的是before
启用partpage
模式的键,以便页面背景启动。我还添加了一个style
。
\setuphead[part][
number=no,
placehead=yes,
header=high,
before=\setup{part:before},
style={\definedfont[SansBold at 18pt]\WORD},
]
然后我们就可以开始准备内容了。我将字体换成了 dejavu,不过你当然也可以使用其他你喜欢的字体。
\setupbodyfont[dejavu]
\starttext
\startpart[title={The visual studio experience}]
\dorecurse{20}{\samplefile{ward}}
\stoppart
\stoptext
将所有这些加在一起得到以下前两页。
编辑
两条评论。代码
\startuseMPgraphic{PartCover}
\startMPpage
StartPage ;
fill Page withcolor \MPcolor{darkred} ;
StopPage ;
\stopMPpage
\stopuseMPgraphic
您建议的无效。如果删除\startMPpage
和,\stopMPpage
效果会更好。
此外,还有测试套件其中包含很多很好的例子。在这个特定例子中,toggles-001.tex
位于 backgrounds 文件夹中。