Lost document background
Hi Hans, under certain circumstances document backgrounds (overlays) are lost. A minimum real live example is this: \definelayer[test] \setuppagenumbering[alternative=doublesided] \setupmakeup[standard][doublesided=empty] % background is lost %\setupmakeup[standard][doublesided=yes] % background is visible \startsetups[test] \setlayer[test][hoffset=4cm,voffset=7cm]{\tfd text} \stopsetups \setupbackgrounds[page][background=test,setups=test] \starttext \startstandardmakeup text \stopstandardmakeup test \stoptext With 'doublesided=yes' the background is visible but with 'doublesided=empty' no background is shown. I spend a few hours to find the reason for this and i was able to produce a shorter example: \defineoverlay[test][\tfd text] \setupbackgrounds[page][background=test,state=repeat] \starttext text\page\page[blank]\null\page %\chardef\pageornamentstate\zerocount text \stoptext The problem is that '\page[blank]' sets \pageornamentstate at global level to '1'. Wolfgang
Am 24.05.10 10:48, schrieb Wolfgang Schuster:
Hi Hans,
under certain circumstances document backgrounds (overlays) are lost.
A minimum real live example is this:
\definelayer[test]
\setuppagenumbering[alternative=doublesided]
\setupmakeup[standard][doublesided=empty] % background is lost %\setupmakeup[standard][doublesided=yes] % background is visible
\startsetups[test] \setlayer[test][hoffset=4cm,voffset=7cm]{\tfd text} \stopsetups
\setupbackgrounds[page][background=test,setups=test]
\starttext
\startstandardmakeup text \stopstandardmakeup
test
\stoptext
With 'doublesided=yes' the background is visible but with 'doublesided=empty' no background is shown.
I spend a few hours to find the reason for this and i was able to produce a shorter example:
\defineoverlay[test][\tfd text]
\setupbackgrounds[page][background=test,state=repeat]
\starttext
text\page\page[blank]\null\page
%\chardef\pageornamentstate\zerocount
text
\stoptext
The problem is that '\page[blank]' sets \pageornamentstate at global level to '1'.
I found a fix in a older ConTeXt version: \def\dopagebreak[#1]% so, page ornaments are reset after a pagebreak command, unless set {\bgroup \flushnotes \edef\prevrealpageno{\the\realpageno}% \ifcase\pageornamentstate \or % disable reset after shipout \global\chardef\pageornamentstate\plustwo \fi \iffirstargument % or if empty i.e. [] \executepagebreakhandlers{#1}% \else % so, no pagebreak when \pagebreak[] ! ! ! \executepagebreakhandler\v!yes \fi \ifnum\prevrealpageno<\realpageno \global\chardef\pageornamentstate\zerocount \fi \egroup} Wolfgang
On 24-5-2010 10:51, Wolfgang Schuster wrote:
I found a fix in a older ConTeXt version:
\def\dopagebreak[#1]% so, page ornaments are reset after a pagebreak command, unless set {\bgroup \flushnotes \edef\prevrealpageno{\the\realpageno}% \ifcase\pageornamentstate \or % disable reset after shipout \global\chardef\pageornamentstate\plustwo \fi \iffirstargument % or if empty i.e. [] \executepagebreakhandlers{#1}% \else % so, no pagebreak when \pagebreak[] ! ! ! \executepagebreakhandler\v!yes \fi \ifnum\prevrealpageno<\realpageno \global\chardef\pageornamentstate\zerocount \fi \egroup}
there must be a reason why i added the ifcase; for the moment i commented it and we'll have to wait till we run into another border case (much if this code needs a rewrite anyway) i added your testcase as tests/mkiv/pages/ornaments-001.tex Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Wolfgang Schuster