Difference between revisions of "Metapost with LuaTeX"
From LuaTeXWiki
(Copied from the old bluwiki.com luatex wiki) |
(No difference)
|
Latest revision as of 23:27, 7 December 2010
Writing directly some metapost code is now possible in LuaTeX, through MPLib. It only works in pdf mode.
To get it working, you will need three files: supp-mpl.lua and supp-mpl.tex (you need to copy/paste them) from the ConTeXt distribution, and a stupid .sty file:
\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mplib} \input supp-mpl.tex \directlua0{dofile(kpse.find_file("formathack.lua"))}
And create a file formathack.lua containing:
local preamble = [[ input %s ; dump ; ]] metapost.make = function (name, mem_name) local mpx = mplib.new { ini_version = true, find_file = metapost.finder, job_name = name} if mpx then local result = mpx:execute(string.format(preamble,name)) mpx:finish() end end function replacesuffix(filename, suffix) return (string.gsub(filename,"%.[%a%d]+$","")) .. "." .. suffix end metapost.load = function (name) local mpx = mplib.new { ini_version = false, mem_name = replacesuffix(name,"mem"), find_file = finder } local result if not mpx then metapost.make(name) metapost.report("creating %s.mem", name) mpx = mplib.new { ini_version = false, mem_name = replacesuffix(name,"mem"), find_file = finder } end if not mpx then result = { status = 99, error = "out of memory"} end return mpx, result end
Once you have all four files, the following example should work:
\mplibcode beginfig(1); pickup pencircle xscaled 5 rotated 30; draw unitsquare scaled 20 withcmykcolor (0.3,0.4,0.6,0); endfig; \endmplibcode
as well as any metapost code.