Dear Hans, Thank you for your suggestions.
I changed the code without the intermediate variables. I works well. Best regards, Dalyoung > 2025. 1. 5. 오후 7:42, Hans Hagen via ntg-context <ntg-context@ntg.nl> 작성: > > On 1/4/2025 12:27 AM, Jeong Dal via ntg-context wrote: >> Dear Florent, Wolfgang, and Hans, >> I modify the code given by Hans as following: >> 1. Place the function definition ab the beginning of the file. >> I use if function to check the number of element of a and apply it to the >> number of columns. >> 2. And call the functions in the text. >> It works! It draw the truth table of the given logic functions. >> Thanks a lot. >> Best regards, >> Dalyoung >> \startluacode >> function document.MakeHead(p,a) >> if not a then >> local t = p >> p = string.rep("|mcw(1cm)",#p-1) .. "|mcw(1.5cm)|" >> a = t >> end >> context.starttabulate { p } >> context.FL() >> for i=1,#a do >> context.NC() context(a[i]) >> end >> context.NC() context.NR() >> context.LL() >> end >> function document.truthTable(a) >> document.MakeHead (a) >> for i,s in ipairs({true,false}) do >> for j,t in ipairs({true,false}) do >> for k,u in ipairs({true,false}) do >> if s then val=1 else val=0 end >> context.NC() >> context(val) >> context.NC() >> if t then val=1 else val=0 end >> context(val) >> context.NC() >> if #a == 3 then >> break >> end >> if u then val=1 else val=0 end >> context(val) >> context.NC() >> con=document.logicFa(s,t,u) >> context(con) >> context.NC() >> context.AR() >> end >> if #a == 3 then >> con=document.logicF2(s,t) >> context(con) >> context.NC() >> context.AR() >> end >> end >> end >> context.HL() >> context.stoptabulate() >> end >> \stopluacode >> In the text call the functions as following: >> \startplacetable[location=here,reference=tbl:Fxyz] >> \startluacode >> function document.logicFa(p,q,r) >> if ((not p or not q) and r) or (p and (q or not r)) then >> return "1" >> else >> return "0" >> end >> end >> a = { "p", "q", "r","f(p,q,r)"} >> document.truthTable(a) >> \stopluacode >> \stopplacetable > > Best use 'local' for val, con, a etc or do this: > > \startluacode > function document.MakeHead(p,a) > if not a then > local t = p > p = string.rep("|mcw(1cm)",#p-1) .. "|mcw(1.5cm)|" > a = t > end > context.starttabulate { p } > context.FL() > for i=1,#a do > context.NC() context(a[i]) > end > context.NC() context.NR() > context.LL() > end > > function document.MakeFooter() > context.HL() > context.stoptabulate() > end > > function document.truthTable(a) > document.MakeHead(a) > for i,s in ipairs({true,false}) do > for j,t in ipairs({true,false}) do > for k,u in ipairs({true,false}) do > context.NC() > context(s and "1" or "0") > context.NC() > context(t and "1" or "0") > context.NC() > if #a == 3 then > break > end > context(u and "1" or "0") > context.NC() > context(document.logicFa(s,t,u)) > context.NC() > context.AR() > end > if #a == 3 then > context(document.logicF2(s,t)) > context.NC() > context.AR() > end > end > end > document.MakeFooter() > end > \stopluacode > > \startplacetable[location=here,reference=tbl:Fxyz] > \startluacode > function document.logicFa(p,q,r) > if ((not p or not q) and r) or (p and (q or not r)) then > return "1" > else > return "0" > end > end > document.truthTable { "p", "q", "r","f(p,q,r)" } > \stopluacode > \stopplacetable > > you don't need the intermediate variables > > 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 / > https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl > webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) > archive : https://github.com/contextgarden/context > wiki : https://wiki.contextgarden.net > ___________________________________________________________________________________ ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________