[NTG-context] Setting and measuring boxes TeX/Lua
Jano Kula
jano.kula at gmail.com
Fri Nov 27 17:47:07 CET 2020
Hello again, Hans!
On Thu, 26 Nov 2020 at 09:18, Hans Hagen <j.hagen at xs4all.nl> wrote:
> (this mechanism is already kind of old, there are also other cheats
> possible)
>
Diving into functions and using context.stepwise() worked, until I've got
to: /cldf-stp.lua:48: bad argument #1 to 'resume' (thread expected) and
other errors. It was triar/error approach, not exactly knowing how
context.stepwise() works, and I was some more lua functions and iterations
before needing expansion.
Therefore I've changed the strategy (cannot give up):
- Create named buffers with formatted content (and store measures)
before they are needed.
- When needed, use the reference to the buffer.
Tests looked promising. After \starttext buffers and measures are known
(both TeX & Lua). Also tested in functions, etc.
But inside the first \xmlsetup, they are not expanded anymore, they are
typeset (like \typebuffer).
- How to have them expanded in \xmlsetup?
- Is other mechanism better suited for storing typeset blocks than
buffers (and will survive \xmlsetup)?
- If none of them is possible, what are the *other **cheats *then?
Thanks,
Jano
MWE attached
% BUFFERS
\startluacode
-- fill buffers
for i=1,1000 do
local content = "framed-" .. i
context.startbuffer( { i } )
context.StartBox()
context.bold(i)context.par()
context.color( { "red" }, content )
context.StopBox()
context.copy(false,0)
context.stopbuffer()
print(">>", i)
end
\stopluacode
\def\StartBox{\setbox0=\hbox\bgroup\framed[width=50mm,
background=color,
backgroundcolor=gray,
frame=off,align={flushleft}]%
\bgroup%
\vbox\bgroup}
\def\StopBox{\egroup\egroup\egroup}% close vbox, framed, hbox
\def\MeasureBuffer[#1]{\setbox0\hbox{\getbuffer[#1]}%
ht: \the\ht0\par}
% XML
\startbuffer[doc]
<?xml version "1.0"?>
<document>
<section>section</section>
<section>section</section>
</document>
\stopbuffer
\startxmlsetups xml:name
\xmlsetsetup{\xmldocument}{*}{-}
\xmlsetsetup{\xmldocument}{document}{xml:name:*}
\stopxmlsetups
\xmlregistersetup{xml:name}
\startxmlsetups xml:name:document
\Title{inside xml:name:document}
\Title{TeX}
\MeasureBuffer[333]
\getbuffer[333]
\Title{Lua}
\startluacode
context.MeasureBuffer({"444"})
context.getbuffer({"444"})
\stopluacode
\stopxmlsetups
\def\Title#1{\blank{\bf #1}\par}
\starttext
\Title{TeX}
\MeasureBuffer[111]
\getbuffer[111]
\Title{Lua}
\startluacode
context.MeasureBuffer({"222"})
context.getbuffer({"222"})
\stopluacode
\xmlprocessbuffer{xml:name}{doc}{}
\stoptext
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20201127/3e947372/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xml-buffers.tex
Type: application/x-tex
Size: 1740 bytes
Desc: not available
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20201127/3e947372/attachment.tex>
More information about the ntg-context
mailing list