require "ipe"
These pages document the Lua bindings to Ipelib:
-- recenter.lua -- center objects on each page of the document require "ipe" inname, outname = ... if not outname then io.stderr.write("Usage: recenter.lua <inputfile> <outputfile>\n") return end doc = assert(ipe.Document(inname)) -- make sure we have size information for text assert(doc:runLatex()) layout = doc:sheets():find("layout") fs = layout.framesize for i,p in doc:pages() do box = ipe.Rect() for j = 1,#p do box:add(p:bbox(j)) end nx = (fs.x - box:width()) / 2 ny = (fs.y - box:height()) / 2 trans = ipe.Vector(nx, ny) - box:bottomLeft() m = ipe.Translation(trans) for j = 1,#p do p:transform(j, m) end end doc:save(outname)
Here is a small Lua script that takes an Ipe document and exports each view separately in EPS format:
-- splitviews.lua -- export each view of an Ipe document separately require "ipe" fname = ... if not fname then io.stderr:write("Usage: splitviews.lua <file>\n") return end i = fname:find("%.[^.]+$") if i then epsname = fname:sub(1,i-1) else epsname = fname end doc = assert(ipe.Document(fname)) -- need latex information to save as Postscript assert(doc:runLatex()) for i,p in doc:pages() do io.stderr:write("Saving page " .. i .. "\n") for j = 1, p:countViews() do out = epsname .. "-" .. i .. "-" .. j .. ".eps" io.stderr:write("Saving view " .. i .. "-" .. j .. " as " .. out .. "\n") doc:exportView(out, "eps", nil, i, j) end end