summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/math-noa.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-08-24 20:15:46 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-08-24 20:15:46 +0200
commit9c25133c75ad4c533cd66a26243173de11ee461b (patch)
treee73042a06ef733736a25f1f297d10ffe6ff23d2f /tex/context/base/mkiv/math-noa.lua
parent7fbe8caaed88379118eb18afea42c0d75297fdca (diff)
downloadcontext-9c25133c75ad4c533cd66a26243173de11ee461b.tar.gz
2017-08-24 19:52:00
Diffstat (limited to 'tex/context/base/mkiv/math-noa.lua')
-rw-r--r--tex/context/base/mkiv/math-noa.lua147
1 files changed, 54 insertions, 93 deletions
diff --git a/tex/context/base/mkiv/math-noa.lua b/tex/context/base/mkiv/math-noa.lua
index 048d51d1e..532e293b9 100644
--- a/tex/context/base/mkiv/math-noa.lua
+++ b/tex/context/base/mkiv/math-noa.lua
@@ -1695,86 +1695,49 @@ do
end
end
--- local function movesubscript(parent,current_nucleus,current_char,new_char)
--- local prev = getprev(parent)
--- if prev and getid(prev) == math_noad then
--- local psup = getsup(prev)
--- local psub = getsub(prev)
--- if not psup and not psub then
--- -- {f} {'}_n => f_n^'
--- fixsupscript(prev,current_nucleus,current_char,new_char)
--- local nucleus = getnucleus(parent)
--- local sub = getsub(parent)
--- setsup(prev,nucleus)
--- setsub(prev,sub)
--- local dummy = copy_node(nucleus)
--- setchar(dummy,0)
--- setnucleus(parent,dummy)
--- setsub(parent)
--- elseif not psup then
--- -- {f} {'}_n => f_n^'
--- fixsupscript(prev,current_nucleus,current_char,new_char)
--- local nucleus = getnucleus(parent)
--- setsup(prev,nucleus)
--- local dummy = copy_node(nucleus)
--- setchar(dummy,0)
--- setnucleus(parent,dummy)
--- end
--- end
--- end
-
--- fixscripts[math_char] = function(pointer,what,n,parent,nested) -- todo: switch to turn in on and off
--- if parent then
--- local nucleus = getnucleus(parent)
--- if getid(nucleus) == math_char then
--- local sub = getsub(parent)
--- local sup = getsup(parent)
--- if sup and getid(sup) == math_char then
--- local oldchar = getchar(sup)
--- local newchar = movesub[oldchar]
--- if newchar then
--- fixsupscript(parent,sup,oldchar,newchar)
--- end
--- end
--- if sub then
--- local oldchar = getchar(nucleus)
--- local newchar = movesub[oldchar]
--- if newchar then
--- movesubscript(parent,nucleus,oldchar,newchar)
--- end
--- end
--- end
--- end
--- end
-
- -- move this inline
-
- local function movesubscript(parent,current_nucleus,oldchar,newchar)
- local prev = getprev(parent)
- if prev and getid(prev) == math_noad then
- local psup = getsup(prev)
- local psub = getsub(prev)
- if not psup and not psub then
- -- {f} {'}_n => f_n^'
- fixsupscript(prev,current_nucleus,oldchar,newchar)
- local nucleus = getnucleus(parent)
- local sub = getsub(parent)
- setsup(prev,nucleus)
- setsub(prev,sub)
- local dummy = copy_node(nucleus)
- setchar(dummy,0)
- setnucleus(parent,dummy)
- setsub(parent)
- elseif not psup then
- -- {f} {'}_n => f_n^'
- fixsupscript(prev,current_nucleus,oldchar,newchar)
- local nucleus = getnucleus(parent)
- setsup(prev,nucleus)
- local dummy = copy_node(nucleus)
- setchar(dummy,0)
- setnucleus(parent,dummy)
- end
- end
+ -- local function movesubscript(parent,current_nucleus,oldchar,newchar)
+ -- local prev = getprev(parent)
+ -- if prev and getid(prev) == math_noad then
+ -- local psup = getsup(prev)
+ -- local psub = getsub(prev)
+ -- if not psup and not psub then
+ -- fixsupscript(prev,current_nucleus,oldchar,newchar)
+ -- local nucleus = getnucleus(parent)
+ -- local sub = getsub(parent)
+ -- setsup(prev,nucleus)
+ -- setsub(prev,sub)
+ -- local dummy = copy_node(nucleus)
+ -- setchar(dummy,0)
+ -- setnucleus(parent,dummy)
+ -- setsub(parent)
+ -- elseif not psup then
+ -- fixsupscript(prev,current_nucleus,oldchar,newchar)
+ -- local nucleus = getnucleus(parent)
+ -- setsup(prev,nucleus)
+ -- local dummy = copy_node(nucleus)
+ -- setchar(dummy,0)
+ -- setnucleus(parent,dummy)
+ -- end
+ -- end
+ -- end
+
+ local function move_none_none(parent,prev,nuc,oldchar,newchar)
+ fixsupscript(prev,nuc,oldchar,newchar)
+ local sub = getsub(parent)
+ setsup(prev,nuc)
+ setsub(prev,sub)
+ local dummy = copy_node(nuc)
+ setchar(dummy,0)
+ setnucleus(parent,dummy)
+ setsub(parent)
+ end
+
+ local function move_none_psub(parent,prev,nuc,oldchar,newchar)
+ fixsupscript(prev,nuc,oldchar,newchar)
+ setsup(prev,nuc)
+ local dummy = copy_node(nuc)
+ setchar(dummy,0)
+ setnucleus(parent,dummy)
end
fixscripts[math_char] = function(pointer,what,n,parent,nested) -- todo: switch to turn in on and off
@@ -1788,12 +1751,12 @@ do
local sup = getsup(pointer)
if sub then
if sup then
--- print("[char] sub sup")
+ -- print("[char] sub sup")
else
--- print("[char] sub ---")
+ -- print("[char] sub ---")
end
elseif sup then
--- print("[char] --- sup")
+ -- print("[char] --- sup")
else
local prev = getprev(parent)
if prev and getid(prev) == math_noad then
@@ -1801,25 +1764,23 @@ do
local psup = getsup(prev)
if psub then
if psup then
--- print("sub sup [char] --- ---")
+ -- print("sub sup [char] --- ---")
else
- -- {f} {'}_n => f_n^'
--- print("sub --- [char] --- ---")
- movesubscript(parent,nuc,oldchar,newchar)
+ -- print("sub --- [char] --- ---")
+ move_none_psub(parent,prev,nuc,oldchar,newchar)
end
elseif psup then
--- print("--- sup [char] --- ---")
+ -- print("--- sup [char] --- ---")
else
- -- {f} {'}_n => f_n^'
--- print("[char] --- ---")
- movesubscript(parent,nuc,oldchar,newchar)
+ -- print("[char] --- ---")
+ move_none_none(parent,prev,nuc,oldchar,newchar)
end
else
--- print("no prev [char]")
+ -- print("no prev [char]")
end
end
else
--- print("[char]")
+ -- print("[char]")
end
end
end