%D \module %D [ file=page-pls, %D version=2003.03.16, %D title=\CONTEXT\ Page Macros, %D subtitle=Page Setup, %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. \ifx\pageareabox\undefined \else \endinput \fi \writestatus{loading}{ConTeXt Page Macros / Extra Page Building} %D This feature has been present for a while but has never been %D exploited: pluggable pagebuilders. The next example code %D demonstrates the application of one such a plug-in. This variant %D support \type {page}, \type {leftpage} and \type {rightpage} %D definitions where specific areas are placed with the \type %D {\pagearea} command. %D %D \starttyping %D \setupheadertexts[the header text] %D \setupfootertexts[a pretty long left footer text][something right] %D \setupbottomtexts[a not so long bottom text][another right thing] %D \setuptexttexts [margin][something marginal][indeed] %D %D \startpagelayout[leftpage] %D \setupTABLE[offset=overlay] %D \setupTABLE[c][1][width=\leftmarginwidth] %D \bTABLE %D \bTR %D \bTD[nx=3,background=color,backgroundcolor=green] %D \pagearea[header][text][middle] %D \eTD %D \eTR %D \bTR %D \bTD \pagearea[text][margin][left] \eTD %D \bTD[nx=2] \pagearea[text] \eTD %D \eTR %D \bTR %D \bTD[nx=3,offset=overlay] %D {\bTABLE[width=.5\hsize] %D \bTR %D \bTD \pagearea[footer][text][left] \eTD %D \bTD \pagearea[bottom][text][left] \eTD %D \eTR %D \eTABLE} %D \eTD %D \eTR %D \eTABLE %D \stoppagelayout %D %D \startpagelayout[rightpage] %D \setupTABLE[offset=overlay] %D \setupTABLE[c][1][width=\rightmarginwidth] %D \bTABLE %D \bTR %D \bTD[nx=3] \pagearea[header][text][middle] \eTD %D \eTR %D \bTR %D \bTD \pagearea[text][margin][left] \eTD %D \bTD[nx=2] \pagearea[text] \eTD %D \eTR %D \bTR %D \bTD[nx=3,offset=overlay] %D {\bTABLE[width=.5\hsize] %D \bTR %D \bTD \pagearea[bottom][text][right] \eTD %D \bTD \pagearea[footer][text][right] \eTD %D \eTR %D \eTABLE} %D \eTD %D \eTR %D \eTABLE %D \stoppagelayout %D %D \setupcolors[state=start] %D %D \setupbackgrounds[text][background=color,backgroundcolor=blue] %D \setupbackgrounds[header][text][background=color,backgroundcolor=red] %D %D \setuppagenumbering[alternative=doublesided,location=] %D %D \setuplayout[method=makeup] %D %D \definetextbackground %D [test] %D [state=start, %D background=color, %D backgroundcolor=yellow] %D %D \starttext %D %D \dorecurse{10}{\input tufte \par} %D %D \input tufte \starttest \input tufte \stoptest \input tufte %D %D \starttabulate %D \NC test \NC \starttest \input tufte \stoptest \NC \NR %D \stoptabulate %D %D \dorecurse{10}{\input tufte \par} %D %D \stoptext %D \stoptyping \unprotect \setvalue{\??ly\c!method\v!makeup}#1#2% {\setbox\pagebox\hbox {\vbox to \textheight {\offinterlineskip % optie \vskip\dimexpr-1\topskip+\strutheight\relax % \textwidth\makeupwidth \hsize\textwidth \boxmaxdepth\maxdepth \noindent \dopagecontents#1#2}}% \wd\pagebox\makeupwidth \ht\pagebox\textheight \dp\pagebox\zeropoint \hsize\paperwidth \vsize\paperheight \setbox\pagebox\vbox {\doifbothsidesoverruled {\let\!!stringa\v!page} {\let\!!stringa\v!rightpage} {\let\!!stringa\v!leftpage}% \getvalue{\??ly\c!method:\!!stringa}}% \wd\pagebox\paperwidth \ht\pagebox\paperheight \dp\pagebox\zeropoint} \newbox\pageareabox \def\pagearea {\dotripleempty\dopagearea} \def\dopagearea[#1][#2][#3]% {\ifthirdargument \doifelse{#3}\v!left {\dodopagearea{#1}{#2}\c!lefttext} {\doifelse{#3}\v!right {\dodopagearea{#1}{#2}\c!righttext} {\dodopagearea{#1}{#2}\c!middletext}}% \else\ifsecondargument \doifbothsidesoverruled {\dodopagearea{#1}{#2}\c!righttext} {\dodopagearea{#1}{#2}\c!righttext} {\dodopagearea{#1}{#2}\c!lefttext }% \else \doif{#1}\v!text % copy due to trial runs in TABLE {\iftrialtypesetting \copy\pagebox \else \setbox\pagebox\vbox {\localstarttextcolor \box\pagebox \localstoptextcolor}% \localpositioningfalse \addtextbackground\pagebox \addtextgridlayer\pagebox \box\pagebox \fi}% \fi\fi} \def\dodopagearea#1#2#3% {\setbox\pageareabox\vbox{\getvalue{\??tk#1#2#3}}% \ifsomebackgroundfound{#1#2}% \iftrialtypesetting \box\pageareabox \else \localframed [\??ma#1#2] [\c!width=\wd\pageareabox, \c!height=\ht\pageareabox, \c!offset=\v!overlay] {\box\pageareabox}% \fi \else \box\pageareabox \fi} \setvalue{\??ly\c!method:\v!leftpage }{\getvalue{\??ly\c!method:\v!page}} \setvalue{\??ly\c!method:\v!rightpage}{\getvalue{\??ly\c!method:\v!page}} % \long\def\startpagelayout[#1]#2\stoppagelayout % {\long\setvalue{\??ly\c!method:#1}{#2}} \long\def\startpagelayout {\bgroup\catcode`\^^M=\@@ignore\dostartpagelayout} \long\def\dostartpagelayout[#1]#2\stoppagelayout {\egroup\long\setvalue{\??ly\c!method:#1}{#2}} \protect \endinput