下面的代码运行良好。
\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
input graph ;
beginfig(0) ;
draw begingraph(5cm,3cm)
gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;
endgraph ;
endfig ;
\end{mplibcode}
\end{document}
但是下面的操作不起作用。
\documentclass{article}
\usepackage{luacode}
\usepackage{luamplib}
\begin{document}
\def\plot{
\directlua{
tex.print("\string\\begin{mplibcode}")
tex.print("input graph ;")
tex.print("beginfig(0)")
tex.print("draw begingraph(5cm,3cm)")
tex.print(" gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;")
tex.print("endgraph;")
tex.sprint("endfig;")
tex.print("\string\\end{mplibcode}")
}
}
\plot
\end{document}
mplibdoreplacenewlinebr
或似乎有问题catcode
。该如何处理此错误?
答案1
既然您使用的luamplib
是 Lua,那么您不妨只使用 Lua 接口并放弃\being...\end{mplibcode}
。
\documentclass{article}
\usepackage{luamplib}
\begin{document}
\def\plot{%
\directlua{luamplib.process_mplibcode([[
input graph ;
beginfig(0)
draw begingraph(5cm,3cm)
gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;
endgraph ;
endfig ;
]])}%
}
\plot
\end{document}