summaryrefslogtreecommitdiff
path: root/tex/context/base/mlib-pdf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mlib-pdf.lua')
-rw-r--r--tex/context/base/mlib-pdf.lua33
1 files changed, 9 insertions, 24 deletions
diff --git a/tex/context/base/mlib-pdf.lua b/tex/context/base/mlib-pdf.lua
index 82db18fec..80c554de1 100644
--- a/tex/context/base/mlib-pdf.lua
+++ b/tex/context/base/mlib-pdf.lua
@@ -33,7 +33,6 @@ metapost.flushers = metapost.flushers or { }
local pdfflusher = { }
metapost.flushers.pdf = pdfflusher
-metapost.multipass = false -- to be stacked
metapost.n = 0
metapost.optimize = true -- false
@@ -64,23 +63,6 @@ end
-- get a new result table and the stored objects are forgotten. Otherwise they
-- are reused.
--- local function getobjects(result,figure,index)
--- if metapost.optimize then
--- local objects = result.objects
--- if not objects then
--- result.objects = { }
--- end
--- objects = result.objects[index]
--- if not objects then
--- objects = figure:objects()
--- result.objects[index] = objects
--- end
--- return objects
--- else
--- return figure:objects()
--- end
--- end
-
local function getobjects(result,figure,index)
if metapost.optimize then
local robjects = result.objects
@@ -101,15 +83,14 @@ end
function metapost.convert(result, trialrun, flusher, multipass, askedfig)
if trialrun then
- metapost.multipass = false
- metapost.parse(result, askedfig)
- if multipass and not metapost.multipass and metapost.optimize then
- metapost.flush(result, flusher, askedfig) -- saves a run
+ local multipassindeed = metapost.parse(result,askedfig)
+ if multipass and not multipassindeed and metapost.optimize then
+ metapost.flush(result,flusher,askedfig) -- saves a run
else
return false
end
else
- metapost.flush(result, flusher, askedfig)
+ metapost.flush(result,flusher,askedfig)
end
return true -- done
end
@@ -598,6 +579,7 @@ function metapost.parse(result,askedfig)
if result then
local figures = result.fig
if figures then
+ local multipass = false
local analyzeplugins = metapost.analyzeplugins -- each object
for index=1,#figures do
local figure = figures[index]
@@ -606,7 +588,9 @@ function metapost.parse(result,askedfig)
local objects = getobjects(result,figure,index)
if objects then
for o=1,#objects do
- analyzeplugins(objects[o])
+ if analyzeplugins(objects[o]) then
+ multipass = true
+ end
end
end
if askedfig ~= "all" then
@@ -614,6 +598,7 @@ function metapost.parse(result,askedfig)
end
end
end
+ return multipass
end
end
end