Hi Pavneet, I recommend avoiding the mod function. Just draw the two grids (major and minor) each with their own spacing and pen.
I whole heatedly support converting TikZ to MetaPost! - Gavin \startreusableMPgraphic{graph} minor=2mm; % Minor lines, each every 2mm major=8mm; % Major lines, each every 4mm z1 = (0,0); % lower left corner % z2 = (2.75in,4.25in)-z1; % upper right corner z2 = (2.75in,4.25in)-z1;% upper right corner path v, h; v := z1--(x1,y2); % vertical line h := z1--(x2,y1); % horizontal line % Use light gray drawoptions(withcolor .4white); % Draw the minor grid with the very thin pen pickup pencircle scaled 0.1; for i=minor step minor until (x2-x1): draw v xshifted i; endfor; for i=minor step minor until (y2-y1): draw h yshifted i; endfor; % Draw the major grid with the thicker pen pickup pencircle scaled 0.3; for i=major step major until (x2-x1): draw v xshifted i; endfor; for i=major step major until (y2-y1): draw h yshifted i; endfor; \stopreusableMPgraphic > On Feb 18, 2025, at 3:28 PM, Pavneet Arora via ntg-context > <ntg-context@ntg.nl> wrote: > > I am in the process of converting a bunch of old TikZ notepaper > templates to native ConTeXt and MetaPost. This is a part of a project > to generate notebooks with documentation data and then blank pages appended to > fill out full sheets, and then collated in a particular order for trimming and > binding. > > As such I rely on Imposition. I am having issues with the various > techniques of trying to duplicate a MP graphic across the pages using > \[start|stop]MPcode \[start|stop]useMPgraphic, etc. But that is a > discussion for another time. > > The method that I found to work was to use > \[start|stop]reusableMPgraphic along with overlays > > I am still struggling with some MetaPost code that works fine in > standalone but not when included in a ConTeXt document. > > With standalone MP, we get thicker lines on major increments as > expected. When the same code is included in a ConTeXt document the > thicker lines are only drawn up a certain number and then stop --- > presumably the mod function returning a non-zero result when it really > shouldn't? > > Here are the MWEs: > >>>> ConTeXt > % Paper size and layout {{{2 > \definepapersize > | [PocketPage] > | [width=2.75in,height=4.25in] > > \setuppapersize[PocketPage][letter,landscape] > % }}}2 > > % MetaPost template for graph paper for pocket sized notebook (2.75" W x > % 4.25in H). {{{2 > > \startreusableMPgraphic{graph} > minor=2mm;| | % Minor lines, each every 2mm > major=8mm;| | % Major lines, each every 4mm > ┆ ┆ ┆ ┆ % major must be a multiple of minor > > z1 = (0,0);| % lower left corner > % z2 = (2.75in,4.25in)-z1;| % upper right corner > z2 = (2.75in,4.25in)-z1;|% upper right corner > > % Use the very thin pen > pickup pencircle scaled 0.1; > > % Draw the vertical lines > for i=minor step minor until (y2-y1): > ┆ if (i mod major)=0: > ┆ ┆ pickup pencircle scaled 0.3; > ┆ fi; > ┆ draw (z1 shifted (0,i))--((x2,y1) shifted (0,i)) withcolor .4white; > ┆ if (i mod major)=0: > ┆ ┆ pickup pencircle scaled 0.1; > ┆ fi; > endfor; > > % Draw the horizonal lines > for i=minor step minor until (x2-x1): > ┆ if (i mod major)=0: > ┆ ┆ pickup pencircle scaled 0.3; > ┆ fi; > ┆ draw ( z1--(x1,y2) ) shifted (i,0) withcolor .4white; > ┆ if (i mod major)=0: > ┆ ┆ pickup pencircle scaled 0.1; > ┆ fi; > endfor; > > \stopreusableMPgraphic > > \defineoverlay[OLgraph][\useMPgraphic{graph}] > > \setupbackgrounds[page][background=OLgraph] > % }}}2 > > \starttext > > hello. > > \stoptext > > <<< > >>>> Standalone MP > beginfig(1) > > margin=0mm; % Margin of the graph paper > minor=2mm; % Minor lines, each every 1mm > major=8mm; % Major lines, each every 10mm > % major must be a multiple of minor > > z1 = (margin,margin); % lower left corner > z2 = (2.75in,4.25in)-z1; % upper right corner > > % % Use the thick pen first > % pickup pencircle scaled 0.5; > > % % Draw the frame > % draw z1--(x1,y2)--z2--(x2,y1)--cycle withcolor .5white; > > % Use the very thin pen > pickup pencircle scaled 0.1; > > % Draw the vertical lines > for i=minor step minor until (y2-y1-minor): > if (i mod major)=0: > pickup pencircle scaled 0.3; > fi; > draw (z1 shifted (0,i))--((x2,y1) shifted (0,i)) withcolor .4white; > if (i mod major)=0: > pickup pencircle scaled 0.1; > fi; > endfor; > > % Draw the horizonal lines > for i=minor step minor until (x2-x1-minor): > if (i mod major)=0: > pickup pencircle scaled 0.3; > fi; > draw ( z1--(x1,y2) ) shifted (i,0) withcolor .4white; > if (i mod major)=0: > pickup pencircle scaled 0.1; > fi; > endfor; > > endfig; > end; > > <<< > > advTHANKance > > -- > Pavneet Arora m: +1 647-406-6843 > Waroc Informatik e: pavneet_ar...@waroc.com > ___________________________________________________________________________________ > If your question is of interest to others as well, please add an entry to the > Wiki! > > maillist : ntg-context@ntg.nl / > https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl > webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) > archive : https://github.com/contextgarden/context > wiki : https://wiki.contextgarden.net > ___________________________________________________________________________________ ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________