From: Philipp Gesang <pgesang@ix.urz.uni-heidelberg.de>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: TaBlE from Lua
Date: Thu, 24 Feb 2011 02:16:13 +0100 [thread overview]
Message-ID: <20110224011613.GA5149@orcus> (raw)
In-Reply-To: <20110223230738.GD9491@clanspum.net>
[-- Attachment #1.1.1: Type: text/plain, Size: 901 bytes --]
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
[-- Attachment #1.1.2: table.tex --]
[-- Type: text/x-tex, Size: 582 bytes --]
\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
[-- Attachment #1.1.3: table.lua --]
[-- Type: text/plain, Size: 1151 bytes --]
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
[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 486 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
___________________________________________________________________________________
next prev parent reply other threads:[~2011-02-24 1:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-23 23:07 Daniel Lyons
2011-02-23 23:19 ` Wolfgang Schuster
2011-02-24 1:16 ` Philipp Gesang [this message]
2011-02-24 1:45 ` Daniel Lyons
2011-02-24 6:35 ` luigi scarso
2011-02-24 6:48 ` Daniel Lyons
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=20110224011613.GA5149@orcus \
--to=pgesang@ix.urz.uni-heidelberg.de \
--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).