-function luatexja.ext_get_parameter_unary(k)
- local t = tex.getcount('ltj@@stack')
- if k == 'yalbaselineshift' then
- tex.write(print_scaled(tex.getattribute('ltj@yablshift'))..'pt')
- elseif k == 'yjabaselineshift' then
- tex.write(print_scaled(tex.getattribute('ltj@ykblshift'))..'pt')
- elseif k == 'kanjiskip' then
- tex.write(print_spec(ltjs.get_skip_table('kanjiskip', t)))
- elseif k == 'xkanjiskip' then
- tex.write(print_spec(ltjs.get_skip_table('xkanjiskip', t)))
- elseif k == 'jcharwidowpenalty' then
- tex.write(ltjs.get_penalty_table(stack_table_index.JWP, 0, t))
- elseif k == 'autospacing' then
- tex.write(tex.getattribute('ltj@autospc'))
- elseif k == 'autoxspacing' then
- tex.write(tex.getattribute('ltj@autoxspc'))
- elseif k == 'differentjfm' then
- if luatexja.jfmglue.diffmet_rule == math.max then
- tex.write('large')
- elseif luatexja.jfmglue.diffmet_rule == math.min then
- tex.write('small')
- elseif luatexja.jfmglue.diffmet_rule == math.two_average then
- tex.write('average')
- elseif luatexja.jfmglue.diffmet_rule == math.two_paverage then
- tex.write('paverage')
- elseif luatexja.jfmglue.diffmet_rule == math.two_pleft then
- tex.write('pleft')
- elseif luatexja.jfmglue.diffmet_rule == math.two_pright then
- tex.write('pright')
- elseif luatexja.jfmglue.diffmet_rule == math.two_add then
- tex.write('both')
- else -- This can't happen.
- tex.write('???')
+do
+ luatexja.unary_pars = {
+ yalbaselineshift = function(t)
+ return print_scaled(tex.getattribute('ltj@yablshift'))..'pt'
+ end,
+ yjabaselineshift = function(t)
+ return print_scaled(tex.getattribute('ltj@ykblshift'))..'pt'
+ end,
+ talbaselineshift = function(t)
+ return print_scaled(tex.getattribute('ltj@tablshift'))..'pt'
+ end,
+ tjabaselineshift = function(t)
+ return print_scaled(tex.getattribute('ltj@tkblshift'))..'pt'
+ end,
+ kanjiskip = function(t)
+ return print_spec(ltjs.get_stack_skip(stack_table_index.KSK, t))
+ end,
+ xkanjiskip = function(t)
+ return print_spec(ltjs.get_stack_skip(stack_table_index.XSK, t))
+ end,
+ jcharwidowpenalty = function(t)
+ return ltjs.get_stack_table(stack_table_index.JWP, 0, t)
+ end,
+ autospacing = function(t)
+ return tex.getattribute('ltj@autospc')
+ end,
+ autoxspacing = function(t)
+ return tex.getattribute('ltj@autoxspc')
+ end,
+ differentjfm = function(t)
+ local f, r = luatexja.jfmglue.diffmet_rule, '???'
+ if f == math.max then r = 'large'
+ elseif f == math.min then r = 'small'
+ elseif f == math.two_average then r = 'average'
+ elseif f == math.two_paverage then r = 'paverage'
+ elseif f == math.two_pleft then r = 'pleft'
+ elseif f == math.two_pright then r = 'pright'
+ elseif f == math.two_add then r = 'both'
+ end
+ return r
+ end,
+ direction = function()
+ local v = ltjd.get_dir_count()
+ if math.abs(tex.nest[tex.nest.ptr].mode) == ltjs.mmode and v == dir_table.dir_tate then
+ v = dir_table.dir_utod
+ end
+ return v
+ end,
+ adjustdir = ltjd.get_adjust_dir_count,
+ }
+
+ local unary_pars = luatexja.unary_pars
+ function luatexja.ext_get_parameter_unary(k)
+ if unary_pars[k] then
+ tex.write(tostring(unary_pars[k](tex.getcount('ltj@@stack'))))