Hans Hagen via ntg-context schrieb am 12.10.2021 um 14:12:
On 10/11/2021 1:38 PM, Adam Reviczky via ntg-context wrote:
Hi,
I am trying to use a combination figure with luacode (both with
latest MKIV and LMTX).
However, the figures do not line up in the grid of the combination.
I get the correct result with examples 1 and 2 below, but example 3
using lua functions for combination and externalfigure is what I
wanted to use in the first place.
MWE:
\starttext
\startluacode
-- Combination 1
context.startplacefigure({title = "Figure"})
context.startcombination({nx = "2", ny = "2"},
"\\externalfigure[cow][width=50mm]","Caption 1",
"\\externalfigure[cow][width=50mm]","Caption 2",
"\\externalfigure[cow][width=50mm]","Caption 3",
"\\externalfigure[cow][width=50mm]","Caption 4"
)
context.stopcombination()
context.stopplacefigure()
-- Combination 2
context.startplacefigure({title = "Figure"})
context.startcombination({nx = "2", ny = "2"},
"Picture 1","Caption 1",
"Picture 2","Caption 2",
"Picture 3","Caption 3",
"Picture 4","Caption 4"
)
context.stopcombination()
context.stopplacefigure()
-- Combination 3
context.startplacefigure({title = "Figure"})
context.startcombination({nx = "2", ny = "2"},
context.externalfigure({"cow"},{width = "50mm"}),"Caption 1",
context.externalfigure({"cow"},{width = "50mm"}),"Caption 2",
context.externalfigure({"cow"},{width = "50mm"}),"Caption 3",
context.externalfigure({"cow"},{width = "50mm"}),"Caption 4"
)
context.stopcombination()
context.stopplacefigure()
\stopluacode
\stoptext
Any hints on what I am doing wrong in example 3?
as in any prodedural language a function as argument gets immediately
executed so you need to delay:
context.startplacefigure({title = "Figure"})
context.startcombination({nx = "2", ny = "2"},
context.delayed.externalfigure({"cow"},{width = "50mm"}),
"Caption 1",
context.delayed.externalfigure({"cow"},{width = "50mm"}),
"Caption 2",
context.delayed.externalfigure({"cow"},{width = "50mm"}),
"Caption 3",
context.delayed.externalfigure({"cow"},{width = "50mm"}),
"Caption 4"
)
context.stopcombination()
context.stopplacefigure()
(this is why encoding complex documents completely in a scrtipt
language is non trivial and why for instance these template systems
are there because these accumulate)
Another solution is to use the content and caption blocks for each
combination entry.
\starttext
\startluacode
context.startplacefigure({title = "Figure"})
context.startcombination({nx = 1, ny = 1})
context.startcontent()
context.externalfigure({"cow"},{width = "50mm"})
context.stopcontent()
context.startcaption()
context("Caption 1")
context.stopcaption()
context.stopcombination()
context.stopplacefigure()
\stopluacode
\stoptext
Wolfgang
___________________________________________________________________________________
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
___________________________________________________________________________________