diff options
Diffstat (limited to 'tex/context/base/page-bck.mkiv')
-rw-r--r-- | tex/context/base/page-bck.mkiv | 394 |
1 files changed, 192 insertions, 202 deletions
diff --git a/tex/context/base/page-bck.mkiv b/tex/context/base/page-bck.mkiv index cc4db92fb..100c186dd 100644 --- a/tex/context/base/page-bck.mkiv +++ b/tex/context/base/page-bck.mkiv @@ -11,18 +11,19 @@ %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. +% todo: ma:r:c +% +% 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 ares 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 For special purposes, users can question the \type +%D {*background} mode. This mode is only available when +%D typesetting the pagebody. %D %D \starttyping %D \startmode[*background] ... @@ -41,23 +42,17 @@ \fi \to \everybeforepagebody -\unexpanded\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. +%D We keep calculations and checks to a minimum and also +%D try to minimize the amount of tracing due to expansion. \let\currentotrbackground\empty -%D This is the only spot where we hav ea low level dependency on the way -%D parent chains are defined but we want the speed. +\def\page_backgrounds_set_yes{\expandafter\let\csname\currentotrbackground\endcsname\relax } +\def\page_backgrounds_set_nop{\expandafter\let\csname\currentotrbackground\endcsname\undefined} \def\page_backgrounds_check_background - {\ifcsname\??framed\currentotrbackground:\c!background\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!background\endcsname}% + {\ifcsname\currentotrbackground\c!background\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!background\endcsname}% \ifx\page_background_temp\empty \expandafter\expandafter\expandafter\page_backgrounds_check_frame \else @@ -68,8 +63,8 @@ \fi} \def\page_backgrounds_check_frame - {\ifcsname\??framed\currentotrbackground:\c!frame\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!frame\endcsname}% + {\ifcsname\currentotrbackground\c!frame\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!frame\endcsname}% \ifx\page_background_temp\v!on \page_backgrounds_set_yes \else @@ -80,8 +75,8 @@ \fi} \def\page_backgrounds_check_leftframe - {\ifcsname\??framed\currentotrbackground:\c!leftframe\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!leftframe\endcsname}% + {\ifcsname\currentotrbackground\c!leftframe\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!leftframe\endcsname}% \ifx\page_background_temp\v!on \page_backgrounds_set_yes \else @@ -92,8 +87,8 @@ \fi} \def\page_backgrounds_check_rightframe - {\ifcsname\??framed\currentotrbackground:\c!rightframe\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!rightframe\endcsname}% + {\ifcsname\currentotrbackground\c!rightframe\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!rightframe\endcsname}% \ifx\page_background_temp\v!on \page_backgrounds_set_yes \else @@ -104,8 +99,8 @@ \fi} \def\page_backgrounds_check_topframe - {\ifcsname\??framed\currentotrbackground:\c!topframe\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!topframe\endcsname}% + {\ifcsname\currentotrbackground\c!topframe\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!topframe\endcsname}% \ifx\page_background_temp\v!on \page_backgrounds_set_yes \else @@ -116,8 +111,8 @@ \fi} \def\page_backgrounds_check_bottomframe - {\ifcsname\??framed\currentotrbackground:\c!bottomframe\endcsname - \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!bottomframe\endcsname}% + {\ifcsname\currentotrbackground\c!bottomframe\endcsname + \edef\page_background_temp{\csname\currentotrbackground\c!bottomframe\endcsname}% \ifx\page_background_temp\v!on \page_backgrounds_set_yes \else @@ -127,66 +122,58 @@ \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{\expandafter\let\csname\currentotrbackground\endcsname\relax } -\def\page_backgrounds_set_nop{\expandafter\let\csname\currentotrbackground\endcsname\undefined} - -\unexpanded\def\page_backgrounds_check#1% - {\edef\currentotrbackground{\??layoutbackgrounds#1}% +\def\page_backgrounds_check#1% + {\edef\currentotrbackground{\??ma#1}% \page_backgrounds_check_background} +\def\ifsomebackgroundfound#1% + {\ifcsname\??ma#1\endcsname} + \def\doifsomebackgroundelse#1% - {\ifcsname\??layoutbackgrounds#1\endcsname + {\ifcsname\??ma#1\endcsname \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments \fi} \def\doifsomebackground#1% - {\ifcsname\??layoutbackgrounds#1\endcsname + {\ifcsname\??ma#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. +%D The background mechanism falls back on the \type {\framed} +%D macro. This means that all normal frame and overlay +%D features can be used. \def\page_backgrounds_add_to_box#1% area - {\ifcsname\??layoutbackgrounds#1\endcsname + {\ifcsname\??ma#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). +% we don't need the dimensions here as this is a real framed but the question is: do we indeed +% need a real framed or can we use a fake (i.e. no foreground, only 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}% - \ifx\p_page_backgrounds_setups\empty \else - \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces ! + {\ifcsname\??ma#1\c!setups\endcsname % to be done + \doprocesslocalsetups{\csname\??ma#1\c!setups\endcsname}% should not produce funny spaces ! \fi % #2 has the right dimensions already - \setbox#2\hbox{\localbackgroundframed{\??layoutbackgrounds#1}#1#2}}% a real framed (including foreground) - + \setbox#2\hbox{\localbackgroundframed{\??ma#1}#1#2}}% a real framed (including foreground) -%D There are quite some backgrounds. At the bottom layer, there is the {\em -%D paper} background. This one is only used for special purposes, like -%D annotations to documents. +%D There are quite some backgrounds. At the bottom layer, +%D there is the {\em paper} background. This one is only +%D used for special purposes, like annotations to 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 -%D right page} or {\em each page}. As with the paper background, these are -%D calculated on each page. +%D The page backgrounds can be put behind the {\em left +%D page}, the {\em right page} or {\em each page}. As with +%D the paper background, these are calculated on each page. \def\page_backgrounds_add_to_paper#1% {\doifbothsidesoverruled @@ -195,17 +182,18 @@ {\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}. +%D Then there are the 25 areas that make up the layout: {\em +%D top, header, text, footer, bottom} times {\em left edge, +%D left margin, text, right margin, right edge}. These are +%D only recalculated when they change or when the \type +%D {status} 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 -%D special purposes only. This one is calculated each time. The hidden -%D backgrounds are not meant for users! +%D Finaly there is an aditional {\em text} background, again +%D useful for special purposes only. This one is calculated +%D each time. The hidden backgrounds are not meant for users! \newconditional\c_page_backgrounds_hidden_enabled @@ -215,19 +203,21 @@ \fi \page_backgrounds_add_to_box\v!text#1\makeupwidth\textheight} -%D The next couple of macros implement the area backgrounds. As said, these -%D are cached in dedicated boxes. The offsets and depth of the page are used -%D for alignment purposes. +%D The next couple of macros implement the area backgrounds. +%D As said, these are cached in dedicated boxes. The offsets +%D and depth of the page are used for alignment purposes. -%newdimen\pageoffset % bleed -%newdimen\pagedepth % built-in +\newdimen\pageoffset % bleed +\newdimen\pagedepth -%D We need a bit more clever mechanism in order to handle layers well. -%D This means that we cannot calculate both background at the same time -%D since something may have changed halfway a page. +%D We need a bit more clever mechanism in order to handle +%D layers well. This means that we cannot calculate both +%D background at the same time since something may have +%D 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. +%D Margin swapping has been simplified: see mkii code in case of +%D regression. Calculation is delayed till the page anyway so the +%D state is known. \def\page_backgrounds_recalculate {\global\settrue\c_page_backgrounds_new} @@ -240,7 +230,7 @@ \page_backgrounds_set_boxes_a \page_backgrounds_set_boxes_b \page_backgrounds_set_boxes_c - \ifx\p_page_backgrounds_state\v!repeat\else + \ifx\@@mastate\v!repeat\else \global\setfalse\c_page_backgrounds_new \fi} @@ -283,19 +273,20 @@ \newdimen\pagebackgroundhoffset % THESE WILL BECOME OBSOLETE \newdimen\pagebackgroundvoffset -\newdimen\pagebackgroundoffset % used elsewhere \newdimen\pagebackgrounddepth \newdimen\pagebackgroundcompensation +\newdimen\pagebackgroundoffset % used elsewhere + \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 + {\ifcsname\??ma\v!text\v!text\endcsname \page_backgrounds_set_offsets_yes - \else\ifcsname\??layoutbackgrounds\v!text\endcsname + \else\ifcsname\??ma\v!text\endcsname \page_backgrounds_set_offsets_yes \else \page_backgrounds_set_offsets_nop @@ -308,27 +299,26 @@ \global\pagebackgroundcompensation\zeropoint} \def\page_backgrounds_set_offsets_yes - {\global\pagebackgroundoffset \d_page_backgrounds_depth - \global\pagebackgroundcompensation\d_page_backgrounds_offset\relax + {\global\pagebackgroundcompensation\csname\??ma\v!page\c!offset\endcsname\relax \ifzeropt\pagebackgroundcompensation \page_backgrounds_set_offsets_nop \else - \ifcsname\??layoutbackgrounds\v!top\v!text\endcsname + \ifcsname\??ma\v!top\v!text\endcsname \global\pagebackgroundhoffset\zeropoint - \else\ifcsname\??layoutbackgrounds\v!bottom\v!text\endcsname + \else\ifcsname\??ma\v!bottom\v!text\endcsname \global\pagebackgroundhoffset\zeropoint \else \global\pagebackgroundhoffset\pagebackgroundcompensation \fi\fi - \ifcsname\??layoutbackgrounds\v!text\v!rightedge\endcsname + \ifcsname\??ma\v!text\v!rightedge\endcsname \global\pagebackgroundvoffset\zeropoint \global\pagebackgrounddepth \zeropoint - \else\ifcsname\??layoutbackgrounds\v!text\v!leftedge\endcsname + \else\ifcsname\??ma\v!text\v!leftedge\endcsname \global\pagebackgroundvoffset\zeropoint \global\pagebackgrounddepth \zeropoint \else \global\pagebackgroundvoffset\pagebackgroundcompensation - \global\pagebackgrounddepth \d_page_backgrounds_depth + \global\pagebackgrounddepth \csname\??ma\v!page\c!depth\endcsname\relax \fi\fi \fi} @@ -380,7 +370,7 @@ \bgroup\hbox\bgroup \goleftonpage \ifdim\leftedgewidth>\zeropoint - \ifcsname\??layoutbackgrounds#1\v!leftedge\endcsname + \ifcsname\??ma#1\v!leftedge\endcsname \page_backgrounds_set_box_cell#1\v!leftedge\leftedgewidth#2% \else \kern\leftedgewidth @@ -388,21 +378,21 @@ \kern\leftedgedistance \fi \ifdim\leftmarginwidth>\zeropoint - \ifcsname\??layoutbackgrounds#1\v!leftmargin\endcsname + \ifcsname\??ma#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 + \ifcsname\??ma#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 + \ifcsname\??ma#1\v!rightmargin\endcsname \page_backgrounds_set_box_cell#1\v!rightmargin\rightmarginwidth#2% \else \kern\rightmarginwidth @@ -410,7 +400,7 @@ \fi \ifdim\rightedgewidth>\zeropoint \kern\rightedgedistance - \ifcsname\??layoutbackgrounds#1\v!rightedge\endcsname + \ifcsname\??ma#1\v!rightedge\endcsname \page_backgrounds_set_box_cell#1\v!rightedge\rightedgewidth#2% \else \kern\rightedgewidth @@ -425,31 +415,30 @@ \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}% - \ifx\p_page_backgrounds_setups\empty \else - \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces ! + \ifcsname\??ma#1#2\c!setups\endcsname + \doprocesslocalsetups{\csname\??ma#1#2\c!setups\endcsname}% should not produce funny spaces ! \fi - \edef\p_page_backgrounds_command{\namedframedparameter{\??layoutbackgrounds#1#2}\c!command}% - \ifx\p_page_backgrounds_command\empty + \ifcsname\??ma#1#2\c!command\endcsname \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 + \fi#1#2#3#4% + \localbackgroundframed{\??ma#1#2}{#1:#2}\scratchbox \endgroup} -\def\page_backgrounds_set_box_cell_nop#1#2% +\def\page_backgrounds_set_box_cell_nop#1#2#3#4% {\setbox\scratchbox\emptyvbox - \wd\scratchbox#1% - \ht\scratchbox#2} + \wd\scratchbox#3% + \ht\scratchbox#4} -\def\page_backgrounds_set_box_cell_yes#1#2% - {\setbox\scratchbox\vbox to #2{\vss\hbox to#1{\hss\p_page_backgrounds_command\hss}\vss}% +\def\page_backgrounds_set_box_cell_yes#1#2#3#4% + {\setbox\scratchbox\vbox to #4{\vss\hbox to#3{\hss\csname\??ma#1#2\c!command\endcsname\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 The background mechanism is quite demanding in terms or +%D resources. We used to delay these definitions till runtime +%D usage, but since today's \TEX's are large, we now do the +%D work on forehand. %D %D \starttyping %D \setupbackgrounds [settings] @@ -459,115 +448,110 @@ %D %D \showsetup{setupbackgrounds} %D -%D Because the number of arguments runs from one to three, we need to check -%D for it. +%D Because the number of arguments runs from one to three, +%D we need to check for it. \newtoks\everybackgroundssetup \unexpanded\def\setupbackgrounds {\dotripleempty\page_backgrounds_setup} -\def\page_backgrounds_setup +\def\page_backgrounds_setup[#1][#2][#3]% {\ifthirdargument - \expandafter\page_backgrounds_setup_double + \page_backgrounds_setup_double{#1}{#2}{#3}% \else\ifsecondargument - \doubleexpandafter\page_backgrounds_setup_single + \page_backgrounds_setup_single{#1}{#2}% \else\iffirstargument - \tripleexpandafter\page_backgrounds_setup_basics - \fi\fi\fi} - -\newdimen\d_page_backgrounds_offset -\newdimen\d_page_backgrounds_depth + \page_backgrounds_setup_basics{#1}% + \fi\fi\fi + \the\everybackgroundssetup} \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\ifx\p_offset\empty\zeropoint\else\p_page_backgrounds_offset\fi - \global\d_page_backgrounds_depth \ifx\p_depth \empty\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 + \doifelsevalue{\??ma\v!page\c!offset}\v!overlay + {\global\pageoffset\zeropoint} + {\global\pageoffset\csname\??ma\v!page\c!offset\endcsname}% + \global\pagedepth\csname\??ma\v!page\c!depth\endcsname + \global\pagebackgroundoffset\pageoffset + \global\pagebackgrounddepth\pagedepth + \doifelse\@@mastate\v!stop + {\global\setfalse\c_page_backgrounds_new} + {\global\settrue \c_page_backgrounds_new}% \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} -\def\page_backgrounds_setup_double[#1][#2][#3]% if needed we can speed this up +\def\page_backgrounds_setup_double#1#2#3% {\global\settrue\c_page_backgrounds_some - \def\page_backgrounds_setup_step##1% + \def\docommand##1% {\doifinsetelse{##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}}% - \processcommalist[#2]\page_backgrounds_setup_step_nested}}% - \processcommalist[#1]\page_backgrounds_setup_step - \the\everybackgroundssetup} + {\def\dodocommand####1{\page_backgrounds_setup_and_check{##1####1}{#3}}% + \processcommalist[#2]\dodocommand}}% + \processcommalist[#1]\docommand} -\def\page_backgrounds_setup_single[#1][#2][#3]% +\def\page_backgrounds_setup_single#1#2% {\global\settrue\c_page_backgrounds_some \doifcommonelse{#1}\v_page_backgrounds_single_set - {\def\page_backgrounds_setup_step##1{\page_backgrounds_setup_and_check{##1}{#2}}% - \processcommalist[#1]\page_backgrounds_setup_step - \the\everybackgroundssetup}% - {\page_backgrounds_setup_double[#1][\v_page_backgrounds_common_set][#2]}} + {\def\docommand##1{\page_backgrounds_setup_and_check{##1}{#2}}% + \processcommalist[#1]\docommand}% + {\page_backgrounds_setup_double{#1}\v_page_backgrounds_common_set{#2}}} -\def\page_backgrounds_setup_basics[#1][#2][#3]% - {\setupframed[\??layoutbackgrounds][#1]% - \the\everybackgroundssetup} +\def\page_backgrounds_setup_basics#1% + {\getparameters[\??ma][#1]} \def\page_backgrounds_setup_and_check#1#2% tag settings - {\edef\currentotrbackground{\??layoutbackgrounds#1}% - \setupframed[\currentotrbackground][#2]% + {\edef\currentotrbackground{\??ma#1}% + \getparameters[\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] +%D Each areas (currently there are $1+3+25+1=30$ of them) +%D has its own low level framed object associated. -\setupbackgrounds - [\v!page] +% hm, we can delay them + +\unexpanded\def\installsomebackground#1#2{\inheritlocalframed[\??ma#1#2][\??od]} + +\installsomebackground \v!paper \empty +\installsomebackground \v!page \empty +\installsomebackground \v!leftpage \empty +\installsomebackground \v!rightpage \empty + +%D The stand alone text area inherits from the page too. + +\installsomebackground \v!text \empty +\installsomebackground \v!hidden \empty + +%D We save some keying by defining the areas using a helper: + +\def\docommand#1% + {\installsomebackground#1\v!leftedge + \installsomebackground#1\v!leftmargin + \installsomebackground#1\v!text + \installsomebackground#1\v!rightmargin + \installsomebackground#1\v!rightedge} + +\docommand \v!top +\docommand \v!header +\docommand \v!text +\docommand \v!footer +\docommand \v!bottom + +%D We need some cleanup now. + +\let\docommand\relax + +%D We now set up the individual areas to use reasonable +%D defaults. + +\installsomebackground \v!paper \empty +\installsomebackground \v!page \empty +\installsomebackground \v!leftpage \empty +\installsomebackground \v!rightpage \empty + +\getparameters + [\??ma\v!page] [\c!offset=\zeropoint, % hm, so we need to force overlay elsewhere \c!depth=\zeropoint] @@ -576,23 +560,29 @@ \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. +%D The hidden layer can be populated by extending the +%D following comma separated list. This only happens in core +%D modules. % todo page-2 .. page+2 achter pagina -> bleed % spread-2 .. spread+2 achter spread -> spread (repeat 2 times) -\unexpanded\def\enablehiddenbackground +\def\enablehiddenbackground {\global\settrue\c_page_backgrounds_hidden_enabled \global\settrue\c_page_backgrounds_some \page_backgrounds_recalculate} -\unexpanded\def\disablehiddenbackground +\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][\positionoverlay{\v!text-2}] +% \defineoverlay[\v!text-1][\positionoverlay{\v!text-1}] +% \defineoverlay[\v!text+1][\positionoverlay{\v!text+1}] +% \defineoverlay[\v!text+2][\positionoverlay{\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}] @@ -602,19 +592,13 @@ [\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 - -\protect \endinput +% The next series is used in local (for instance floating) +% backgrounds. -% %D The next series is used in local (for instance floating) backgrounds. -% -% \installsimplifiedframed{\??layoutbackgrounds\v!local} +% \installsomebackground \v!local \empty % not really a background, invisible for users % % \getparameters -% [\??layoutbackgrounds\v!local] +% [\??ma\v!local] % [\c!component=local, % \c!background=\localbackgroundlist] % @@ -634,7 +618,7 @@ % \fi} % % \def\page_backgrounds_add_local_to_box_indeed#1% -% {\setbox#1\hbox{\localbackgroundframed{\??layoutbackgrounds\v!local}\v!local#1}% +% {\setbox#1\hbox{\localbackgroundframed{\??ma\v!local}\v!local#1}% % \global\advance\localpositionnumber\plusone} % afterwards ! % % \let\page_backgrounds_add_local_to_box\gobbleoneargument @@ -649,3 +633,9 @@ % \input tufte % \stopcolumnset +%D Because we haven't really set up backgrounds yet, we set +%D the main efficiency switch to false. + +\setfalse\c_page_backgrounds_some + +\protect \endinput |