On 2011-02-23 <17:07:38>, Daniel Lyons wrote: > Is there a convenient way to create TaBlE tables from Lua? If so, > where can I read about it?
Good evening, Daniel! [-1] Isn’t TaBlE deprecated? <http://wiki.contextgarden.net/Tables_Overview> [0] If you aim for convenience, wouldn’t you rather want to switch to \[start|stop]tabulate? Its syntax is very similar and there are a few examples to learn from in the context source code. [1] I don’t know how your table structure looks like, but the example 1 can be a starting point, assuming a 2dimensional table where all rows have the same element count: [2] Item example 2, but using the cld interface <http://wiki.contextgarden.net/cld>. Put both files in the same directory and run “context” on table.tex to build the examples. Regards, Philipp > > Thanks, > > -- > Daniel
\registerctxluafile{table}{} %%% Example 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\typesetatable{% \ctxlua{userdata.do_typesetatable(userdata.t)}% } %%% Example 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\typesetcldtable{% \ctxlua{userdata.do_typesetcldtable(userdata.t)}% } \starttext %%% Demo 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \placetable[here]{Concatenation based}{\typesetatable} %%% Demo 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \placetable[here]{CLD-based}{\typesetcldtable} \stoptext \endinput
userdata = userdata or { } userdata.t = { { 0, 0, 0, }, { 0, 0, 1, }, { 0, 1, 0, }, { 0, 1, 1, }, { 1, 0, 0, }, { 1, 0, 1, }, { 1, 1, 0, }, { 1, 1, 1, }, } --- Lua stuff 1 ------------------------------------------------- userdata.env = [[ \starttable[%s] \HL %s \HL \stoptable ]] local fmt, rep, unpack = string.format, string.rep, table.unpack userdata.do_typesetatable = function (t) local maxx, maxy, lines = #t[1], #t, { } local template = rep("\\NC %s", maxx) for n=1, maxy do local row = t[n] lines[n] = " " .. fmt(template, unpack(row)) .. "\\AR" end context( fmt(userdata.env, "|" .. rep("c|", maxx), table.concat(lines, "\n")) ) end --- Lua stuff 2 ------------------------------------------------- local AR, HL, NC = context.AR, context.HL, context.NC userdata.do_typesetcldtable = function (t) local maxx, maxy = #t[1], #t context.starttable({ "|" .. rep("c|", maxx) }) HL() for n=1, maxy do local row = t[n] for m=1, maxx do NC() context(row[m]) end AR() end HL() context.stoptable() end
pgpt0IJu5TFFS.pgp
Description: PGP signature
___________________________________________________________________________________ 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 ___________________________________________________________________________________