[NTG-context] Evaluating a Lua expression at the end

Hans Hagen pragma at wxs.nl
Mon Apr 13 15:32:04 CEST 2015


On 4/13/2015 1:53 PM, Kumar Appaiah wrote:
> Hi.
>
> I am trying to set up a system where I can use Lua to find a total
> that I can display at the end. For example, if I set a question paper,
> after each question, I do a \directlua{total = total + 4}, assuming
> this question has 4 points. At the top of my document, I now want to
> say "Total points:" and display the value of total.
>
> Now, naturally, using \directlua gives me 0, since total is 0 at the
> beginning. But \latelua didn't seem to be what I am looking for. Could
> someone please guide me in the right direction?

forget about latelua ... by the time that kicks in typesetting is done 
already .. you need to go multipass:

\starttext

\startluacode
     local name = nil
     local temp = 0

     function document.startwhatever(s)
         name = s
         temp = 0
     end
     function document.addwhatever(n)
         temp = temp + n
         context(n)
     end
     function document.stopwhatever()
         job.variables.save("document:temp:"..name,temp)
     end
     function document.getwhatever(s)
         context(job.variables.collected["document:temp:"..s])
     end
\stopluacode

\def\startwhatever[#1]{\ctxlua{document.startwhatever("#1")}}
\def\stopwhatever     {\ctxlua{document.stopwhatever()}}
\def\addwhatever    #1{\ctxlua{document.addwhatever(#1)}}
\def\getwhatever    #1{\ctxlua{document.getwhatever("#1")}}

total: \getwhatever{foo}

\startwhatever[foo]

test 1: \addwhatever{10}\par
test 2: \addwhatever{20}\par
test 3: \addwhatever{30}\par

\stopwhatever

\stoptext



-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list