* Evaluating a Lua expression at the end @ 2015-04-13 11:53 Kumar Appaiah 2015-04-13 12:05 ` Norbert Melzer ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Kumar Appaiah @ 2015-04-13 11:53 UTC (permalink / raw) To: ntg-context 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? Thanks. Kumar ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 11:53 Evaluating a Lua expression at the end Kumar Appaiah @ 2015-04-13 12:05 ` Norbert Melzer 2015-04-13 12:06 ` Norbert Melzer 2015-04-13 12:26 ` Procházka Lukáš Ing. - Pontex s. r. o. 2015-04-13 13:32 ` Hans Hagen 2 siblings, 1 reply; 8+ messages in thread From: Norbert Melzer @ 2015-04-13 12:05 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1.1: Type: text/plain, Size: 1294 bytes --] If it is possible I'd like to wait for the idris book and get that one. If that's not possible I'm interested in http://www.manning.com/blackheath/ Am 13.04.2015 13:54 schrieb "Kumar Appaiah" <a.kumar@alumni.iitm.ac.in>: > 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? > > Thanks. > > Kumar > > ___________________________________________________________________________________ > 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://tex.aanhet.net > archive : http://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > > ___________________________________________________________________________________ [-- Attachment #1.2: Type: text/html, Size: 2040 bytes --] [-- Attachment #2: Type: text/plain, Size: 485 bytes --] ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 12:05 ` Norbert Melzer @ 2015-04-13 12:06 ` Norbert Melzer 0 siblings, 0 replies; 8+ messages in thread From: Norbert Melzer @ 2015-04-13 12:06 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1.1: Type: text/plain, Size: 1427 bytes --] Sorry, wrong recipient... Am 13.04.2015 14:05 schrieb "Norbert Melzer" <timmelzer@gmail.com>: > If it is possible I'd like to wait for the idris book and get that one. If > that's not possible I'm interested in http://www.manning.com/blackheath/ > Am 13.04.2015 13:54 schrieb "Kumar Appaiah" <a.kumar@alumni.iitm.ac.in>: > >> 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? >> >> Thanks. >> >> Kumar >> >> ___________________________________________________________________________________ >> 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://tex.aanhet.net >> archive : http://foundry.supelec.fr/projects/contextrev/ >> wiki : http://contextgarden.net >> >> ___________________________________________________________________________________ > > [-- Attachment #1.2: Type: text/html, Size: 2428 bytes --] [-- Attachment #2: Type: text/plain, Size: 485 bytes --] ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 11:53 Evaluating a Lua expression at the end Kumar Appaiah 2015-04-13 12:05 ` Norbert Melzer @ 2015-04-13 12:26 ` Procházka Lukáš Ing. - Pontex s. r. o. 2015-04-13 13:48 ` Kumar Appaiah 2015-04-13 13:32 ` Hans Hagen 2 siblings, 1 reply; 8+ messages in thread From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-04-13 12:26 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1: Type: text/plain, Size: 1634 bytes --] Hello Kumar, could you provide a (non-working) minimal example? I tried this: ---- local C = context local n = 0 C.starttext() C("A") n = n + 1 C("B") n = n + 1 C("C") n = n + 1 print("***", n) C.stoptext() print(">>>", n) ---- and I got "3" (twice) - what I expected: " ... ConTeXt ver: 2015.04.08 21:31 MKIV beta fmt: 2015.4.9 int: english/english ... \\Count.cld', result 'Count' ... sandbox > call > processing as cld: d://Lukas/Jobs/Podebrady-Sachta.RDS/Deska.SO/Statics/t/Count.cld *** 3 >>> 3 ... " ... And similar result for "Count.mkiv". On Mon, 13 Apr 2015 13:53:28 +0200, Kumar Appaiah <a.kumar@alumni.iitm.ac.in> 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 Where could I learn more about \latelua (I'm hearing first time now about that command)... Best regards, Lukas > someone please guide me in the right direction? > > Thanks. > > Kumar -- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz Bezová 1658 147 14 Praha 4 Tel: +420 241 096 751 Fax: +420 244 461 038 [-- Attachment #2: Count.cld --] [-- Type: application/octet-stream, Size: 176 bytes --] local C = context local n = 0 C.starttext() C("A") n = n + 1 C("B") n = n + 1 C("C") n = n + 1 print("***", n) C.stoptext() print(">>>", n) [-- Attachment #3: Count.pdf --] [-- Type: application/pdf, Size: 4752 bytes --] [-- Attachment #4: Count.mkiv --] [-- Type: application/octet-stream, Size: 184 bytes --] \startluacode n = 0 \stopluacode \starttext A \directlua{n = n + 1} B \directlua{n = n + 1} C \directlua{n = n + 1} \directlua{print("!!!", n)} \stoptext [-- Attachment #5: Type: text/plain, Size: 485 bytes --] ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 12:26 ` Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-04-13 13:48 ` Kumar Appaiah 2015-04-13 14:48 ` Procházka Lukáš Ing. - Pontex s. r. o. 0 siblings, 1 reply; 8+ messages in thread From: Kumar Appaiah @ 2015-04-13 13:48 UTC (permalink / raw) To: ntg-context Dear Lukáš, On Mon, Apr 13, 2015 at 02:26:38PM +0200, Procházka Lukáš Ing. - Pontex s. r. o. wrote: > Hello Kumar, > > could you provide a (non-working) minimal example? > > I tried this: > > ---- > local C = context > > local n = 0 > > C.starttext() > > C("A") > n = n + 1 > C("B") > n = n + 1 > C("C") > n = n + 1 > > print("***", n) > > C.stoptext() > > print(">>>", n) > ---- > > and I got "3" (twice) - what I expected: Thanks for the response. I am looking at something like this: ============== \starttext \directlua{total = 0} \title{Homework 1} Total score: \directlua{tex.print(total);} Question 1 (3 points) \directlua{total = total + 3} Question 2 (4 points) \directlua{total = total + 4} Question 3 (5 points) \directlua{total = total + 5} \stoptext ============== I expect the “Total score” to be followed by “12”, but I don't know how to get that (or whether that is even possible). Thanks. Kumar -- Kumar Appaiah ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 13:48 ` Kumar Appaiah @ 2015-04-13 14:48 ` Procházka Lukáš Ing. - Pontex s. r. o. 0 siblings, 0 replies; 8+ messages in thread From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-04-13 14:48 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1: Type: text/plain, Size: 1569 bytes --] Hello, another single-pass approach, which uses the fact that you know the questions and their point "weights" in advance is to form questions into a Lua table and evaluate the total first: ---- local C = context local tab = { {"Question 1", 10, }, {"Question 2", 20, }, {"Question 3", 30, }, } local n = 0 for _, v in ipairs(tab) do local q, n1 = unpack(v); n = n + n1 end -- Or: for _, v in ipairs(tab) do n = n + v[2] end local f = function(it) local q, n1 = unpack(it) n = n + n1 C(q .. ": " .. n) C.par() end C.starttext() C("Total score: " .. n) C.par() n = 0 -- Reset f(tab[1]) f(tab[2]) f(tab[3]) -- Or: for _, v in ipairs(tab) do f(v) end C.stoptext() ---- Best regards, Lukas > Thanks for the response. I am looking at something like this: > > ============== > \starttext > \directlua{total = 0} > \title{Homework 1} > > Total score: \directlua{tex.print(total);} > > Question 1 (3 points) > \directlua{total = total + 3} > > Question 2 (4 points) > \directlua{total = total + 4} > > Question 3 (5 points) > \directlua{total = total + 5} > > \stoptext > ============== > > I expect the “Total score” to be followed by “12”, but I don't know > how to get that (or whether that is even possible). > > Thanks. > > Kumar -- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz Bezová 1658 147 14 Praha 4 Tel: +420 241 096 751 Fax: +420 244 461 038 [-- Attachment #2: Count2.cld --] [-- Type: application/octet-stream, Size: 436 bytes --] local C = context local tab = { {"Question 1", 10, }, {"Question 2", 20, }, {"Question 3", 30, }, } local n = 0 for _, v in ipairs(tab) do local q, n1 = unpack(v); n = n + n1 end local f = function(it) local q, n1 = unpack(it) n = n + n1 C(q .. ": " .. n) C.par() end C.starttext() C("Total score: " .. n) C.par() n = 0 -- Reset f(tab[1]) f(tab[2]) f(tab[3]) C.stoptext() [-- Attachment #3: Count2.pdf --] [-- Type: application/pdf, Size: 6563 bytes --] [-- Attachment #4: Type: text/plain, Size: 485 bytes --] ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 11:53 Evaluating a Lua expression at the end Kumar Appaiah 2015-04-13 12:05 ` Norbert Melzer 2015-04-13 12:26 ` Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-04-13 13:32 ` Hans Hagen 2015-04-13 13:50 ` Kumar Appaiah 2 siblings, 1 reply; 8+ messages in thread From: Hans Hagen @ 2015-04-13 13:32 UTC (permalink / raw) To: mailing list for ConTeXt users 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 ----------------------------------------------------------------- ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Evaluating a Lua expression at the end 2015-04-13 13:32 ` Hans Hagen @ 2015-04-13 13:50 ` Kumar Appaiah 0 siblings, 0 replies; 8+ messages in thread From: Kumar Appaiah @ 2015-04-13 13:50 UTC (permalink / raw) To: ntg-context On Mon, Apr 13, 2015 at 03:32:04PM +0200, Hans Hagen wrote: > 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 Thanks Hans. This is what I needed! Kumar -- Kumar Appaiah ___________________________________________________________________________________ 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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-04-13 14:48 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-04-13 11:53 Evaluating a Lua expression at the end Kumar Appaiah 2015-04-13 12:05 ` Norbert Melzer 2015-04-13 12:06 ` Norbert Melzer 2015-04-13 12:26 ` Procházka Lukáš Ing. - Pontex s. r. o. 2015-04-13 13:48 ` Kumar Appaiah 2015-04-13 14:48 ` Procházka Lukáš Ing. - Pontex s. r. o. 2015-04-13 13:32 ` Hans Hagen 2015-04-13 13:50 ` Kumar Appaiah
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).