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
___________________________________________________________________________________