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