Hi Hraban,

On Sun, 2024-06-09 at 22:12 +0200, Henning Hraban Ramm wrote:
> when I define a measure on the TeX side, I used to get at the value in
> Lua with tex.getdim, like:
>
> \definemeasure[Bleed][3mm]
>
> tex.getdimen("Bleed")
>
> But now I get "incorrect dimen name".
> I need it as a dimension, since I do calculations with other dimensions
> like "topspace".
>
> How should I do this correctly?

There doesn't appear to be any official interfaces to get the value of a
measure from Lua, but the following should work okay:

    \definemeasure[mymeasure][10pt]

    \newdimen\mydimen \mydimen=10pt

    \definemeasure[measureexpr][1in + 27.73pt]

    \startluacode
        -- Returns the unexpanded value of some variable in a namespace.
        local function get_variable(namespace, variable)
            -- -- Doesn't work since "measure" is defined as a "system 
namespace".
            -- namespace = interfaces.getnamespace(namespace)
            namespace = tokens.getters.macro("??" .. namespace)
            return tokens.getters.macro(namespace .. variable)
        end

        -- Gets the value of a measure and converts it to an integer in sp 
units.
        local function get_measure(name)
            return tex.sp(get_variable("measure", name))
        end

        -- Gets the \dimexpr-evaluated value of a measure, in sp units.
        local function get_measure_expr(name)
            local namespace = tokens.getters.macro("??measure")
            -- Undocumented, but seems to work as expected.
            return tex.getdimensionvalue(namespace .. name)
        end

        -- Print the values of the lengths.
        print(("="):rep(80))
        print("mymeasure:"  , get_measure("mymeasure")       )
        print("mydimen:"    , tex.dimen["mydimen"]           )
        print("measureexpr:", get_measure_expr("measureexpr"))
        print(("="):rep(80))
    \stopluacode

    \startTEXpage
        \measure{mymeasure}
        \the\mydimen
        \measure{measureexpr}
    \stopTEXpage

Thanks,
-- Max

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to