Metapost with LuaTeX
From LuaTeXWiki
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.