[luatex] Change in behavior

Br. Samuel Springuel rpspringuel at gmail.com
Sun Aug 21 20:12:32 CEST 2016


As part of the GregorioTeX package, we have a Lua function which 
rescales a particular distance register by multiplying it by an 
arbitrary factor (the factor can be non-integer, so we cannot do this 
math in TeX itself).  Originally we wrote the function as this:

local function scale_space(factor)
   local skip = tex.getskip('gre at skip@temp at four')
   skip.width = skip.width * factor
   -- should skip.stretch and skip.shink also be scaled?
end

However, we found that after updating our testing process to use TL2016 
(and thus LuaTeX 0.95 instead of 0.80) the rescaling was no longer 
happening.  After some experimentation, we found that the following worked:

local function scale_space(factor)
   local skip = tex.getskip('gre at skip@temp at four')
   skip.width = skip.width * factor
   tex.setskip('gre at skip@temp at four',skip)
   -- should skip.stretch and skip.shink also be scaled?
end

This implies to me that the behavior of the function interface for token 
registers changed at some point between these two versions.  In 0.80 a 
variable filled with a token register was linked to that register and 
changes to the variable were reflected in the token register itself.  In 
0.95 the variable is not linked to the register and thus changes to the 
variable are not communicated to the register unless and until that is 
done so explicitly.  Is my interpretation of the situation correct?  If 
so, when did this change occur and what is the best way for me to stay 
abreast of these sort of changes.
-- 
✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝
Br. Samuel, OSB
St. Anselm’s Abbey
Washington, DC
(R. Padraic Springuel)

PAX ☧ ΧΡΙΣΤΟΣ


More information about the luatex mailing list