# [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
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\getwhatever    #1{\ctxlua{document.getwhatever("#1")}}

total: \getwhatever{foo}

\startwhatever[foo]

\stopwhatever

\stoptext

-----------------------------------------------------------------