[NTG-context] Lua code and table

Fabrice Couvreur fabrice1.couvreur at gmail.com
Thu Feb 18 16:14:46 CET 2021


Hi all, Thanks to you, I'm not at your level with Lua, but I'm learning
thanks to you
Hans, I compiled your code and I get an error message :

lua error       > lua error on line 50 in file ./table_1.tex:

token call, syntax: [ctxlua]:11: unexpected symbol near '='

13     \startluacode
14          function document.MyTable(specification)
15
16              local pattern    = specification.pattern
17              local action     = specification.action
18              local conversion = specification.conversion or "Characters"
19
20              local n = #pattern
21
22          --  context.startxtable { align = "middle,lohi", width =
"0.8cm",
23 >>  offset = "0.8ex", bodyfont = "9pt", framecolor = "cyan" }
24              context.startxtable { "MyTable" }
25                  context.startxrow()
26                      context.startxcell { frame = "off" }
27                          context()
28                      context.stopxcell()
29                      for i=1,n do
30                          context.startxcell()
31                              context.convertnumber(conversion,i)
32                          context.stopxcell()
33                      end

mtx-context     | fatal error: return code: 256

TeX Output exited abnormally with code 1 at Thu Feb 18 16:13:29


Thank you very much
Fabrice

Le jeu. 18 févr. 2021 à 10:06, Hans Hagen <j.hagen at xs4all.nl> a écrit :

> On 2/18/2021 12:22 AM, Bruce Horrocks wrote:
>
> >> On 17 Feb 2021, at 17:40, Fabrice Couvreur <fabrice1.couvreur at gmail.com>
> wrote:
> >>
> >> Hi, The code works, but is it possible to make it shorter ?
> OK, here is my take, based on earlier posts, bringing together some
> 'technologies':
>
> (1) make a document function which isolatees the code
> (2) then call it where needed
> (3) use the built in conversion code
> (4) use so called unique mp graphics (smaller files, faster run)
> (5) use symbols to get the baseline right
> (6) use a little abstraction in the table setup
>
> watch how we can pass a table instead of a string, so
>
> context.startxtable { align = "middle,lohi", width = "0.8cm", offset =
> "0.8ex", bodyfont = "9pt", framecolor = "cyan" }
>
> is ok, but anm abstraction is even better. Now, who will wikify it ...
>
> %%%%%%%%%%% code %%%%%%%%%%%
>
> \setupbodyfont[pagella]
>
> \starttext
>
> \definextable
>    [MyTable]
>    [align={middle,lohi},
>     width=0.8cm,
>     offset=0.8ex,
>     bodyfont=9pt,
>     framecolor=cyan]
>
> \startluacode
>      function document.MyTable(specification)
>
>          local pattern    = specification.pattern
>          local action     = specification.action
>          local conversion = specification.conversion or "Characters"
>
>          local n = #pattern
>
>      --  context.startxtable { align = "middle,lohi", width = "0.8cm",
> offset = "0.8ex", bodyfont = "9pt", framecolor = "cyan" }
>          context.startxtable { "MyTable" }
>              context.startxrow()
>                  context.startxcell { frame = "off" }
>                      context()
>                  context.stopxcell()
>                  for i=1,n do
>                      context.startxcell()
>                          context.convertnumber(conversion,i)
>                      context.stopxcell()
>                  end
>              context.stopxrow()
>              for i=1,n do
>                  context.startxrow()
>                      context.startxcell()
>                          context.convertnumber(conversion,i)
>                      context.stopxcell()
>                  for j=1,n do
>                      context.startxcell { align = "middle" }
>                          action(string.sub(pattern[i],j,j))
>                      context.stopxcell()
>                  end
>                  context.stopxrow()
>              end
>          context.stopxtable()
>
>      end
> \stopluacode
>
> \startuniqueMPgraphic{cross}{width,height,depth,color,line}
>      draw image (
>          draw (\MPvar{depth},\MPvar{height}) -- (\MPvar{width},0) ;
>          draw (\MPvar{depth},0) -- (\MPvar{width},\MPvar{height}) ;
>      )
>          withpen pencircle scaled \MPvar{line}
>          withcolor \MPvar{color} ;
> \stopuniqueMPgraphic
>
> \definesymbol
>    [MyRedCross]
>
>
> [\uniqueMPgraphic{cross}{width=1em,height=1ex,depth=.5ex,color=red,line=.2ex}]
>
> \definesymbol
>    [MyGreenCross]
>
>
> [\uniqueMPgraphic{cross}{width=1em,height=1ex,depth=.5ex,color=green,line=.2ex}]
>
> \startluacode
>      document.MyTable {
>          action = function(value)
>              context(value == "X" and 1 or 0)
>          end,
>          conversion = "Characters",
>          pattern = {
>              ".XXX..XX",
>              "X...XXX.",
>              "X..X.XXX",
>              "X.X.X..X",
>              ".X.X.XX.",
>              ".XX.X...",
>              "XXX.X...",
>              "X.XX...."
>          }
>      }
> \stopluacode
>
> \startluacode
>      document.MyTable {
>          action = function(value)
>              context(value == "X" and 1 or 0)
>          end,
>          conversion = "Greek",
>          pattern = {
>              ".XXX..XX",
>              "X...XXX.",
>              "X..X.XXX",
>              "X.X.X..X",
>          }
>      }
> \stopluacode
>
> \startluacode
>      document.MyTable {
>          action = function(value)
>              if value == "X" then
>                  context.symbol { "MyRedCross" }
>              end
>          end,
>          conversion = "Romannumerals",
>          pattern = {
>              ".XXX..XX",
>              "X...XXX.",
>              "X..X.XXX",
>              "X.X.X..X",
>              ".X.X.XX.",
>              ".XX.X...",
>              "XXX.X...",
>              "X.XX...."
>          }
>      }
> \stopluacode
>
> \startluacode
>      document.MyTable {
>          action = function(value)
>              context.symbol { value == "X" and "MyRedCross"  or
> "MyGreenCross" }
>          end,
>          conversion = "Romannumerals",
>          pattern = {
>              "X.X.X..X",
>              ".X.X.XX.",
>              ".XX.X...",
>              "XXX.X...",
>              "X.XX...."
>          }
>      }
> \stopluacode
>
> \stoptext
>
>
> -----------------------------------------------------------------
>                                            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 at ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
>
> ___________________________________________________________________________________
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20210218/69fbce3f/attachment.htm>


More information about the ntg-context mailing list