On 6/18/2014 1:03 PM, Thomas A. Schmitz wrote:
Hi all,I'm terribly sorry I have to send three files for this test case, but I'm trying to process xml with lua, so it's difficult to do otherwise. I have two problems: 1. (probably unrelated to xml/lua): when I try to set the options (l. 22-3 in test-style.tex) \setupxtable [split=yes, spaceinbetween=medium] for the xtable environment, I get an error: tex error > error on line 22 in file /mnt/shared/context/tex/texmf-context/tex/context/base/cont-yes.mkiv: ! You can't use `\prevdepth' in horizontal mode \nointerlineskip ^^@-\prevdepth -\thousandpoint l.22 \nointerlineskip \ctxcommand #1o-\directlua {commands.#1} \tabl_x_process ...lse \tabl_x_flush_text_checked \fi \fi \ctxcommand {x_tab... l.8 } \ctxlxml #1h-\ctxlua {lxml.#1} .... l.91 \stopluacode This looks like a buglet in xtables to me. 2. I would like to test whether a certain element has already been seen (l. 8-13 in test-style.lua). However, since tables are two-pass, the test will always return "true." How could I test properly?
many ways ... (ok, i might provide some hook into tables) ... three attached
i bet you'll choose the third solution
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
-----------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?> <a> <b> <c>1</c> <d>Text</d> </b> <b> <c>2</c> <d>More text</d> </b> <b> <c>2</c> <d>Even more text</d> </b> <b> <c>2</c> <d>And more</d> </b> <b> <c>3</c> <d>And even more</d> </b> </a>
-- solution 1
-- local lasttitle = nil
--
-- function xml.functions.test_b(t)
-- local title = xml.text(t, "c")
-- local content = xml.text(t, "d")
-- context.startxrow()
-- context.startxcell( { background="color", backgroundcolor="yellow" } )
-- if lasttitle == title then
-- context.color( { "red" }, title)
-- else
-- lasttitle = title
-- context.color( { "blue" }, title)
-- end
-- context.stopxcell()
-- context.startxcell()
-- context(content)
-- context.stopxcell()
-- context.stopxrow()
-- end
-- solution 2
-- local titles = { }
--
-- function xml.functions.reset_b(t)
-- titles = { }
-- end
--
-- function xml.functions.test_b(t)
-- local title = xml.text(t, "c")
-- local content = xml.text(t, "d")
-- context.startxrow()
-- context.startxcell( { background="color", backgroundcolor="yellow" } )
-- if titles[title] then
-- context.color( { "red" }, title)
-- else
-- titles[title] = true
-- context.color( { "blue" }, title)
-- end
-- context.stopxcell()
-- context.startxcell()
-- context(content)
-- context.stopxcell()
-- context.stopxrow()
-- end
-- solution 3
function xml.functions.test_b(t)
local title = xml.text(t, "c")
local content = xml.text(t, "d")
context.startxrow()
context.startxcell( { background="color", backgroundcolor="yellow" } )
if xml.text(t,"./preceding-sibling::/[-1]") == title then
context.color( { "red" }, title)
else
context.color( { "blue" }, title)
end
context.stopxcell()
context.startxcell()
context(content)
context.stopxcell()
context.stopxrow()
end
test-style.tex
Description: TeX document
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : [email protected] / 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 ___________________________________________________________________________________
