Hans / Wolfgang, Thank you for your quick feedback and the tips. Yes, this works for now.
In general, I will try to avoid going into such "deep-end" APIs (at least for now, until such time I read all the manuals in depth!). IMHO, the standard ConTeXt system is itself quite powerful for 98% of the Typesetting usecases. best regards, Ramkumar On Sat, Oct 16, 2021 at 4:59 PM Hans Hagen via ntg-context < ntg-context@ntg.nl> wrote: > On 10/16/2021 10:33 AM, Wolfgang Schuster via ntg-context wrote: > > Ramkumar KB via ntg-context schrieb am 16.10.2021 um 06:00: > >> Hello All, > >> > >> I was trying to read the value of '\totalnumberofpages' into lua to do > >> something with it. As an example, see below. > >> > >> Now, as I understand it, my example would not work as TeX gets the > >> first go at this and therefore the variable 'pages' is the string > >> '\totalnumberofpages' and not the actual value itself. And Lua cannot > >> process this "calculation". > >> > >> I tried to go thru the manual - *cld-mkiv.pdf *- in the distro but > >> could not catch on how to read a metadata value (not print). I am sure > >> that I am missing a small trick somewhere (or is it something more > >> involved?). > >> > >> \startluacode > >> function myFancyCalculations(pages) > >> -- some fancy stuff but as an example > >> local myCal = tonumber(pages) + 1 > >> return myCal > >> \stopluacode > >> \starttext > >> > >> \blah > >> > >> \ctxlua{context(myFancyCalculations("\\totalnumberofpages"))} > >> > >> \stoptext > > > > Everything gets easier when you use the Lua functions to access the > > counter values but be aware the values can be wrong when you're at a > > page break. > > > > \startbuffer[pagenumber] > > \startluacode > > context.starttabulate() > > context.NC() > > context("Current page") > > context.EQ() > > context(structures.counters.get("realpage",1,"number")) > > context.NC() > > context.NR() > > context.NC() > > context("Last page") > > context.EQ() > > context(structures.counters.get("realpage",1,"last")) > > context.NC() > > context.NR() > > context.stoptabulate() > > \stopluacode > > \stopbuffer > > > > \starttext > > > > \dorecurse > > {\randomnumber{5}{10}} > > {\getbuffer[pagenumber] > > \page} > > > > \stoptext > > As addendum ... The problem in general with macros is that one doesn't > really knows by looking at the name what actually happens when it > expands, which can be a lot. Now, because \totalnumberofpages is > supposed to 'return' a number and not typeset something styled (which > itself involved macro expansion) you can actually do this: > > \startluacode > local n = tokens.getters.macro("totalnumberofpages",true) > print(">>>",type(n),n) > \stopluacode > > but beware of the fact that you actually get back a string: > > \startluacode > local n = tokens.getters.macro("totalnumberofpages",true) > print(">>>",type(n),n) > local n = tonumber(n) > print(">>>",type(n),n) > \stopluacode > > etc etc > > Hans > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > ----------------------------------------------------------------- > > ___________________________________________________________________________________ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://context.aanhet.net > archive : https://bitbucket.org/phg/context-mirror/commits/ > wiki : http://contextgarden.net > > ___________________________________________________________________________________ >
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________