From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/109632 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jano Kula Newsgroups: gmane.comp.tex.context Subject: Setting and measuring boxes TeX/Lua Date: Wed, 25 Nov 2020 19:31:40 +0100 Message-ID: Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a45f0305b4f2a5d6" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38935"; mail-complaints-to="usenet@ciao.gmane.io" To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Wed Nov 25 19:32:57 2020 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khzb7-000A1Y-JF for gctc-ntg-context-518@m.gmane-mx.org; Wed, 25 Nov 2020 19:32:57 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id EB2861A9E84; Wed, 25 Nov 2020 19:32:22 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AzMYZclEp44h; Wed, 25 Nov 2020 19:32:22 +0100 (CET) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 018FC1AA5AD; Wed, 25 Nov 2020 19:32:22 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 59E5B1A9CF3 for ; Wed, 25 Nov 2020 19:32:20 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YEz1QBV8Qe_c for ; Wed, 25 Nov 2020 19:32:19 +0100 (CET) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.210.49; helo=mail-ot1-f49.google.com; envelope-from=jano.kula@gmail.com; receiver= Original-Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 929091A7B8C for ; Wed, 25 Nov 2020 19:32:19 +0100 (CET) Original-Received: by mail-ot1-f49.google.com with SMTP id n12so3144432otk.0 for ; Wed, 25 Nov 2020 10:32:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=GJMUDEnsf7GAocPO2AWemzAhhkLXvpgC2TBTaIsG7j4=; b=k0t4SxMVHH4weXlUqGrfg8eDvvpCoTyXCZULARWY9lqjbhJLEivppu0jiCtnEbtT4G xtgMOHzt83jOXi04dbkSr1a5psKQq7Nfw/BmMQQA63xFgEAgeCg3djEVCgCNO4sd/BRk oR6KSWkxZ/2KMizctev3CGXrGzEekHqgV/N8tCxOxNy+4abd4SGg4fXstWPHJAxCvdnU zkO7q/Z97V+MXnzJrs+00RzFq/F3t5nXVIZm2+UQnNkwOskZcp8iAXNdSuDfIiYkAaKH r17KC65omRjzFMq8Zs/cG4bYVS5DxTMP0RWkmMFIdiU/s/ChKWNbzvarIsOi7KdoIT7O rE/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=GJMUDEnsf7GAocPO2AWemzAhhkLXvpgC2TBTaIsG7j4=; b=pcxWinJVansA4sTuPkNKZPbt84l43tTpnuzqo56D3F9vAIQkd9aCkBtx4HkXPK03nk DXdygftbLjK9OpIGQm6F53QgBvEQlnQXpyfrcoSGJcvEmaOu7BBADepgsajFgXFVKkT0 trLb1BRd4MgbMetPN4RUugrZjvVQ6+lKhp5eoilxYykfYFsBgS+4OrwS1eIHYYg1zoPR GpzbcFd1yPLZ73IZ9aaNWFGcMYVqqWeHdHGr6hlo+WJTT/74k6MssIbTptYYe3o056rx t2iRsNZVt+9CDXXnhuO46926urH22brBcs9fuktY8/Y5M8RQMOms+ypg+s4ZtnLBMaJT 25hw== X-Gm-Message-State: AOAM5338UlCWzmRSL7CovsvazJy20giX7IFqVUBKxykdB3IN3BL1tvY1 6HgDwz8cQG3u2QaZqISz2w4TNknZIZDMqYw2DnQaIsF0abw= X-Google-Smtp-Source: ABdhPJxJRpeh6nGl/3FFV/3Z9E3OPmKXESnqza6YaZazS118OUOIJNhP0WbfT4MxduUgAvgfABn07papfcL3YbbNiHk= X-Received: by 2002:a9d:346:: with SMTP id 64mr3992950otv.4.1606329137641; Wed, 25 Nov 2020 10:32:17 -0800 (PST) X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:109632 Archived-At: --000000000000a45f0305b4f2a5d6 Content-Type: multipart/alternative; boundary="000000000000a45f0005b4f2a5d4" --000000000000a45f0005b4f2a5d4 Content-Type: text/plain; charset="UTF-8" Hello! I would like to set framed boxes, measure their dimensions and proceed based on the measurement. It is a combination of TeX and Lua ends. - Boxes are set on the TeX side. Stacking boxes (hbox, framed, vbox) in Lua looked too complex. - The content of the inner box is set on the Lua side (some computations). On TeX side boxes and their dimensions are accessible, but not at Lua side, until luacode is finished (iterations over boxes happen here). I would say Hans already named the problem in the list: *that is always tricky as what happens is postponing till the group ends*. Do you have an idea how to expand the box sooner or would you use a different approach? Sorry for longer MWE (attached also). Thank you, Jano \def\StartBox{\setbox0=\hbox\bgroup% open hbox \framed[frame=on]\bgroup% open framed \vbox\bgroup% open vbox (\par needed) } \def\StopBox{\egroup\egroup\egroup% close vbox, framed, hbox \setvariable{Test}{Height}{\the\ht0}% }% \startluacode ctx = context function TestBox() ctx("TeX Box: ") ctx.copy(false,0)ctx.par() ctx("TeX Getvar: ") ctx.getvariable("Test", "Height")ctx.par() var = tokens.getters.macro(tokens.getters.macro("??variables") .. "Test:Height") ctx("Lua Type: ") ctx(type(var))ctx.par() ctx("Lua Value: ") ctx(var)ctx.par() end \stopluacode \starttext \startluacode ctx.bold("First luacode (more boxes)")ctx.par() ctx.StartBox() ctx("AAA")ctx.par() ctx("BBB")ctx.par() ctx.StopBox() TestBox() ctx.StartBox() ctx("CCC")ctx.par() ctx.StopBox() TestBox() \stopluacode \blank[4*big] \startluacode ctx.bold("Second luacode (last content of box0)")ctx.par() TestBox() \stopluacode \stoptext --000000000000a45f0005b4f2a5d4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello!

I would like to set framed boxes= , measure their dimensions and proceed based on the measurement. It is a co= mbination of TeX and Lua ends.
  • Boxes are set on the T= eX side. Stacking boxes (hbox, framed, vbox) in Lua looked too complex.
  • The content of the inner box is set on the Lua side (some computations= ).
On TeX side boxes and their dimensions are accessible, but not = at Lua side, until luacode=C2=A0is finished= (iterations over boxes happen here). I would say Hans already named the=C2= =A0problem in the list:=C2=A0that is always tricky as what happens is po= stponing till the group ends.

Do you have an i= dea how to expand the box sooner or would=C2=A0you use a different approach= ?

Sorry for longer MWE (attached=20 also).

Thank you,
Jano

\def\StartBox{\setbox0=3D\hbox\bgroup% ope= n hbox
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \framed[f= rame=3Don]\bgroup% open framed
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 \vbox\bgroup% open vbox (\par needed)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
\def\StopBox{\egroup\egro= up\egroup% close vbox, framed, hbox
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0\setvariable{Test}{Height}{\the\ht0}%
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 }%

\startluacode
ctx =3D context

func= tion TestBox()
=C2=A0 =C2=A0 ctx("TeX Box: ") =C2=A0 =C2=A0ctx= .copy(false,0)ctx.par()
=C2=A0 =C2=A0 ctx("TeX Getvar: ") ctx.= getvariable("Test", "Height")ctx.par()
=C2=A0 =C2=A0= var =3D tokens.getters.macro(tokens.getters.macro("??variables")= .. "Test:Height")
=C2=A0 =C2=A0 ctx("Lua Type: ") = =C2=A0 ctx(type(var))ctx.par()
=C2=A0 =C2=A0 ctx("Lua Value: "= ) =C2=A0ctx(var)ctx.par()
end
\stopluacode

\starttext

\= startluacode
=C2=A0 =C2=A0 ctx.bold("First luacode (more boxes)&quo= t;)ctx.par()
=C2=A0 =C2=A0 ctx.StartBox()
=C2=A0 =C2=A0 ctx("AAA= ")ctx.par()
=C2=A0 =C2=A0 ctx("BBB")ctx.par()
=C2=A0 = =C2=A0 ctx.StopBox()
=C2=A0 =C2=A0 TestBox()
=C2=A0 =C2=A0 ctx.StartB= ox()
=C2=A0 =C2=A0 ctx("CCC")ctx.par()
=C2=A0 =C2=A0 ctx.St= opBox()
=C2=A0 =C2=A0 TestBox()
\stopluacode

\blank[4*big]
=
\startluacode
=C2=A0 =C2=A0 ctx.bold("Second luacode (last cont= ent of box0)")ctx.par()
=C2=A0 =C2=A0 TestBox()
\stopluacode
=
\stoptext

--000000000000a45f0005b4f2a5d4-- --000000000000a45f0305b4f2a5d6 Content-Type: application/x-tex; name="texbox-complex.tex" Content-Disposition: attachment; filename="texbox-complex.tex" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_khxqnxn10 XGRlZlxTdGFydEJveHtcc2V0Ym94MD1caGJveFxiZ3JvdXAlIG9wZW4gaGJveA0KICAgICAgICAg ICAgICAgIFxmcmFtZWRbZnJhbWU9b25dXGJncm91cCUgb3BlbiBmcmFtZWQNCiAgICAgICAgICAg ICAgICAgICAgXHZib3hcYmdyb3VwJSBvcGVuIHZib3ggKFxwYXIgbmVlZGVkKQ0KICAgICAgICAg ICAgIH0NClxkZWZcU3RvcEJveHtcZWdyb3VwXGVncm91cFxlZ3JvdXAlIGNsb3NlIHZib3gsIGZy YW1lZCwgaGJveA0KICAgICAgICAgICAgIFxzZXR2YXJpYWJsZXtUZXN0fXtIZWlnaHR9e1x0aGVc aHQwfSUNCiAgICAgICAgICAgIH0lDQoNClxzdGFydGx1YWNvZGUNCmN0eCA9IGNvbnRleHQNCg0K ZnVuY3Rpb24gVGVzdEJveCgpDQogICAgY3R4KCJUZVggQm94OiAiKSAgICBjdHguY29weShmYWxz ZSwwKWN0eC5wYXIoKQ0KICAgIGN0eCgiVGVYIEdldHZhcjogIikgY3R4LmdldHZhcmlhYmxlKCJU ZXN0IiwgIkhlaWdodCIpY3R4LnBhcigpDQogICAgdmFyID0gdG9rZW5zLmdldHRlcnMubWFjcm8o dG9rZW5zLmdldHRlcnMubWFjcm8oIj8/dmFyaWFibGVzIikgLi4gIlRlc3Q6SGVpZ2h0IikNCiAg ICBjdHgoIkx1YSBUeXBlOiAiKSAgIGN0eCh0eXBlKHZhcikpY3R4LnBhcigpDQogICAgY3R4KCJM dWEgVmFsdWU6ICIpICBjdHgodmFyKWN0eC5wYXIoKQ0KZW5kDQpcc3RvcGx1YWNvZGUNCg0KXHN0 YXJ0dGV4dA0KDQpcc3RhcnRsdWFjb2RlDQogICAgY3R4LmJvbGQoIkZpcnN0IGx1YWNvZGUgKG1v cmUgYm94ZXMpIiljdHgucGFyKCkNCiAgICBjdHguU3RhcnRCb3goKQ0KICAgIGN0eCgiQUFBIilj dHgucGFyKCkNCiAgICBjdHgoIkJCQiIpY3R4LnBhcigpDQogICAgY3R4LlN0b3BCb3goKQ0KICAg IFRlc3RCb3goKQ0KICAgIGN0eC5TdGFydEJveCgpDQogICAgY3R4KCJDQ0MiKWN0eC5wYXIoKQ0K ICAgIGN0eC5TdG9wQm94KCkNCiAgICBUZXN0Qm94KCkNClxzdG9wbHVhY29kZQ0KDQpcYmxhbmtb NCpiaWddDQoNClxzdGFydGx1YWNvZGUNCiAgICBjdHguYm9sZCgiU2Vjb25kIGx1YWNvZGUgKGxh c3QgY29udGVudCBvZiBib3gwKSIpY3R4LnBhcigpDQogICAgVGVzdEJveCgpDQpcc3RvcGx1YWNv ZGUNCg0KXHN0b3B0ZXh0DQo= --000000000000a45f0305b4f2a5d6 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --000000000000a45f0305b4f2a5d6--