summaryrefslogtreecommitdiff
path: root/tex/context/base/x-math-svg.lua
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-01-12 17:15:07 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-01-12 17:15:07 +0100
commit8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch)
tree94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/x-math-svg.lua
parentf5aed2e51223c36c84c5f25a6cad238b2af59087 (diff)
downloadcontext-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/x-math-svg.lua')
-rw-r--r--tex/context/base/x-math-svg.lua176
1 files changed, 0 insertions, 176 deletions
diff --git a/tex/context/base/x-math-svg.lua b/tex/context/base/x-math-svg.lua
deleted file mode 100644
index 8a6288167..000000000
--- a/tex/context/base/x-math-svg.lua
+++ /dev/null
@@ -1,176 +0,0 @@
-if not modules then modules = { } end modules ['x-math-svg'] = {
- version = 1.001,
- comment = "companion to x-math-svg.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
-local tostring, type, next = tostring, type, next
-local lpegmatch, P, Cs = lpeg.match, lpeg.P, lpeg.Cs
-
-local xmlfirst = xml.first
-local xmlconvert = xml.convert
-local xmlload = xml.load
-local xmlsave = xml.save
-local xmlcollected = xml.collected
-local xmldelete = xml.delete
-
-local loadtable = table.load
-local savetable = table.save
-
-local replacesuffix = file.replacesuffix
-local addsuffix = file.addsuffix
-local removefile = os.remove
-local isfile = lfs.isfile
-
-local formatters = string.formatters
-
-moduledata = moduledata or table.setmetatableindex("table")
-local svgmath = moduledata.svgmath -- autodefined
-
-local namedata = { }
-local pagedata = { }
-
-local statusname = "x-math-svg-status.lua"
-local pdfname = "x-math-svg.pdf"
-
-local pdftosvg = os.which("mudraw")
-
-local f_make_tex = formatters[ [[context --global kpse:x-math-svg.mkvi --inputfile="%s" --svgstyle="%s" --batch --noconsole --once --purgeall]] ]
-local f_make_svg = formatters[ [[mudraw -o "math-%%d.svg" "%s" 1-9999]] ]
-
------ f_inline = formatters[ [[<div class='math-inline' style='vertical-align:%p'></div>]] ]
-local f_inline = formatters[ [[<div class='math-inline'></div>]] ]
-local f_display = formatters[ [[<div class='math-display'></div>]] ]
-local f_style = formatters[ [[vertical-align:%p]] ]
-
-local f_math_tmp = formatters[ [[math-%i]] ]
-
-function svgmath.process(filename)
- if not filename then
- -- no filename given
- return
- elseif not isfile(filename) then
- -- invalid filename
- return
- end
- local index = 0
- local page = 0
- local blobs = { }
- local root = xmlload(filename)
- for mth in xmlcollected(root,"math") do
- index = index + 1
- local blob = tostring(mth)
- if blobs[blob] then
- context.ReuseSVGMath(index,blobs[blob])
- else
- page = page + 1
- buffers.assign(f_math_tmp(page),blob)
- context.MakeSVGMath(index,page,mth.at.display)
- blobs[blob] = page
- end
- end
- context(function()
- -- for tracing purposes:
- for mathdata, pagenumber in next, blobs do
- local p = pagedata[pagenumber]
- p.mathml = mathdata
- p.number = pagenumber
- end
- --
- savetable(statusname, {
- pagedata = pagedata,
- namedata = namedata,
- })
- end)
-end
-
-function svgmath.register(index,page,specification)
- if specification then
- pagedata[page] = specification
- end
- namedata[index] = page
-end
-
-function svgmath.convert(filename,svgstyle)
- if not filename then
- -- no filename given
- return false, "no filename"
- elseif not isfile(filename) then
- -- invalid filename
- return false, "invalid filename"
- elseif not pdftosvg then
- return false, "mudraw is not installed"
- end
-
- os.execute(f_make_tex(filename,svgstyle))
-
- local data = loadtable(statusname)
- if not data then
- -- invalid tex run
- return false, "invalid tex run"
- elseif not next(data) then
- return false, "no converson needed"
- end
-
- local pagedata = data.pagedata
- local namedata = data.namedata
-
- os.execute(f_make_svg(pdfname))
-
- local root = xmlload(filename)
- local index = 0
- local done = { }
- local unique = 0
-
- local between = (1-P("<"))^1/""
- local strip = Cs((
- (P("<text") * ((1-P("</text>"))^1) * P("</text>")) * between^0 / "" +
- P(">") * between +
- P(1)
- )^1)
-
- for mth in xmlcollected(root,"m:math") do
- index = index + 1
- local page = namedata[index]
- if done[page] then
- mth.__p__.dt[mth.ni] = done[page]
- else
- local info = pagedata[page]
- local depth = info.depth
- local mode = info.mode
- local svgname = addsuffix(f_math_tmp(page),"svg")
- local action = mode == "inline" and f_inline or f_display
- -- local x_div = xmlfirst(xmlconvert(action(-depth)),"/div")
- local x_div = xmlfirst(xmlconvert(action()),"/div")
- local svgdata = io.loaddata(svgname)
- if not svgdata or svgdata == "" then
- print("error in:",svgname,tostring(mth))
- else
- -- svgdata = string.gsub(svgdata,">%s<","")
- svgdata = lpegmatch(strip,svgdata)
- local x_svg = xmlfirst(xmlconvert(svgdata),"/svg")
- -- xmldelete(x_svg,"text")
-if mode == "inline" then
- x_svg.at.style = f_style(-depth)
-end
-
- x_div.dt = { x_svg }
- mth.__p__.dt[mth.ni] = x_div -- use helper
- end
- done[page] = x_div
- unique = unique + 1
- end
- end
-
--- for k, v in next, data do
--- removefile(addsuffix(k,"svg"))
--- end
--- removefile(statusname)
--- removefile(pdfname)
-
- xmlsave(root,filename)
-
- return true, index, unique
-end