%D \module %D [ file=page-grd, % moved from page-ini %D version=2011.12.07, % 2000.10.20, %D title=\CONTEXT\ Page Macros, %D subtitle=Grids, %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. \writestatus{loading}{ConTeXt Page Macros / Grids} \unprotect \newconstant\c_page_grids_location \newconstant\c_page_grids_line_mode \newconstant\c_page_grids_lineno_mode \newconstant\c_page_grids_columns_mode \unexpanded\def\showgrid {\dosingleempty\page_grids_show} \def\page_grids_show[#1]% {\c_page_grids_location \plusone % downward compatible default \c_page_grids_line_mode \plusone \c_page_grids_lineno_mode \plusone \c_page_grids_columns_mode\plusone \processallactionsinset [#1]% [ \v!reset=>\c_page_grids_location \zerocount, \v!bottom=>\c_page_grids_location \plusone, \v!top=>\c_page_grids_location \plustwo, \v!none=>\c_page_grids_line_mode \zerocount, \v!all=>\c_page_grids_line_mode \plusone, \v!lines=>\c_page_grids_line_mode \plustwo, \v!frame=>\c_page_grids_line_mode \plusthree, \v!nonumber=>\c_page_grids_lineno_mode\zerocount, \v!right=>\c_page_grids_lineno_mode\plusone, \v!left=>\c_page_grids_lineno_mode\plustwo, \v!outer=>\c_page_grids_lineno_mode\plusthree]% \ifcase\c_page_grids_location \let\page_grids_add_to_box\gobbleoneargument \else % 1=bottom 2=top \let\page_grids_add_to_box\page_grids_add_to_box_indeed \fi \ifcase\c_page_grids_columns_mode \let\page_grids_add_to_one\gobbleoneargument \let\page_grids_add_to_mix\gobbleoneargument \else \let\page_grids_add_to_one\page_grids_add_to_one_indeed \let\page_grids_add_to_mix\page_grids_add_to_mix_indeed \fi} % if really needed for speed we can cache the grid \let\page_grids_add_to_box\gobbleoneargument \let\page_grids_add_to_one\gobbleoneargument \let\page_grids_add_to_mix\gobbleoneargument \def\page_grids_add_to_box_indeed#1% to be checked for color and layer ..... use mp {\startcolor[layout:grid]% \resetvisualizers \gridboxlinemode \c_page_grids_line_mode \gridboxlinenomode\c_page_grids_lineno_mode \setgridbox\scratchbox\makeupwidth\textheight % todo: check color \global\setbox#1\hbox % global ? {\ifcase\c_page_grids_location\or\or\box#1\hskip-\makeupwidth\fi \begingroup % color \ifcase\layoutcolumns\else \gray \setlayoutcomponentattribute{\v!grid:\v!columns}% \hbox \layoutcomponentboxattribute to \makeupwidth {\dorecurse\layoutcolumns {\hskip\layoutcolumnwidth \ifnum\recurselevel<\layoutcolumns \vrule \s!height\ht\scratchbox \s!depth \dp\scratchbox \s!width \layoutcolumndistance \fi}}% \hskip-\makeupwidth \fi \setlayoutcomponentattribute{\v!grid:\v!lines}% \hbox \layoutcomponentboxattribute{\box\scratchbox}% \endgroup \ifcase\c_page_grids_location\or\hskip-\makeupwidth\box#1\fi}% \stopcolor} \def\page_grids_add_to_one_indeed#1% {\begingroup \resetvisualizers \global\setbox#1\vbox{\backgroundline[layout:one]{\box#1}}% \endgroup} \def\page_grids_add_to_mix_indeed#1% {\begingroup \resetvisualizers \global\setbox#1\vbox{\backgroundline[layout:mix]{\box#1}}% \endgroup} \protect \endinput