Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- Experimental features for diagxy

require "diagxy.lua"	-- (find-anchor "diagxy.lua")

asluaexpr = function (str)
    return assert(loadstring("return "..str))()
  end
getwordasluaexpr = function () return asluaexpr(getword()) end

forths["midpoint"] = function ()
    local node1, node2 = ds[2], ds[1]
    local midx, midy = (node1.x + node2.x)/2, (node1.y + node2.y)/2
    ds[2] = storenode{x=midx, y=midy, TeX="\\phantom{O}"}
    dspop()
  end

splitdist = function (x1, x2, dx0, dx1, dx2)
    local dx = x2-x1
    local rest = dx-(dx0 or 0)-(dx1 or 0)-(dx2 or 0)
    local type = (dx0 and "n" or "_")..(dx1 and "n" or "_")..
                 (dx2 and "n" or "_")
    if type=="_n_" then
      return x1+rest/2, x2-rest/2
    elseif type=="n_n" then
      return x1+dx0, x2-dx2
    elseif type=="nn_" then
      return x1+dx0+rest/2, x2-rest/2
    elseif type=="_nn" then
      return x1+rest/2, x2-dx2-rest/2
    end
    local p = function (n) return n or "nil" end
    print("Bad splitdist pattern: "..p(dx0).." "..p(dx1).." "..p(dx2))
  end

forths["harrownodes"] = function ()
    local node1, node2 = ds[2], ds[1]
    local midy = (node1.y + node2.y)/2
    local dx0 = getwordasluaexpr()
    local dx1 = getwordasluaexpr()
    local dx2 = getwordasluaexpr()
    local x1, x2 = splitdist(node1.x, node2.x, dx0, dx1, dx2)
    dspush(storenode{x=x1, y=midy, TeX="\\phantom{O}"})
    dspush(storenode{x=x2, y=midy, TeX="\\phantom{O}"})
  end

forths["varrownodes"] = function ()
    local node1, node2 = ds[2], ds[1]
    local midx = (node1.x + node2.x)/2
    local dy0 = getwordasluaexpr()
    local dy1 = getwordasluaexpr()
    local dy2 = getwordasluaexpr()
    local y1, y2 = splitdist(node1.y, node2.y, dy0, dy1, dy2)
    dspush(storenode{x=midx, y=y1, TeX="\\phantom{O}"})
    dspush(storenode{x=midx, y=y2, TeX="\\phantom{O}"})
  end

placetoTeX = function (arrow)
    local node = arrow.from
    return format("\\place(%d,%d)[{%s}]", realx(node.x), realy(node.y),
        node.TeX)
  end
forths["place"] = function ()
    storearrow {special=placetoTeX, from=ds[1]}
  end

emitTeX = function (arrow)
    return arrow.TeX
  end
forths["emit\""] = function ()
    storearrow {special=emitTeX, TeX=getuntilquote()}
  end

forths[".plabel="] = function ()
    ds[1].placement = getword()
    ds[1].label = getword()
  end

forths["@"] = function ()
    dspush(ds[table.getn(ds) - depths[1] - getwordasluaexpr()])
  end

forths["aliases"] = function ()
    local n = getwordasluaexpr()
    for dep = n,1,-1 do nodes[getword()] = ds[dep] end
  end