From: Fabrice Couvreur <fabrice1.couvreur@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Lua code and table
Date: Thu, 18 Feb 2021 16:14:46 +0100 [thread overview]
Message-ID: <CACyK-eruvs9S_sMC-ZO0qA9TvvTsHFHk8AKCcMyfurVan49PuA@mail.gmail.com> (raw)
In-Reply-To: <441d5e40-2817-db15-5b43-a47535c25860@xs4all.nl>
[-- Attachment #1.1: Type: text/plain, Size: 7309 bytes --]
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@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@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@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
>
> ___________________________________________________________________________________
>
[-- Attachment #1.2: Type: text/html, Size: 11961 bytes --]
[-- Attachment #2: Type: text/plain, Size: 493 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://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2021-02-18 15:14 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-17 17:40 Fabrice Couvreur
2021-02-17 21:13 ` Tomas Hala
2021-02-17 21:26 ` Wolfgang Schuster
2021-02-17 22:52 ` Hans Hagen
2021-02-17 23:22 ` Bruce Horrocks
2021-02-18 9:06 ` Hans Hagen
2021-02-18 15:14 ` Fabrice Couvreur [this message]
2021-02-18 15:26 ` Jano Kula
2021-02-18 15:28 ` Fabrice Couvreur
2021-02-19 11:42 ` Fabrice Couvreur
2021-02-19 12:06 ` Hans Hagen
2021-02-19 13:12 ` Jano Kula
2021-02-19 13:26 ` Hans Hagen
2021-02-20 17:21 ` Fabrice Couvreur
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACyK-eruvs9S_sMC-ZO0qA9TvvTsHFHk8AKCcMyfurVan49PuA@mail.gmail.com \
--to=fabrice1.couvreur@gmail.com \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).