抱歉解释得这么长,但这里是这样的:假设你有一个> = 3页的文档,你需要添加一个层仅在最后一页。是的,您的 ConTeXt 安装已是最新的。
在 wiki 上似乎说这可以通过state
选项实现. 内容如下:
图层“状态”的可用选项有:
start
:图层仅出现在当前页面上stop
:图层不显示repeat
:在所有页面上分层打印next
:图层出现在以下页面上continue
:图层出现在除第一页之外的所有页面上
就像state=start
默认选项一样,我们可以想象state=stop
在开始处和state=start
最后一页的某个地方设置就可以达到目的。因此,第一种方法可能是:
\definelayer[mybg][width=\pagewidth,height=\pageheight,x=0mm,y=0mm,state=stop]
\setlayer[mybg][]{\framed{\red Layer}}
\setupbackgrounds[page][background=mybg]
\starttext
\input ward
\page[yes]
\input tufte
\page[yes]
\setuplayer[mybg][state=start]
\input knuth
\stoptext
但事实证明,这行不通。该图层没有出现在任何地方!您甚至可以尝试state=stop
在开头以及state=next
倒数第二页的某个位置再次设置:
\starttext
\input ward
\page[yes]
\setuplayer[mybg][state=next]
\input tufte
\page[yes]
\input knuth
\stoptext
但同样,该层没有出现在任何地方。为了不至于太乱,并且不让设置出现在文本中,最后的办法是将所有背景设置放在\startsetups
-\stopsetups
环境中,并在最后一页调用它:
\startsetups background
\definelayer[mybg][width=\pagewidth,height=\pageheight,x=0mm,y=0mm,state=start]
\setlayer[mybg][]{\framed{\red Layer}}
\setupbackgrounds[page][background=mybg]
\stopsetups
\starttext
\input ward
\page[yes]
\input tufte
\page[yes]
\setups{background}
\input knuth
\stoptext
这招奏效了。哎呀!现在,我尝试使用letter
带有自定义字母层的 - 执行相同操作。当然,您可以考虑使用letter
的模块专用命令:
\usemodule[letter]
\setupletter[address={ABC.DEF}]
\startsetups backaddresslayer
\defineletterelement[layer][backaddress][backaddressinfo]{\framed{\correspondenceparameter{address}}}
\setupletterlayer[backaddress][state=start,alternative=backaddressinfo,x=0pt,y=0pt]
\stopsetups
\starttext
\startletter
\input ward
\page[yes]
\input tufte
\page[yes]
\setups{backaddresslayer}
\input knuth
\stopletter
\stoptext
但是,与预期相反,backaddress
图层不会出现在任何地方......
我不知道这是否聚碳酸二丁酯错误、漏洞或其他问题。如果您能指出来,我会非常高兴。
干杯!:)
答案1
我还没有看过字母模块(我不使用它,所以我需要一些时间来了解它在底层的作用),但这里有一个针对你描述的第一个问题的建议。
困难在于您尝试将图层的状态从 切换stop
到start
。在我看来,将图层的状态永久设置为 更容易start
,然后在适当的页面上简单地设置图层的内容。
现在,要自动将页面内容设置在最后一页,您需要知道最后一页的页码(\lastcountervalue[userpage]
),并且需要能够在任意页面上排版内容(\startpostponing
)。结合这些,我们得到:
\definelayer[mybg][width=\pagewidth,height=\pageheight,x=0mm,y=0mm,state=start]
\setupbackgrounds[page][background=mybg]
\startpostponing[{\lastcountervalue[userpage]}]
\setlayer[mybg]{\framed[foregroundcolor=red]{Layer}}
\stoppostponing
\starttext
\dorecurse{3}{\input knuth \page}
\stoptext
Layer
正如所料,这会在第三页的左上角显示该单词。