diff options
Diffstat (limited to 'tex/context/base/m-pstricks.lua')
-rw-r--r-- | tex/context/base/m-pstricks.lua | 148 |
1 files changed, 74 insertions, 74 deletions
diff --git a/tex/context/base/m-pstricks.lua b/tex/context/base/m-pstricks.lua index b151e313a..2c01ed898 100644 --- a/tex/context/base/m-pstricks.lua +++ b/tex/context/base/m-pstricks.lua @@ -1,74 +1,74 @@ -if not modules then modules = { } end modules ['m-pstricks'] = { - version = 1.001, - comment = "companion to m-pstricks.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - --- The following will be done when I need ps tricks figures --- in large quantities: --- --- + hash graphics and only process them once --- + save md5 checksums in tuc file --- --- It's no big deal but has a low priority. - -local format, lower, concat, gmatch = string.format, string.lower, table.concat, string.gmatch -local variables = interfaces.variables - -moduledata.pstricks = moduledata.pstricks or { } - -local report_pstricks = logs.reporter("pstricks") - -local template = [[ -\starttext - \pushcatcodetable - \setcatcodetable\texcatcodes - \usemodule[pstric] - %s - \popcatcodetable - \startTEXpage - \hbox\bgroup - \ignorespaces - %s - \removeunwantedspaces - \egroup - \obeydepth %% temp hack as we need to figure this out - \stopTEXpage -\stoptext -]] - -local loaded = { } -local graphics = 0 - -function moduledata.pstricks.usemodule(names) - for name in gmatch(names,"([^%s,]+)") do - loaded[#loaded+1] = format([[\readfile{%s}{}{}]],name) - end -end - -function moduledata.pstricks.process(n) - graphics = graphics + 1 - local name = format("%s-pstricks-%04i",tex.jobname,graphics) - local data = buffers.collectcontent("def-"..n) - local tmpfile = name .. ".tmp" - local epsfile = name .. ".ps" - local pdffile = name .. ".pdf" - local loaded = concat(loaded,"\n") - os.remove(epsfile) - os.remove(pdffile) - io.savedata(tmpfile,format(template,loaded,data)) - os.execute(format("mtxrun --script texexec %s --once --dvips",tmpfile)) - if lfs.isfile(epsfile) then - os.execute(format("ps2pdf %s %s",epsfile,pdffile)) - -- todo: direct call but not now - if lfs.isfile(pdffile) then - context.externalfigure( { pdffile }, { object = variables.no } ) - else - report_pstricks("run failed, no pdf file") - end - else - report_pstricks("run failed, no ps file") - end -end +if not modules then modules = { } end modules ['m-pstricks'] = {
+ version = 1.001,
+ comment = "companion to m-pstricks.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- The following will be done when I need ps tricks figures
+-- in large quantities:
+--
+-- + hash graphics and only process them once
+-- + save md5 checksums in tuc file
+--
+-- It's no big deal but has a low priority.
+
+local format, lower, concat, gmatch = string.format, string.lower, table.concat, string.gmatch
+local variables = interfaces.variables
+
+moduledata.pstricks = moduledata.pstricks or { }
+
+local report_pstricks = logs.reporter("pstricks")
+
+local template = [[
+\starttext
+ \pushcatcodetable
+ \setcatcodetable\texcatcodes
+ \usemodule[pstric]
+ %s
+ \popcatcodetable
+ \startTEXpage
+ \hbox\bgroup
+ \ignorespaces
+ %s
+ \removeunwantedspaces
+ \egroup
+ \obeydepth %% temp hack as we need to figure this out
+ \stopTEXpage
+\stoptext
+]]
+
+local loaded = { }
+local graphics = 0
+
+function moduledata.pstricks.usemodule(names)
+ for name in gmatch(names,"([^%s,]+)") do
+ loaded[#loaded+1] = format([[\readfile{%s}{}{}]],name)
+ end
+end
+
+function moduledata.pstricks.process(n)
+ graphics = graphics + 1
+ local name = format("%s-pstricks-%04i",tex.jobname,graphics)
+ local data = buffers.collectcontent("def-"..n)
+ local tmpfile = name .. ".tmp"
+ local epsfile = name .. ".ps"
+ local pdffile = name .. ".pdf"
+ local loaded = concat(loaded,"\n")
+ os.remove(epsfile)
+ os.remove(pdffile)
+ io.savedata(tmpfile,format(template,loaded,data))
+ os.execute(format("mtxrun --script texexec %s --once --dvips",tmpfile))
+ if lfs.isfile(epsfile) then
+ os.execute(format("ps2pdf %s %s",epsfile,pdffile))
+ -- todo: direct call but not now
+ if lfs.isfile(pdffile) then
+ context.externalfigure( { pdffile }, { object = variables.no } )
+ else
+ report_pstricks("run failed, no pdf file")
+ end
+ else
+ report_pstricks("run failed, no ps file")
+ end
+end
|