if not modules then modules = { } end modules ['math-frc'] = { version = 1.001, comment = "companion to math-frc.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } local utfchar = utf.char local context = context local variables = interfaces.variables local v_no = variables.no local v_yes = variables.yes local v_hidden = variables.hidden local resolved = { [0x007B] = "\\{", [0x007D] = "\\}", } table.setmetatableindex(resolved, function(t,k) local v = utfchar(k) t[k] = v return v end) local ctx_Uatop = context.Uatop local ctx_Uover = context.Uover -- local function umathfraction(how,style,left,right,width) -- style = tonumber(style) -- or nil -- if how == v_no then -- if left == 0x002E and right == 0x002E then -- if style then -- context("\\Uatop style %i",style) -- else -- ctx_Uatop() -- end -- else -- if style then -- context("\\Uatopwithdelims style %i %s%s",style,resolved[left],resolved[right]) -- else -- context("\\Uatopwithdelims%s%s",resolved[left],resolved[right]) -- end -- end -- elseif how == v_yes or how == v_hidden then -- local norule = how == v_hidden and " norule " or "" -- if style then -- if left == 0x002E and right == 0x002E then -- context("\\Uabove style %i %s%ssp",style,norule,width) -- else -- context("\\Uabovewithdelims style %i %s%s%s%ssp",style,norule,resolved[left],resolved[right],width) -- end -- else -- if left == 0x002E and right == 0x002E then -- context("\\Uabove%s%ssp",norule,width) -- else -- context("\\Uabovewithdelims%s%s%s%ssp",norule,resolved[left],resolved[right],width) -- end -- end -- else -- v_auto -- if left == 0x002E and right == 0x002E then -- if style then -- context("\\Uover style %i",style) -- else -- ctx_Uover() -- end -- else -- if style then -- context("\\Uoverwithdelims style %i %s%s",style,resolved[left],resolved[right]) -- else -- context("\\Uoverwithdelims%s%s",resolved[left],resolved[right]) -- end -- end -- end -- end -- -- interfaces.implement { -- name = "umathfraction", -- actions = umathfraction, -- arguments = { "string", "string", "number", "number", "dimen" } -- } local function umathfraction(how,left,right,width) if how == v_no then if left == 0x002E and right == 0x002E then ctx_Uatop() else context("\\Uatopwithdelims%s%s",resolved[left],resolved[right]) end elseif how == v_yes or how == v_hidden then local norule = how == v_hidden and " norule " or "" if left == 0x002E and right == 0x002E then context("\\Uabove %s%ssp",norule,width) else context("\\Uabovewithdelims %s%s%s%ssp",norule,resolved[left],resolved[right],width) end else -- v_auto if left == 0x002E and right == 0x002E then ctx_Uover() else context("\\Uoverwithdelims%s%s",resolved[left],resolved[right]) end end end interfaces.implement { name = "umathfraction", actions = umathfraction, protected = true, arguments = { "string", "number", "number", "dimen" } }