On 5/22/2020 18:18, Hans Hagen wrote: > On 5/23/2020 12:03 AM, Hans Hagen wrote: >> On 5/22/2020 11:22 AM, context@vivaldi.net wrote: >>> Hello, >>> >>> is it possible to get somehow the width of the "material" (box?) of >>> the current line which is "ready" to be typeset? >>> >>> See the case: >>> >>> ---- >>> \starttext >>> >>>    some text >>> >>>    pqrs % Here I need to get width (or content) of the text from the >>> begin of the current line, >>>         % i.e. width of the text "pqrs". >>>         % (Depending of the width I will decide what to do later.) >>> >>> \stoptext >>> ---- >>> >>> I am too laical to know how to "inject" TeX workflow or whether to >>> access LuaTeX internals (nodes?) to get the desired information. >>> >>> - Is it possible somehow? >> Too easy ... >> >> \startluacode >>      function document.whatever() >>          context(nodes.hpack(tex.getnest().head.next).width) >>      end >> \stopluacode >> >> \unexpanded\def\widthuptohere{\dimexpr\ctxlua{document.whatever()}sp\relax} >> >> >> \starttext >> >>      \dorecurse {10} { >>          snippet #1\scratchdimen\widthuptohere\ has >> \the\scratchdimen\ width\par >>      } >> >> \stoptext >> >> but still you have to wikify it ... maybe i'll make it a low level >> helper (but than you also need to wikify that because i have no clue >> where to explain it) > Actually, one needs to flush a bit > > \startluacode >     function document.whatever() >         local h = nodes.hpack(tex.getnest().head.next) >         local w = h.width >         h.list = nil >         nodes.free(h) >         context(w) >     end > \stopluacode > > \unexpanded\def\widthuptohere{\dimexpr\ctxlua{document.whatever()}sp\relax} > > > \starttext > >     \dorecurse {10} { >         snippet #1\scratchdimen\widthuptohere\ has \the\scratchdimen\ > width\par >     } > > \stoptext > > not that it matters much, because it's unlikely that you leak more > than a dozen nodes in a run. > > Hans > If the OP simply wants the width of a string, one can use \setwidthof#1\to#2. \define\String{pqrs} \setwidthof{\String}\to\Wdth \String\ is \Wdth\ wide. \setwidthof{{\tfb\em\String}}\to\Wdth {\tfb\em\String} is \Wdth\ wide. I do not know if that is different from the width of the same string unboxed from the paragraph. There may be some adjustments made in justification, expansion, and such that are not treated. -- Rik