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, cont...@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

___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to