ConTeXT:仅有两页的头部背景

ConTeXT:仅有两页的头部背景

为了完成我的整个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

但...它没有起作用。

我怎样才能使背景仅出现在新标题的前两页(partchapter等)上?

答案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

相关内容