diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-03-26 20:15:06 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-03-26 20:15:06 +0100 |
commit | 68fde114493544244df1fddf2d72499cf67a764b (patch) | |
tree | 2daf132bbc0ba2b617a649f7f8e3ab44b0888150 /tex/context/base/mlib-pdf.lua | |
parent | 41d38174b1d78e7f96dcb94434bf58d10ad08c1a (diff) | |
download | context-68fde114493544244df1fddf2d72499cf67a764b.tar.gz |
2015-03-26 19:21:00
Diffstat (limited to 'tex/context/base/mlib-pdf.lua')
-rw-r--r-- | tex/context/base/mlib-pdf.lua | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/tex/context/base/mlib-pdf.lua b/tex/context/base/mlib-pdf.lua index 11325b9fe..8de09f42a 100644 --- a/tex/context/base/mlib-pdf.lua +++ b/tex/context/base/mlib-pdf.lua @@ -30,6 +30,8 @@ local write_node = node.write local pen_info = mplib.pen_info local object_fields = mplib.fields +local save_table = false + metapost = metapost or { } local metapost = metapost @@ -56,6 +58,16 @@ local f_J = formatters["%i J"] local f_d = formatters["[%s] %F d"] local f_w = formatters["%F w"] +directives.register("metapost.savetable",function(v) + if type(v) == "string" then + save_table = file.addsuffix(v,"mpl") + elseif v then + save_table = file.addsuffix(environment.jobname .. "-graphic","mpl") + else + save_table = false + end +end) + local pdfliteral = function(pdfcode) local literal = copy_node(mpsliteral) literal.data = pdfcode @@ -74,7 +86,7 @@ local function getobjects(result,figure,index) robjects = { } result.objects = robjects end - local fobjects = robjects[index] + local fobjects = robjects[index or 1] if not fobjects then fobjects = figure:objects() robjects[index] = fobjects @@ -89,11 +101,17 @@ function metapost.convert(result, trialrun, flusher, multipass, askedfig) if trialrun then local multipassindeed = metapost.parse(result,askedfig) if multipass and not multipassindeed and metapost.optimize then + if save_table then + table.save(save_table,metapost.totable(result,1)) -- direct + end metapost.flush(result,flusher,askedfig) -- saves a run else return false end else + if save_table then + table.save(save_table,metapost.totable(result,1)) -- direct + end metapost.flush(result,flusher,askedfig) end return true -- done @@ -327,27 +345,6 @@ local pattern_lst = (variable * newline^0)^0 metapost.variables = { } -- to be stacked metapost.properties = { } -- to be stacked -function commands.mprunvar(key,n) -- should be defined in another lib - local value = metapost.variables[key] - if value ~= nil then - local tvalue = type(value) - if tvalue == "table" then - local ntype = type(n) - if ntype == "number" then - context(value[n]) - elseif ntype == "string" then - context(concat(value,n)) - else - context(concat(value," ")) - end - elseif tvalue == "number" or tvalue == "boolean" then - context(tostring(value)) - elseif tvalue == "string" then - context(value) - end - end -end - function metapost.untagvariable(str,variables) -- will be redone if variables == false then return lpegmatch(pattern_lst,str) @@ -632,13 +629,13 @@ function metapost.pdfliterals(result) return result end --- so far - -function metapost.totable(result) - local figure = result and result.fig and result.fig[1] +function metapost.totable(result,askedfig) + local askedfig = askedfig or 1 + local figure = result and result.fig and result.fig[1] if figure then local results = { } - local objects = figure:objects() + -- local objects = figure:objects() + local objects = getobjects(result,figure,askedfig) for o=1,#objects do local object = objects[o] local result = { } |