[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