# [NTG-context] MetaFun: how to check the number of arguments

Hans Hagen j.hagen at xs4all.nl
Wed Jan 16 09:35:46 CET 2019

```On 1/16/2019 12:53 AM, Jeong Dal wrote:
> Dear Hans,
>
> Thank you for a solution.
>
> In my memory, it is possible to check the argument in Lua, so I hope
> that there is a similar method in MetaFun.
> It may be easier to draw grid using lines instead of squares.

vardef textlength(text t) =
save n ; n := 0 ;
for i = t :
n := n + 1 ;
endfor;
n
enddef;

def drawGridF (expr nb) (text s) =
if textlength(s) = 0 :
draw textext("A grid!");
else :
path p ;
picture pic ;
numeric n;
p := unitsquare scaled wu;
n:= 0;
for m = s:
i:= n mod nb;
j:= n div nb;
pic := image (draw p; label(textext(m), center p); );
draw pic shifted (i*wu, j*wu);
n:= n+ 1;
endfor;
fi ;
enddef;

> Thank you again.
>
> Best regards,
>
> Dalyoung
>
>> 2019. 1. 16. 오전 2:04, Hans Hagen <j.hagen at xs4all.nl
>> <mailto:j.hagen at xs4all.nl>> 작성:
>>
>> On 1/14/2019 10:44 PM, Jeong Dal wrote:
>>> Dear all,
>>> In the following sample, it draws squares with label which is given.
>>> I’d like to know how to check the number of elements in the second
>>> argument?
>>> If it is 0, then I just draw grids only.
>>> Thank you for reading.
>>> Best regards,
>>> Dalyoung
>>> ********
>>> \startbuffer[defs]
>>> def drawGridF (expr nb) (text s) =
>>> p := unitsquare scaled wu;
>>> n:= 0;
>>> for m = s:
>>> i:= n mod nb;
>>> j:= n div nb;
>>> pic := image (draw p; label(textext(m), center p); );
>>> draw pic shifted (i*wu, j*wu);
>>> n:= n+ 1;
>>> endfor;
>>> enddef;
>>> \stopbuffer
>>> \startbuffer[3x3b]
>>> wu := \MPvar{width};
>>> drawGridF (3)  (1,2,3,0,1, 1,4,5,8);
>>> \stopbuffer
>>> \starttext
>>> \setupMPvariables[width=30pt]
>>> \processMPbuffer[defs,3x3b]
>>> \stoptext
>>
>>
>> \startbuffer[defs]
>> def drawGridF (expr nb) (text s) =
>>    path p ;
>>    picture pic ;
>>    numeric n;
>> p := unitsquare scaled wu;
>> n:= 0;
>> for m = s:
>> i:= n mod nb;
>> j:= n div nb;
>> pic := image (draw p; label(textext(m), center p); );
>> draw pic shifted (i*wu, j*wu);
>> n:= n+ 1;
>> endfor;
>>    if n == 0 :
>>        draw textext("A grid!");
>>    fi ;
>> enddef;
>> \stopbuffer
>>
>> \startbuffer[3x3b]
>> wu := \MPvar{width};
>> drawGridF (3)  (1,2,3,0,1, 1,4,5,8);
>> currentpicture := currentpicture shifted (bbwidth(currentpicture),0);
>> drawGridF (3)  ();
>> \stopbuffer
>>
>> \setupMPvariables[width=30pt]
>> \processMPbuffer[defs,3x3b]
>>
>>
>>
>>
>>>> 2019. 1. 14. 오후 8:00, ntg-context-request at ntg.nl
>>>> <mailto:ntg-context-request at ntg.nl> 작성:
>>>>
>>>> Send ntg-context mailing list submissions to
>>>> ntg-context at ntg.nl <mailto:ntg-context at ntg.nl>
>>>>
>>>> To subscribe or unsubscribe via the World Wide Web, visit
>>>> https://mailman.ntg.nl/mailman/listinfo/ntg-context
>>>> or, via email, send a message with subject or body 'help' to
>>>> ntg-context-request at ntg.nl
>>>>
>>>> You can reach the person managing the list at
>>>> ntg-context-owner at ntg.nl
>>>>
>>>> When replying, please edit your Subject line so it is more specific
>>>> than "Re: Contents of ntg-context digest..."
>>>>
>>>>
>>>> Today's Topics:
>>>>
>>>>   1. Re: Manipulating the left blank page when chapter starts on
>>>>      the right page (Wolfgang Schuster)
>>>>   2. Re: Footnotes in float combinations missing in output
>>>>      (Wolfgang Schuster)
>>>>   3. Re: Manipulating the left blank page when chapter starts on
>>>>      the right page (Jan U. Hasecke)
>>>>
>>>>
>>>> ----------------------------------------------------------------------
>>>>
>>>> Message: 1
>>>> Date: Sun, 13 Jan 2019 16:56:40 +0100
>>>> From: Wolfgang Schuster <wolfgang.schuster.lists at gmail.com>
>>>> To: mailing list for ConTeXt users <ntg-context at ntg.nl>, "Jan U.
>>>> Hasecke" <juh+ntg-context at mailbox.org>
>>>> Subject: Re: [NTG-context] Manipulating the left blank page when
>>>> chapter starts on the right page
>>>> Message-ID: <cad2dcf9-ce2c-203a-88c2-41315bd5f825 at gmail.com>
>>>> Content-Type: text/plain; charset=utf-8; format=flowed
>>>>
>>>> Jan U. Hasecke schrieb am 12.01.19 um 22:08:
>>>>>
>>>>> Am 12.01.19 um 20:11 schrieb Aditya Mahajan:
>>>>>> On Sat, 12 Jan 2019, Jan U. Hasecke wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> in my document \startchapter and \starttitle starts a new chapter
>>>>>>> on the
>>>>>>> right (odd) page. So sometimes, there is a blank even page just
>>>>>>> before a
>>>>>>> new chapter.
>>>>>>>
>>>>>>> I would like to manipulate this blank even page.
>>>>>>>
>>>>>>> There are several things I would like to do, eg. having no
>>>>>>> footers, setting the background color to a named color, placing
>>>>>>> an image
>>>>>>> or some graphics on the page.
>>>>>>>
>>>>>>> Is there a way to define such a page, name it and call it in
>>>>>>> \startchapter so that it is placed on the left side.
>>>>>> See https://tex.stackexchange.com/q/457428/323
>>>>> Thanks a lot, but I wasn't looking for a way to just delete page
>>>>> numbers
>>>>> but to style the empty page in arbitrary ways.
>>>>>
>>>>> Maybe it is better to do this manually.
>>>>>
>>>>> I would let chapter open on even pages too and just insert a styled
>>>>> page
>>>>> by hand.
>>>>
>>>> Here is a example which shows how you can change the background color
>>>> of a empty page before the chapter title.
>>>>
>>>> \setuppagenumbering
>>>>   [alternative=doublesided]
>>>>
>>>> \startsetups [chapter:before]
>>>>   \doifoddpageelse
>>>>     {}
>>>>     {\pushbackground[page]
>>>>      \setupbackgrounds[page][background=color,backgroundcolor=black]
>>>>      \page[empty,right]
>>>>      \popbackground}
>>>> \stopsetups
>>>>
>>>>   [chapter]
>>>>   [page=yes,
>>>>    before=\directsetup{chapter:before}]
>>>>
>>>> \starttext
>>>>
>>>> \startchapter[title={Knuth}]
>>>> \dorecurse{10}{\samplefile{knuth}}
>>>> \stopchapter
>>>>
>>>> \startchapter[title={Zapf}]
>>>> \dorecurse{10}{\samplefile{zapf}}
>>>> \stopchapter
>>>>
>>>> \startchapter[title={Ward}]
>>>> \dorecurse{10}{\samplefile{ward}}
>>>> \stopchapter
>>>>
>>>> \stoptext
>>>>
>>>> Wolfgang
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>>
>>>> Message: 2
>>>> Date: Sun, 13 Jan 2019 21:06:42 +0100
>>>> From: Wolfgang Schuster <wolfgang.schuster.lists at gmail.com>
>>>> To: mailing list for ConTeXt users <ntg-context at ntg.nl>, Lars
>>>> <axteffekt at gmail.com>
>>>> Subject: Re: [NTG-context] Footnotes in float combinations missing in
>>>> output
>>>> Message-ID: <e14cd1c5-400e-14bf-d8bf-a47ef28b6550 at gmail.com>
>>>> Content-Type: text/plain; charset=utf-8; format=flowed
>>>>
>>>> Lars schrieb am 09.01.19 um 23:01:
>>>>> Hi there, hi Hans,
>>>>>
>>>>> I just want to let you know that footnotes insterted in
>>>>> float-combinations don't get rendered properly, i. e. only the last
>>>>> footnote is placed in the output. MWE:
>>>>>
>>>>> \starttext
>>>>>   \startplacefigure[title={OuterCap\footnote{Outer footnote}}]
>>>>>
>>>>>     \startfloatcombination[nx=3]
>>>>> \placefigure{Fnote1\footnote{Hello}}{\externalfigure[cow][width={.2\textwidth}]}
>>>>> \placefigure{Fnote2\footnote{small}}{\externalfigure[cow][width={.2\textwidth}]}
>>>>> \placefigure{Fnote3\footnote{world}}{\externalfigure[cow][width={.2\textwidth}]}
>>>>>     \stopfloatcombination
>>>>>
>>>>>   \stopplacefigure
>>>>> \stoptext
>>>>
>>>> Not very nice but the following works. You would have less problems with
>>>> local footnotes which are placed in the float block.
>>>>
>>>> \starttext
>>>>
>>>> \startpostponingnotes
>>>>   \startplacefigure[title={...}]
>>>>     ...
>>>>   \stopplacefigure
>>>> \stoppostponingnotes
>>>>
>>>> \stoptext
>>>>
>>>> Wolfgang
>>>>
>>>>
>>>> ------------------------------
>>>>
>>>> Message: 3
>>>> Date: Mon, 14 Jan 2019 08:39:45 +0100
>>>> From: "Jan U. Hasecke" <juh+ntg-context at mailbox.org>
>>>> To: Wolfgang Schuster <wolfgang.schuster.lists at gmail.com>, mailing
>>>> list for ConTeXt users <ntg-context at ntg.nl>
>>>> Subject: Re: [NTG-context] Manipulating the left blank page when
>>>> chapter starts on the right page
>>>> Message-ID: <d88401b5-1ada-6f97-ee9b-f0e8fe83cb45 at mailbox.org>
>>>> Content-Type: text/plain; charset=utf-8
>>>>
>>>>
>>>> Am 13.01.19 um 16:56 schrieb Wolfgang Schuster:
>>>>
>>>>> Here is a example which shows how you can change the background color
>>>>> of a empty page before the chapter title.
>>>>>
>>>>> \setuppagenumbering
>>>>>   [alternative=doublesided]
>>>>>
>>>>> \startsetups [chapter:before]
>>>>>   \doifoddpageelse
>>>>>     {}
>>>>>     {\pushbackground[page]
>>>>>      \setupbackgrounds[page][background=color,backgroundcolor=black]
>>>>>      \page[empty,right]
>>>>>      \popbackground}
>>>>> \stopsetups
>>>>>
>>>>>   [chapter]
>>>>>   [page=yes,
>>>>>    before=\directsetup{chapter:before}]
>>>>>
>>>>> \starttext
>>>>>
>>>>> \startchapter[title={Knuth}]
>>>>> \dorecurse{10}{\samplefile{knuth}}
>>>>> \stopchapter
>>>>>
>>>>> \startchapter[title={Zapf}]
>>>>> \dorecurse{10}{\samplefile{zapf}}
>>>>> \stopchapter
>>>>>
>>>>> \startchapter[title={Ward}]
>>>>> \dorecurse{10}{\samplefile{ward}}
>>>>> \stopchapter
>>>>>
>>>>> \stoptext
>>>>
>>>> Thanks a lot Wolfgang!
>>>>
>>>> This was just the thing I was looking for. These setups seems to be the
>>>> golden bullet in ConTeXt but I often have difficulties to understand the
>>>> mechanism.
>>>>
>>>> I'll try to wikify this later this week.
>>>>
>>>> The push-pop-background pair is mentionend in x-setups-overview together
>>>> with some other push-pop-pairs or push single commands. Are they
>>>> documented somewhere?
>>>>
>>>> juh
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>>
>>>> Subject: Digest Footer
>>>>
>>>> ___________________________________________________________________________________
>>>> If your question is of interest to others as well, please add an
>>>> entry to the Wiki!
>>>>
>>>> maillist : ntg-context at ntg.nl /
>>>> http://www.ntg.nl/mailman/listinfo/ntg-context
>>>> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
>>>> archive  : https://foundry.supelec.fr/projects/contextrev/
>>>> wiki     : http://contextgarden.net
>>>> ___________________________________________________________________________________
>>>>
>>>> ------------------------------
>>>>
>>>> End of ntg-context Digest, Vol 175, Issue 27
>>>> ********************************************
>>> ___________________________________________________________________________________
>>> If your question is of interest to others as well, please add an
>>> entry to the Wiki!
>>> maillist :ntg-context at ntg.nl
>>> <mailto:ntg-context at ntg.nl>/http://www.ntg.nl/mailman/listinfo/ntg-context
>>> <http://context.aanhet.net/>
>>> archive  :https://bitbucket.org/phg/context-mirror/commits/
>>> wiki     :http://contextgarden.net <http://contextgarden.net/>
>>> ___________________________________________________________________________________
>>
>>
>> --
>>
>> -----------------------------------------------------------------
>>                                          Hans Hagen | PRAGMA ADE
>>              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>>       tel: 038 477 53 69 |www.pragma-ade.nl
>> -----------------------------------------------------------------
>

--

-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
```