%D \module %D [ file=t-overviewpage, %D version=2016.06.17, %D title=\CONTEXT\ User Module, %D subtitle=Page Overviews, %D author=Aditya Mahajan and Hans Hagen, %D date=\currentdate, %D copyright=Aditya Mahajan, %D email=adityam ieee org, %D license=Simplified BSD License] \writestatus{loading}{Overview Page (ver: 2016.06.17)} \startmodule [overviewpage] \unprotect \setupmodule [\c!level=] \installnamespace{overviewpage} \initializeboxstack{\????overviewpage} \newconditional\c_overviewpage_state \newconditional\c_overviewpage_shipout \unexpanded\def\enablesaveoverviewpage {\global\settrue\c_overviewpage_state \global\settrue\c_overviewpage_shipout} \unexpanded\def\enableonlyoverviewpage {\global\settrue\c_overviewpage_state \global\setfalse\c_overviewpage_shipout} \unexpanded\def\saveoverviewpage#1% {\enablesaveoverviewpage \setxvalue{\????overviewpage:page:#1}{\the\realpageno}} \unexpanded\def\saveonlyoverviewpage#1% {\enableonlyoverviewpage \setxvalue{\????overviewpage:page:#1}{\the\realpageno}} \unexpanded\def\useoverviewpage#1% {\writestatus{overviewpage}{using page #1 (\getvalue{\????overviewpage:page:#1})}% \gotopage {\foundbox{\????overviewpage}{\getvalue{\????overviewpage:page:#1}}} [\getvalue{\????overviewpage:page:#1}]} \unexpanded\def\overviewpage_save_page#1% {\ifconditional\c_overviewpage_state \setbox\nextbox\hbox{#1}% \setbox\scratchbox\copy\nextbox \cleanupbox\scratchbox % remove nodes that should not be seen in the backend twice \writestatus{overviewpage}{saving overviewpage \the\realpageno}% \savebox{\????overviewpage}{\the\realpageno}{\box\scratchbox}% \global\setfalse\c_overviewpage_state \ifconditional\c_overviewpage_shipout \page_shipouts_normal{\box\nextbox}% \fi \else \page_shipouts_normal{#1}% \fi} \appendtoks \doif {\headparameter{option:overviewpage}} \v!yes \enablesaveoverviewpage \to \everyheadsynchronization \installshipoutmethod{overviewpage}\overviewpage_save_page \unexpanded\def\overviewpage_setup_head#1% {\setuphead[#1][option:overviewpage=\v!yes]} \appendtoks \processcommacommand [\moduleparameter{overviewpage}\c!level] \overviewpage_setup_head \to \everysetupmodule \the\everysetupmodule \setuppaper [\c!method=overviewpage] \definelistalternative [overviewpage] [\c!renderingsetup=\??listrenderings:overview] \setuplistalternative [overviewpage] [\c!before=\dontleavehmode, \c!after=\hskip\zeropoint\relax, % \c!width=\ctxlua{moduledata.overviewpage.calculatedwidth(\listlength)}] \c!width=\ctxlua{moduledata.overviewpage.calculatedwidth(structures.lists.size())}] \startsetups[\??listrenderings:overview] \doifboxelse{\????overviewpage}{\structurelistrealpagenumber} {\listalternativeparameter\c!before \startcurrentlistentrywrapper \scale [\c!width=\listalternativeparameter\c!width] {\foundbox{\????overviewpage}{\structurelistrealpagenumber}}% \stopcurrentlistentrywrapper \listalternativeparameter\c!after} {}% \stopsetups \definemakeup [overviewpage] [\c!align=\v!middle] \definelayout [overviewpage] [\v!page] \startluacode moduledata = moduledata or { } moduledata.overviewpage = moduledata.overviewpage or { } function moduledata.overviewpage.calculatedwidth(pages) context("%f\\textwidth",1/math.ceil(math.sqrt(pages))) end \stopluacode % Ideally, we would like to simply use the definition below. % However, the `before` and `after` keys are not used with `\placecombinedlist`. % Therefore we use a more manual solution. % \definecombinedlist [overviewpage] [\moduleparameter{overviewpage}\c!level] [ %\c!before=\startoverviewpagemakeup, %\c!after=\stopoverviewpagemakeup, \c!criterium=\v!all, \c!alternative=overviewpage, ] \unexpanded\def\placeoverviewpage {\dosingleargument\doplaceoverviewpage} \def\doplaceoverviewpage[#1]% {\startoverviewpagemakeup \placecombinedlist[overviewpage][#1] \stopoverviewpagemakeup} \protect \stopmodule