diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/math-frc.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/math-frc.lua | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/math-frc.lua b/Master/texmf-dist/tex/context/base/mkiv/math-frc.lua index 190c364101d..fa3ac515fe1 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/math-frc.lua +++ b/Master/texmf-dist/tex/context/base/mkiv/math-frc.lua @@ -13,6 +13,7 @@ local variables = interfaces.variables local v_no = variables.no local v_yes = variables.yes +local v_hidden = variables.hidden local resolved = { [0x007B] = "\\{", @@ -35,11 +36,12 @@ local function mathfraction(how,left,right,width) else context("\\atopwithdelims%s%s",resolved[left],resolved[right]) end - elseif how == v_yes then + elseif how == v_yes or how == v_hidden then + local norule = how == v_hidden and LUATEXFUNCTIONALITY > 7361 and " norule " or "" if left == 0x002E and right == 0x002E then - context("\\normalabove%ssp",width) + context("\\normalabove%s%s%ssp",norule,width) else - context("\\abovewithdelims%s%s%ssp",resolved[left],resolved[right],width) + context("\\abovewithdelims%s%s%s%s%ssp",norule,resolved[left],resolved[right],width) end else -- v_auto if left == 0x002E and right == 0x002E then @@ -55,3 +57,41 @@ interfaces.implement { actions = mathfraction, arguments = { "string", "number", "number", "dimen" } } + +-- experimental code in lmtx + +if CONTEXTLMTXMODE > 0 then + + local ctx_Uatop = context.Uatop + local ctx_Uover = context.Uover + + 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, + arguments = { "string", "number", "number", "dimen" } + } + +end |