* Using luacode
@ 2015-01-19 19:58 Eric Gerard
2015-01-19 23:01 ` Hans Hagen
0 siblings, 1 reply; 2+ messages in thread
From: Eric Gerard @ 2015-01-19 19:58 UTC (permalink / raw)
To: ntg-context
Dear list members
I think I don’t really understand the way to use a context command with luacode !
What I attempt to do is to write a function in lua which computes the position of one or several bottom tabs depending on : line number (1 is the lowest, 2 is above etc), number of tabs, horizontal position of the tab on the line.
The height of the tab is a Tex value \hauteuronglet
So I compute the x and y value and the width of the tab(s)
After that I want to define a layer with the tab(s) in a table
I can’t have the context.setlayer working properly.
For sure, this code should be cleaned after testing.
Here is the code I wrote
\definelayer[OngletBas][x=0mm, y=0mm, width=\paperwidth, height=\paperheight]
% variables
\newdimen\hauteuronglet
\hauteuronglet=1cm
%variables onglet gauche
\newdimen\vertposonglet
\newdimen\hauteurzoneacouper
%variables onglet bas
\newdimen\largeurzoneongletsbas
\newdimen\ordonneeongletsbas
\newdimen\abscisseongletsbas
\newdimen\largeurongletbas
\startluacode
function test(opt_1, arg_1)
local table = lpeg.split(",",interfaces.tolist(opt_1))
local labels = lpeg.split(",",arg_1)
local NumLigne = table[1]
local NbTotalOnglets = table[2]
local PremierOnglet = table[3]
local decalage = tex.sp("6.5pt")
tex.dimen.ordonneeongletsbas = tex.dimen.paperheight - tex.dimen.hauteuronglet * NumLigne
tex.dimen.largeurzoneongletsbas = tex.dimen.paperwidth - tex.dimen.backspace
tex.dimen.largeurongletbas = tex.dimen.largeurzoneongletsbas / NbTotalOnglets
tex.dimen.abscisseongletsbas = tex.dimen.backspace + tex.dimen.largeurongletbas * (PremierOnglet - 1)
local x_ongletsbas = tex.dimen.abscisseongletsbas - decalage
local y_ongletsbas = tex.dimen.ordonneeongletsbas
local largeurongletbas = tex.dimen.largeurongletbas
context.setupbackgrounds({"page"},{background = "OngletBas"})
context.setlayer({"OngletBas"},{hoffset = x_ongletsbas, voffset = y_ongletsbas},
context.setupTABLE({c},{1,2,3,4,5,6},{width = largeurongletbas})
context.bTABLE()
context.bTR()
context.bTD()
context(labels[1])
context.eTD()
context.eTR()
context.eTABLE()
)
end
interfaces.definecommand {
name = "test",
arguments = {
{ "option", "hash" },
{ "content", "string" },
},
macro = test,
}
\stopluacode
I have to add also (I don’t understand why) but I need to add an offset of -6.5pt to adjust the position of the table.
Thanks in advance
Eric Gerard
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Using luacode
2015-01-19 19:58 Using luacode Eric Gerard
@ 2015-01-19 23:01 ` Hans Hagen
0 siblings, 0 replies; 2+ messages in thread
From: Hans Hagen @ 2015-01-19 23:01 UTC (permalink / raw)
To: mailing list for ConTeXt users
On 1/19/2015 8:58 PM, Eric Gerard wrote:
> Dear list members
>
> I think I don’t really understand the way to use a context command with luacode !
> What I attempt to do is to write a function in lua which computes the position of one or several bottom tabs depending on : line number (1 is the lowest, 2 is above etc), number of tabs, horizontal position of the tab on the line.
> The height of the tab is a Tex value \hauteuronglet
> So I compute the x and y value and the width of the tab(s)
> After that I want to define a layer with the tab(s) in a table
> I can’t have the context.setlayer working properly.
> For sure, this code should be cleaned after testing.
>
> Here is the code I wrote
>
> \definelayer[OngletBas][x=0mm, y=0mm, width=\paperwidth, height=\paperheight]
> % variables
> \newdimen\hauteuronglet
> \hauteuronglet=1cm
>
> %variables onglet gauche
> \newdimen\vertposonglet
> \newdimen\hauteurzoneacouper
> %variables onglet bas
> \newdimen\largeurzoneongletsbas
> \newdimen\ordonneeongletsbas
> \newdimen\abscisseongletsbas
> \newdimen\largeurongletbas
>
> \startluacode
> function test(opt_1, arg_1)
> local table = lpeg.split(",",interfaces.tolist(opt_1))
> local labels = lpeg.split(",",arg_1)
>
> local NumLigne = table[1]
> local NbTotalOnglets = table[2]
> local PremierOnglet = table[3]
> local decalage = tex.sp("6.5pt")
>
> tex.dimen.ordonneeongletsbas = tex.dimen.paperheight - tex.dimen.hauteuronglet * NumLigne
> tex.dimen.largeurzoneongletsbas = tex.dimen.paperwidth - tex.dimen.backspace
> tex.dimen.largeurongletbas = tex.dimen.largeurzoneongletsbas / NbTotalOnglets
> tex.dimen.abscisseongletsbas = tex.dimen.backspace + tex.dimen.largeurongletbas * (PremierOnglet - 1)
>
> local x_ongletsbas = tex.dimen.abscisseongletsbas - decalage
> local y_ongletsbas = tex.dimen.ordonneeongletsbas
> local largeurongletbas = tex.dimen.largeurongletbas
>
> context.setupbackgrounds({"page"},{background = "OngletBas"})
>
> context.setlayer({"OngletBas"},{hoffset = x_ongletsbas, voffset = y_ongletsbas},
> context.setupTABLE({c},{1,2,3,4,5,6},{width = largeurongletbas})
> context.bTABLE()
> context.bTR()
> context.bTD()
> context(labels[1])
> context.eTD()
> context.eTR()
> context.eTABLE()
> )
> end
> interfaces.definecommand {
> name = "test",
> arguments = {
> { "option", "hash" },
> { "content", "string" },
> },
> macro = test,
> }
> \stopluacode
>
> I have to add also (I don’t understand why) but I need to add an offset of -6.5pt to adjust the position of the table.
you need to make a complete example, something that runs without me
having to define extra tex code
btw, don't overload the 'table' table ... you can't access the helpers
in its namespace otherwise,
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
| 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://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-01-19 23:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-19 19:58 Using luacode Eric Gerard
2015-01-19 23:01 ` Hans Hagen
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).