diff options
Diffstat (limited to 'tex/context/base/mkiv/page-bck.mkxl')
-rw-r--r-- | tex/context/base/mkiv/page-bck.mkxl | 715 |
1 files changed, 0 insertions, 715 deletions
diff --git a/tex/context/base/mkiv/page-bck.mkxl b/tex/context/base/mkiv/page-bck.mkxl deleted file mode 100644 index 94e4f4a95..000000000 --- a/tex/context/base/mkiv/page-bck.mkxl +++ /dev/null @@ -1,715 +0,0 @@ -%D \module -%D [ file=page-bck, % copied from main-001 -%D version=1997.03.31, -%D title=\CONTEXT\ Page Macros, -%D subtitle=Backgrounds, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -% Currently the text cells are fakes and no (foreground) frames which makes sense -% as order might matter e.g. is text sticks in other cells. The page, text etc -% areas do support foreground order change. - -\writestatus{loading}{ConTeXt Page Macros / Backgrounds} - -\unprotect - -% maybe use \currentframedhash here - -%D For special purposes, users can question the \type {*background} mode. This mode -%D is only available when typesetting the pagebody. -%D -%D \starttyping -%D \startmode[*background] ... -%D \stoptyping - -\newconditional\c_page_backgrounds_new -\newconditional\c_page_backgrounds_new_right -\newconditional\c_page_backgrounds_new_left -\newconditional\c_page_backgrounds_some - -\appendtoks - \ifconditional\c_page_backgrounds_some - \ifconditional\c_page_backgrounds_new - \setsystemmode\v!background - \fi - \fi -\to \everybeforepagebody - -\permanent\protected\def\initializepagebackgrounds - {\setfalse\c_page_backgrounds_new - \setfalse\c_page_backgrounds_new_right - \setfalse\c_page_backgrounds_new_left - \setfalse\c_page_backgrounds_some} - -%D We keep calculations and checks to a minimum and also try to minimize -%D the amount of tracing due to expansion. - -\let\currentotrbackground\empty - -%D This is the only spot where we have a low level dependency on the way -%D parent chains are defined but we want the speed. - -\protected\def\page_backgrounds_check_background - {\ifcsname\??framed\currentotrbackground:\c!background\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!background\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifempty\page_background_temp - \expandafter\expandafter\expandafter\page_backgrounds_check_frame - \else - \page_backgrounds_set_yes - \fi - \else - \expandafter\page_backgrounds_check_frame - \fi} - -\def\page_backgrounds_check_frame - {\ifcsname\??framed\currentotrbackground:\c!frame\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!frame\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifx\page_background_temp\v!on - \page_backgrounds_set_yes - \else - \expandafter\expandafter\expandafter\page_backgrounds_check_leftframe - \fi - \else - \expandafter\page_backgrounds_check_leftframe - \fi} - -\def\page_backgrounds_check_leftframe - {\ifcsname\??framed\currentotrbackground:\c!leftframe\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!leftframe\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifx\page_background_temp\v!on - \page_backgrounds_set_yes - \else - \expandafter\expandafter\expandafter\page_backgrounds_check_rightframe - \fi - \else - \expandafter\page_backgrounds_check_rightframe - \fi} - -\def\page_backgrounds_check_rightframe - {\ifcsname\??framed\currentotrbackground:\c!rightframe\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!rightframe\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifx\page_background_temp\v!on - \page_backgrounds_set_yes - \else - \expandafter\expandafter\expandafter\page_backgrounds_check_topframe - \fi - \else - \expandafter\page_backgrounds_check_topframe - \fi} - -\def\page_backgrounds_check_topframe - {\ifcsname\??framed\currentotrbackground:\c!topframe\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!topframe\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifx\page_background_temp\v!on - \page_backgrounds_set_yes - \else - \expandafter\expandafter\expandafter\page_backgrounds_check_bottomframe - \fi - \else - \expandafter\page_backgrounds_check_bottomframe - \fi} - -\def\page_backgrounds_check_bottomframe - {\ifcsname\??framed\currentotrbackground:\c!bottomframe\endcsname - %\edef\page_background_temp{\csname\??framed\currentotrbackground:\c!bottomframe\endcsname}% - \edef\page_background_temp{\lastnamedcs}% - \ifx\page_background_temp\v!on - \page_backgrounds_set_yes - \else - \page_backgrounds_set_nop - \fi - \else - \page_backgrounds_set_nop - \fi} - -%D We don't use the commandhandler code as we want these multitude of backgrounds to be -%D as fast as possible. - -\installcorenamespace{layoutbackgrounds} -\installcorenamespace{layoutbackgroundcheck} % we need another hash as \??layoutbackgrounds<...> gets defined - -\def\page_backgrounds_set_yes{\letcsname\currentotrbackground\endcsname\relax } -\def\page_backgrounds_set_nop{\letcsname\currentotrbackground\endcsname\undefined} - -\protected\def\page_backgrounds_check#1% - {\edef\currentotrbackground{\??layoutbackgrounds#1}% - \page_backgrounds_check_background} - -\permanent\def\doifelsesomebackground#1% - {\ifcsname\??layoutbackgrounds#1\endcsname - \expandafter\firstoftwoarguments - \else - \expandafter\secondoftwoarguments - \fi} - -\aliased\let\doifsomebackgroundelse\doifelsesomebackground - -\permanent\def\doifsomebackground#1% - {\ifcsname\??layoutbackgrounds#1\endcsname - \expandafter\firstofoneargument - \else - \expandafter\gobbleoneargument - \fi} - -%D The background mechanism falls back on the \type {\framed} macro. This means -%D that all normal frame and overlay features can be used. - -\def\page_backgrounds_add_to_box#1% area - {\ifcsname\??layoutbackgrounds#1\endcsname - \expandafter\page_backgrounds_add_to_box_indeed - \else - \expandafter\gobblefourarguments - \fi#1} - -%D We don't need the dimensions here as this is a real framed but the question is: -%D do we indeed need a real framed or can we use a fake (i.e. no foreground, only -%D for hidden). - -\def\page_backgrounds_add_to_box_indeed#1#2#3#4% area box width height / always non zero - {\edef\p_page_backgrounds_setups{\namedframedparameter{\??layoutbackgrounds#1}\c!setups}% - \ifempty\p_page_backgrounds_setups \else - \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces ! - \fi - % #2 has the right dimensions already - \setbox#2\hpack{\localbackgroundframed{\??layoutbackgrounds#1}#1#2}}% a real framed (including foreground) - - -%D There are quite some backgrounds. At the bottom layer, there is the {\em paper} -%D background. This one is only used for special purposes, like annotations to -%D documents. - -\def\page_backgrounds_add_to_print#1% - {\page_backgrounds_add_to_box\v!paper#1\printpaperwidth\printpaperheight} - -%D The page backgrounds can be put behind the {\em left page}, the {\em right page} -%D or {\em each page}. As with the paper background, these are calculated on each -%D page. - -\def\page_backgrounds_add_to_paper#1% - {\doifbothsidesoverruled - {\page_backgrounds_add_to_box\v!rightpage#1\paperwidth\paperheight}% - {\page_backgrounds_add_to_box\v!rightpage#1\paperwidth\paperheight}% - {\page_backgrounds_add_to_box\v!leftpage #1\paperwidth\paperheight}% - \page_backgrounds_add_to_box\v!page#1\paperwidth\paperheight} - -%D Then there are the 25 areas that make up the layout: {\em top, header, text, -%D footer, bottom} times {\em left edge, left margin, text, right margin, right -%D edge}. These are only recalculated when they change or when the \type {status} -%D is set to \type {repeat}. - -\newbox\leftbackground % todo: rename -\newbox\rightbackground % todo: rename - -%D Finaly there is an aditional {\em text} background, again useful for special -%D purposes only. This one is calculated each time. The hidden backgrounds are not -%D meant for users! - -\newconditional\c_page_backgrounds_hidden_enabled - -\def\page_backgrounds_add_to_text#1% - {\ifconditional\c_page_backgrounds_hidden_enabled - \page_backgrounds_add_to_box\v!hidden#1\makeupwidth\textheight % mine ! - \fi - \page_backgrounds_add_to_box\v!text#1\makeupwidth\textheight} - -%D The next couple of macros implement the area backgrounds. As said, these are -%D cached in dedicated boxes. The offsets and depth of the page are used for -%D alignment purposes. - -%newdimen\pageoffset % bleed -%newdimen\pagedepth % built-in - -%D We need a bit more clever mechanism in order to handle layers well. This means -%D that we cannot calculate both background at the same time since something may -%D have changed halfway a page. - -%D Margin swapping has been simplified: see mkii code in case of regression. -%D Calculation is delayed till the page anyway so the state is known. - -\def\page_backgrounds_recalculate - {\global\settrue\c_page_backgrounds_new} - -\def\page_backgrounds_set_boxes - {\ifconditional\c_page_backgrounds_new - \page_backgrounds_set_boxes_r - \fi - \doifbothsides - \page_backgrounds_set_boxes_a - \page_backgrounds_set_boxes_b - \page_backgrounds_set_boxes_c - \ifx\p_page_backgrounds_state\v!repeat\else - \global\setfalse\c_page_backgrounds_new - \fi} - -\def\page_backgrounds_set_boxes_r - {\global\settrue\c_page_backgrounds_new_right - \global\settrue\c_page_backgrounds_new_left - \global\setbox\leftbackground\emptybox - \global\setbox\rightbackground\emptybox} - -\def\page_backgrounds_set_boxes_a - {\ifconditional\c_page_backgrounds_new_left - % \showmessage\m!layouts8\empty - \page_backgrounds_set_box\leftbackground % \conditionalfalse - \global\setfalse\c_page_backgrounds_new_left - \global\setfalse\c_page_backgrounds_new_right - \fi} - -\def\page_backgrounds_set_boxes_b - {\ifconditional\c_page_backgrounds_new_left - % \showmessage\m!layouts8\empty - \page_backgrounds_set_box\leftbackground - \global\setfalse\c_page_backgrounds_new_left - \fi} - -\def\page_backgrounds_set_boxes_c - {\ifconditional\c_page_backgrounds_new_right - % \showmessage\m!layouts8\empty - \page_backgrounds_set_box\rightbackground - \global\setfalse\c_page_backgrounds_new_right - \fi} - -\def\page_backgrounds_add_to_main#1% todo: dimension spec - {\ifconditional\c_page_backgrounds_some - \page_backgrounds_set_boxes - \setbox#1\vpack - {\offinterlineskip - \doifelsemarginswap{\copy\leftbackground}{\copy\rightbackground}% - \box#1}% - \fi} - -\newdimen\pagebackgroundhoffset % THESE WILL BECOME OBSOLETE -\newdimen\pagebackgroundvoffset -\newdimen\pagebackgroundoffset % used elsewhere -\newdimen\pagebackgrounddepth -\newdimen\pagebackgroundcompensation - -\def\page_backgrounds_set_offsets % used in menus (we can use ifcsname's here) - {\ifconditional\c_page_backgrounds_some \ifconditional\c_page_backgrounds_new - \page_backgrounds_set_offsets_indeed % indirect, less tracing - \fi \fi} - -\def\page_backgrounds_set_offsets_indeed - {\ifcsname\??layoutbackgrounds\v!text\v!text\endcsname - \page_backgrounds_set_offsets_yes - \orelse\ifcsname\??layoutbackgrounds\v!text\endcsname - \page_backgrounds_set_offsets_yes - \else - \page_backgrounds_set_offsets_nop - \fi} - -\def\page_backgrounds_set_offsets_nop - {\global\pagebackgroundhoffset \zeropoint - \global\pagebackgroundvoffset \zeropoint - \global\pagebackgrounddepth \zeropoint - \global\pagebackgroundcompensation\zeropoint} - -\def\page_backgrounds_set_offsets_yes - {\global\pagebackgroundoffset \d_page_backgrounds_depth - \global\pagebackgroundcompensation\d_page_backgrounds_offset\relax - \ifzeropt\pagebackgroundcompensation - \page_backgrounds_set_offsets_nop - \else - \ifcsname\??layoutbackgrounds\v!top\v!text\endcsname - \global\pagebackgroundhoffset\zeropoint - \orelse\ifcsname\??layoutbackgrounds\v!bottom\v!text\endcsname - \global\pagebackgroundhoffset\zeropoint - \else - \global\pagebackgroundhoffset\pagebackgroundcompensation - \fi - \ifcsname\??layoutbackgrounds\v!text\v!rightedge\endcsname - \global\pagebackgroundvoffset\zeropoint - \global\pagebackgrounddepth \zeropoint - \orelse\ifcsname\??layoutbackgrounds\v!text\v!leftedge\endcsname - \global\pagebackgroundvoffset\zeropoint - \global\pagebackgrounddepth \zeropoint - \else - \global\pagebackgroundvoffset\pagebackgroundcompensation - \global\pagebackgrounddepth \d_page_backgrounds_depth - \fi - \fi} - -\appendtoks - \page_backgrounds_set_offsets -\to \everybeforepagebody - -\newconditional\swapbackgroundmargins \settrue\swapbackgroundmargins - -%D The swapping here is pretty nasty! Maybe we should find another way some day but -%D for now we tweak. - -\def\page_backgrounds_set_box#1% #2% - {\global\setbox#1\vpack - {\dontcomplain - \swapmargins - \ifconditional\swapbackgroundmargins - \doifelsemarginswap \donothing - {\enforced\swapcsvalues\v!rightmargin\v!leftmargin - \enforced\swapcsvalues\v!rightedge \v!leftedge}% - \fi - \calculatereducedvsizes - \offinterlineskip - % \ifconditional#2\relax - % \doswapmargins % hm, this one gets nilled in \swapmargins anyway - % \fi - \ifdim\topheight>\zeropoint - \kern\dimexpr-\topheight-\topdistance\relax - \page_backgrounds_set_box_row\v!top\topheight - \kern\topdistance - \fi - \ifdim\headerheight>\zeropoint - \page_backgrounds_set_box_row\v!header\headerheight - \kern\headerdistance - \fi - \ifdim\textheight>\zeropoint - \page_backgrounds_set_box_row\v!text\textheight - \fi - \ifdim\footerheight>\zeropoint - \kern\footerdistance - \page_backgrounds_set_box_row\v!footer\footerheight - \fi - \ifdim\bottomheight>\zeropoint - \kern\bottomdistance - \page_backgrounds_set_box_row\v!bottom\bottomheight - \fi - \vfilll}% - \smashbox#1} - -\def\page_backgrounds_set_box_row#1#2% maybe helper - {\setbox\scratchbox\vpack to #2 - \bgroup\hpack\bgroup - \goleftonpage - \ifdim\leftedgewidth>\zeropoint - \ifcsname\??layoutbackgrounds#1\v!leftedge\endcsname - \page_backgrounds_set_box_cell#1\v!leftedge\leftedgewidth#2% - \else - \kern\leftedgewidth - \fi - \kern\leftedgedistance - \fi - \ifdim\leftmarginwidth>\zeropoint - \ifcsname\??layoutbackgrounds#1\v!leftmargin\endcsname - \page_backgrounds_set_box_cell#1\v!leftmargin\leftmarginwidth#2% - \else - \kern\leftmarginwidth - \fi - \kern\leftmargindistance - \fi - \ifcsname\??layoutbackgrounds#1\v!text\endcsname - \page_backgrounds_set_box_cell#1\v!text\makeupwidth#2% - \else - \kern\makeupwidth - \fi - \ifdim\rightmarginwidth>\zeropoint - \kern\rightmargindistance - \ifcsname\??layoutbackgrounds#1\v!rightmargin\endcsname - \page_backgrounds_set_box_cell#1\v!rightmargin\rightmarginwidth#2% - \else - \kern\rightmarginwidth - \fi - \fi - \ifdim\rightedgewidth>\zeropoint - \kern\rightedgedistance - \ifcsname\??layoutbackgrounds#1\v!rightedge\endcsname - \page_backgrounds_set_box_cell#1\v!rightedge\rightedgewidth#2% - \else - \kern\rightedgewidth - \fi - \fi - \egroup\egroup - \wd\scratchbox\zeropoint - \box\scratchbox\relax} - -% these are fake framed .. maybe it's nicer to honor foreground here as well -% but it's probably a slow downer - -\def\page_backgrounds_set_box_cell#1#2#3#4% pos pos width height - {\begingroup - \edef\p_page_backgrounds_setups{\namedframedparameter{\??layoutbackgrounds#1#2}\c!setups}% - \ifempty\p_page_backgrounds_setups \else - \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces ! - \fi - \edef\p_page_backgrounds_command{\namedframedparameter{\??layoutbackgrounds#1#2}\c!command}% - \ifempty\p_page_backgrounds_command - \expandafter\page_backgrounds_set_box_cell_nop - \else - \expandafter\page_backgrounds_set_box_cell_yes - \fi#3#4% - \localbackgroundframed{\??layoutbackgrounds#1#2}{#1:#2}\scratchbox - \endgroup} - -\def\page_backgrounds_set_box_cell_nop#1#2% - {\setbox\scratchbox\emptyvbox - \wd\scratchbox#1% - \ht\scratchbox#2} - -\def\page_backgrounds_set_box_cell_yes#1#2% - {\setbox\scratchbox\vpack to #2{\vss\hpack to#1{\hss\p_page_backgrounds_command\hss}\vss}% - \dp\scratchbox\zeropoint} - -%D The background mechanism is quite demanding in terms or resources. We used to -%D delay these definitions till runtime usage, but since today's \TEX's are large, -%D we now do the work on forehand. -%D -%D \starttyping -%D \setupbackgrounds [settings] -%D \setupbackgrounds [paper,page,text,..] [settings] -%D \setupbackgrounds [top,...] [leftedge,...] [settings] -%D \stoptyping -%D -%D \showsetup{setupbackgrounds} -%D -%D Because the number of arguments runs from one to three, we need to check -%D for it. - -\newtoks\everybackgroundssetup - -% \permanent\protected\def\setupbackgrounds -% {\dotripleempty\page_backgrounds_setup} -% -% \def\page_backgrounds_setup -% {\ifthirdargument -% \expandafter\page_backgrounds_setup_double -% \orelse\ifsecondargument -% \expandafter\page_backgrounds_setup_single -% \orelse\iffirstargument -% \expandafter\page_backgrounds_setup_basics -% \fi} - -\permanent\tolerant\protected\def\setupbackgrounds[#1]#*[#2]#*[#3]% - {\ifarguments - \expandafter\gobblethreeoptionals - \or - \expandafter\page_backgrounds_setup_basics - \or - \expandafter\page_backgrounds_setup_single - \or - \expandafter\page_backgrounds_setup_double - \fi[#1][#2][#3]} - -\newdimen\d_page_backgrounds_offset -\newdimen\d_page_backgrounds_depth - -\appendtoks - \edef\p_page_backgrounds_offset{\namedframedparameter{\??layoutbackgrounds\v!page}\c!offset}% - \edef\p_page_backgrounds_depth {\namedframedparameter{\??layoutbackgrounds\v!page}\c!depth }% - \edef\p_page_backgrounds_state {\namedframedparameter{\??layoutbackgrounds }\c!state }% - \global\d_page_backgrounds_offset\ifempty\p_offset\zeropoint\else\p_page_backgrounds_offset\fi - \global\d_page_backgrounds_depth \ifempty\p_depth \zeropoint\else\p_page_backgrounds_depth \fi - \global\pagebackgroundoffset\d_page_backgrounds_offset\relax - \global\pagebackgrounddepth \d_page_backgrounds_depth \relax - \ifx\p_page_backgrounds_state\v!stop - \global\setfalse\c_page_backgrounds_new - \else - \global\settrue \c_page_backgrounds_new - \fi -\to \everybackgroundssetup - -\def\v_page_backgrounds_double_set{\v!paper,\v!page,\v!leftpage,\v!rightpage} -\def\v_page_backgrounds_single_set{\v!text,\v!hidden,\v!paper,\v!page,\v!leftpage,\v!rightpage} -\def\v_page_backgrounds_common_set{\v!leftedge,\v!leftmargin,\v!text,\v!rightmargin,\v!rightedge} - -\protected\def\page_backgrounds_setup_double[#1][#2][#3]% if needed we can speed this up - {\global\settrue\c_page_backgrounds_some - \def\page_backgrounds_setup_step##1% - {\doifelseinset{##1}\v_page_backgrounds_double_set - {\page_backgrounds_setup_and_check{##1}{#3}} - {\def\page_backgrounds_setup_step_nested####1{\page_backgrounds_setup_and_check{##1####1}{#3}}% - \processcommacommand[#2]\page_backgrounds_setup_step_nested}}% - \processcommacommand[#1]\page_backgrounds_setup_step - \the\everybackgroundssetup} - -\protected\def\page_backgrounds_setup_single[#1][#2][#3]% - {\global\settrue\c_page_backgrounds_some - \doifelsecommon{#1}\v_page_backgrounds_single_set - {\def\page_backgrounds_setup_step##1{\page_backgrounds_setup_and_check{##1}{#2}}% - \processcommacommand[#1]\page_backgrounds_setup_step - \the\everybackgroundssetup}% - {\page_backgrounds_setup_double[#1][\v_page_backgrounds_common_set][#2]}} - -\protected\def\page_backgrounds_setup_basics[#1][#2][#3]% - {\setupframed[\??layoutbackgrounds][#1]% - \the\everybackgroundssetup} - -\protected\def\page_backgrounds_setup_and_check#1#2% tag settings - {\edef\currentotrbackground{\??layoutbackgrounds#1}% - \setupframed[\currentotrbackground][#2]% - \page_backgrounds_check_background} - -%D Each areas (currently there are $1+3+25+1=30$ of them) has its own low level -%D framed object associated. - -\definesimplifiedframed[\??layoutbackgrounds\v!paper] -\definesimplifiedframed[\??layoutbackgrounds\v!page] -\definesimplifiedframed[\??layoutbackgrounds\v!leftpage] -\definesimplifiedframed[\??layoutbackgrounds\v!rightpage] - -\definesimplifiedframed[\??layoutbackgrounds\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!hidden] - -\definesimplifiedframed[\??layoutbackgrounds\v!top\v!leftedge] -\definesimplifiedframed[\??layoutbackgrounds\v!top\v!leftmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!top\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!top\v!rightmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!top\v!rightedge] - -\definesimplifiedframed[\??layoutbackgrounds\v!header\v!leftedge] -\definesimplifiedframed[\??layoutbackgrounds\v!header\v!leftmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!header\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!header\v!rightmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!header\v!rightedge] - -\definesimplifiedframed[\??layoutbackgrounds\v!text\v!leftedge] -\definesimplifiedframed[\??layoutbackgrounds\v!text\v!leftmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!text\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!text\v!rightmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!text\v!rightedge] - -\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!leftedge] -\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!leftmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!rightmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!rightedge] - -\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!leftedge] -\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!leftmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!text] -\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!rightmargin] -\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!rightedge] - -\setupbackgrounds - [\v!page] - [\c!offset=\zeropoint, % hm, so we need to force overlay elsewhere - \c!depth=\zeropoint] - -%D General setup: - -\setupbackgrounds - [\c!state=\c!start] - -%D The hidden layer can be populated by extending the following comma separated -%D list. This only happens in core modules. - -% todo page-2 .. page+2 achter pagina -> bleed -% spread-2 .. spread+2 achter spread -> spread (repeat 2 times) - -\permanent\protected\def\enablehiddenbackground - {\global\settrue\c_page_backgrounds_hidden_enabled - \global\settrue\c_page_backgrounds_some - \page_backgrounds_recalculate} - -\permanent\protected\def\disablehiddenbackground - {\global\setfalse\c_page_backgrounds_hidden_enabled} - -\def\hiddenbackgroundlist - {\v!text-2,\v!text-1,\v!foreground,\v!text+1,\v!text+2} - -\defineoverlay[\v!text-2][\positionregionoverlay\textanchor{\v!text-2}] % no new anchor, we share text -\defineoverlay[\v!text-1][\positionregionoverlay\textanchor{\v!text-1}] -\defineoverlay[\v!text+1][\positionregionoverlay\textanchor{\v!text+1}] -\defineoverlay[\v!text+2][\positionregionoverlay\textanchor{\v!text+2}] - -\setupbackgrounds - [\v!hidden] - [\c!background=\hiddenbackgroundlist] - -%D Because we haven't really set up backgrounds yet, we set the main efficiency -%D switch to false. - -\setfalse\c_page_backgrounds_some - -%D Sometimes you have a document wide (page) background but need to overload it -%D locally. In such case (at least in my experience) the only values that get set -%D are the background and backgroundcolor (if set at all). A full inheritance chain -%D would complicate things because then we need to use named backgrounds which in -%D turn will make this mechanism slower. I considered independent local backgrounds -%D but that also complicates the code (not that much) but isolation means that we -%D need to set more parameters each time. The following simple approach proabbly -%D suits most usage. -%D -%D \starttyping -%D \starttext -%D \setupbackgrounds[page][background=color,backgroundcolor=red] -%D \input tufte \page -%D \setupbackgrounds[page][background=,backgroundcolor=] -%D \input tufte \page -%D \setupbackgrounds[page][background=color,backgroundcolor=red] -%D \input tufte \page -%D \pushbackground[page] -%D \setupbackgrounds[page][background=color,backgroundcolor=green] -%D \input tufte \page -%D \popbackground -%D \input tufte \page -%D \stoptext -%D \stoptyping - -\permanent\protected\def\pushbackground[#1]% - {\pushmacro\popbackground - \edef\currentotrbackground{\??layoutbackgrounds#1}% - \enforced\permanent\protected\edef\popbackground - {\setupframed - [\currentotrbackground] - [\c!background=\namedframedparameter{\currentotrbackground}\c!background, - \c!backgroundcolor=\namedframedparameter{\currentotrbackground}\c!backgroundcolor]% - \page_backgrounds_check_background - \popmacro\popbackground}% - \setupframed - [\currentotrbackground] - [\c!background=,\c!backgroundcolor=]% - \page_backgrounds_check_background} - -\permanent\let\popbackground\relax - -\protect \endinput - -% %D The next series is used in local (for instance floating) backgrounds. -% -% \installsimplifiedframed{\??layoutbackgrounds\v!local} -% -% \getparameters -% [\??layoutbackgrounds\v!local] -% [\c!component=local, -% \c!background=\localbackgroundlist] -% -% \def\localbackgroundlist -% {\v!local-2,\v!local-1,\v!foreground,\v!local+1,\v!local+2} -% -% \defineoverlay[\v!local-2][\positionoverlay{\v!local-2}] % todo share -% \defineoverlay[\v!local-1][\positionoverlay{\v!local-1}] -% \defineoverlay[\v!local+1][\positionoverlay{\v!local+1}] -% \defineoverlay[\v!local+2][\positionoverlay{\v!local+2}] -% -% \def\page_backgrounds_add_local_to_box -% {\ifconditional\c_page_backgrounds_hidden_enabled -% \expandafter\page_backgrounds_add_local_to_box_indeed -% \else -% \expandafter\gobbleoneargument -% \fi} -% -% \def\page_backgrounds_add_local_to_box_indeed#1% -% {\setbox#1\hbox{\localbackgroundframed{\??layoutbackgrounds\v!local}\v!local#1}% -% \global\advance\localpositionnumber\plusone} % afterwards ! -% -% \let\page_backgrounds_add_local_to_box\gobbleoneargument - -% Test how previous macro behaves with depth: -% -% \startcolumnset -% \input tufte -% \placefigure{none}{\framed[lines=5]{xxx}} -% \input tufte -% \placefigure{none}{\starttabulate\NC test\nc test\NC\NR\stoptabulate} -% \input tufte -% \stopcolumnset - |