On 10/28/11 08:44, Patrick Gundlach wrote:



context.blackrule{ width = number.topoints(tex.dimen["textwidth"]/2) }

or just tex.dimen["textwidth"]/2 .. "sp"

Wait, just so I understand: your solution would imply that 
tex.dimen["textwidth"] holds a number, not a dimension, right? (Because you 
simply concatenate it with a dimension unit). Which makes sense when I think of it 
because lua has no concept of dimensions, only of strings, functions, tables, numbers... 
Whereas the Wolfgang implies that the result is already in sp. So who's right?

both :)

tex.dimen holds a number, that is the size in points, multiplied by 65536/1pt, 
so for example 3pt becomes

3pt * 65536
-----------  = 3 * 65536 = 196608
       1pt


This number is also known "sp". So if you store the number 3*65536 in 
tex.dimen[...], you can say:

my width is \directlua{ tex.dimen[...] / 2}sp (results to "my width is 
196608sp", which you can use as an argument to whatever needs a length)

or

my width is \directlua{  number_to_points(tex.dimen[...]) } where 
number_to_points is something like

number_to_points = function (amount_in_sp)
   in_pt = tostring(amount_in_sp / 65536)
   return in_pt .. "pt"
end

which gives "3pt".

Patrick


Luigi, Patrick,

thanks for your explanations! The point of my question was: can I feed the content of tex.dimen["textwidth"] directly back to TeX, and the answer to this appears to be "no"; you need to add some unit to it (otherwise, you get an error message). Which was a bit confusing to me at first, because the name tex.dimen implies that it holds a "real" dimension, like \newdim does.

Thomas
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to