Dear Troy,
MetaFun uses a lot of Lua code which is only available in ConTeXt.
Basically any MetaFun extension which is not implemented only in terms
of MetaPost macros and primitives is not going to work. There is also
no easy way around it. You can try loading the necessary ConTeXt Lua
files using something like
\directlua{dofile(kpse.find_file("util-fmt.lua"))}
where "util-fmt.lua" has to be replaced by the correct file of course.
You will end up loading at least four of those files and you will have
to put some mock definitions in place to make it work in LaTeX. I have
done this before and you can see what this will look like in practice in
these answers on TeX.SX:
https://tex.stackexchange.com/a/451951/
https://tex.stackexchange.com/a/479410/
Looking at this it should be obvious that making MetaFun work in LaTeX
is sort of non-trivial. The best bet is probably to use ConTeXt like so
\startMPpage
% drawing....
\stopMPpage
This will create a PDF with a single page that only contains the drawing
and is cropped to the bounding box. Then you can \includegraphics this
PDF.
Kind regards,
Henri
On 12/4/19 5:33 AM, Troy Henderson wrote:
I'm trying to use MetaFun's "graphictext" with LuaLaTeX + MPlib with the
following code:
% Begin code
\documentclass{standalone}
\usepackage{luamplib}
\mplibsetformat{metafun}
\begin{document}
\begin{mplibcode}
beginfig(0);
graphictext "Fun" scaled 4 withdrawcolor blue withfillcolor
.5white withpen pencircle scaled 5pt;
endfig;
end
\end{mplibcode}
\end{document}
% End code
However, I am getting the following error (perhaps because it cannot find
my installed pstoedit in /usr/local/bin). I would appreciate assistance.
Thank you in advance,
Troy
-- Error --
lualatex foo.ltx
This is LuaTeX, Version 1.10.0 (TeX Live 2019)
restricted system commands enabled.
(./foo.ltx
LaTeX2e <2018-12-01>
luaotfload | main : initialization completed in 0.543 seconds
(/usr/local/texlive/current/texmf-dist/tex/latex/standalone/standalone.cls
Document Class: standalone 2018/03/26 v1.3a Class to compile TeX sub-files
stan
dalone
(/usr/local/texlive/current/texmf-dist/tex/latex/tools/shellesc.sty)
(/usr/local/texlive/current/texmf-dist/tex/generic/oberdiek/ifluatex.sty)
(/usr/local/texlive/current/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(/usr/local/texlive/current/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
(/usr/local/texlive/current/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/local/texlive/current/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/usr/local/texlive/current/texmf-dist/tex/generic/xkeyval/xkvutils.tex
(/usr/local/texlive/current/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/usr/local/texlive/current/texmf-dist/tex/latex/standalone/standalone.cfg)
(/usr/local/texlive/current/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/usr/local/texlive/current/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/current/texmf-dist/tex/generic/luatex85/luatex85.sty)
(/usr/local/texlive/current/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
(/usr/local/texlive/current/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/current/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))
(/usr/local/texlive/current/texmf-dist/tex/luatex/luamplib/luamplib.sty)
(./foo.aux)Error in mp.find_file:
...live/current/texmf-dist/tex/luatex/luamplib/luamplib.lua:233: bad
argument #2 to 'find_file' (invalid option 'Fun')
mplib warning: error in script: [string "mp.report([===[]===])"]:1: attempt
to call a nil value (field 'report')
mplib warning: error in script: [string "mp.report([===[metafun iv
2019-12-3 10:32]===..."]:1: attempt to call a nil value (field 'report')
mplib warning: error in script: [string "mp.report([===[]===])"]:1: attempt
to call a nil value (field 'report')
Module luamplib Warning: (Please type a command or say `end')
(luamplib) (Please type a command or say `end')
(luamplib)
(luamplib) ! Please prepare 'Fun' in advance with 'pstoedit
-ssp
-dt -f mpost yourfile.ps
(luamplib) Fun'.
(luamplib) <to be read again>
(luamplib) ;
(luamplib) graphictext->...f mpost yourfile.ps "&(EXPR0)&"'";
(luamplib)
fi.c
losefrom(EXPR0);def.da...
(luamplib) <to be read again>
(luamplib) scaled
(luamplib) <*> graphictext "Fun" scaled
(luamplib) 4 withdrawcolor blue
with
fillcolor .5white with...
(luamplib) This error message was generated by an `errmessage'
(luamplib) command, so I can't give any explicit help.
(luamplib) Pretend that you're Miss Marple: Examine all clues,
(luamplib) and deduce the truth by inspired guesses.
(luamplib)
(luamplib) >> mfun_do_graphic_text
(luamplib) ! Isolated expression.
(luamplib) <to be read again>
(luamplib) (
(luamplib) graphictext->...EXPR0)enddef;mfun_do_graphic_text(
(luamplib)
(EXP
R0))
(luamplib) <to be read again>
(luamplib) scaled
(luamplib) <*> graphictext "Fun" scaled
(luamplib) 4 withdrawcolor blue
with
fillcolor .5white with...
(luamplib) I couldn't find an `=' or `:=' after the
(luamplib) expression that is shown above this error message,
(luamplib) so I guess I'll just ignore it and carry on.
(luamplib)
(luamplib) ! Extra tokens will be flushed.
(luamplib) <to be read again>
(luamplib) (
(luamplib) graphictext->...EXPR0)enddef;mfun_do_graphic_text(
(luamplib)
(EXP
R0))
(luamplib) <to be read again>
(luamplib) scaled
(luamplib) <*> graphictext "Fun" scaled
(luamplib) 4 withdrawcolor blue
with
fillcolor .5white with...
(luamplib) I've just read as much of that statement as I
could fa
thom,
(luamplib) so a semicolon should have been next. It's very
puzzli
ng...
(luamplib) but I'll try to get myself back together, by
ignoring
(luamplib) everything up to the next `;'. Please insert a
semicol
on
(luamplib) now in front of anything that you don't want me to
del
ete.
(luamplib) (See Chapter 27 of The METAFONTbook for an
example.)
(luamplib)
(luamplib)
(luamplib) [0]
(luamplib)
(luamplib) (Please type a command or say `end')
(luamplib) (Please type a command or say `end')
(luamplib) on input line 10
...l/texlive/current/texmf-dist/tex/latex/base/ltluatex.lua:109:
Module luamplib Error: see above messages on input line 10
stack traceback:
[C]: in function 'error'
...l/texlive/current/texmf-dist/tex/latex/base/ltluatex.lua:109: in
function <
...l/texlive/current/texmf-dist/tex/latex/base/ltluatex.lua:108>
(...tail calls...)
...live/current/texmf-dist/tex/luatex/luamplib/luamplib.lua:265: in
upvalue 'r
eporterror'
...live/current/texmf-dist/tex/luatex/luamplib/luamplib.lua:309: in
function <
...live/current/texmf-dist/tex/luatex/luamplib/luamplib.lua:305>
(...tail calls...)
...live/current/texmf-dist/tex/luatex/luamplib/luamplib.lua:635: in
field 'pro
cess_mplibcode'
[\directlua]:1: in main chunk.
<inserted text> BAD
l.10 \end{mplibcode}