有没有类似于 ConTeXt 的 LuaLaTeX 的 \defineMPinstance 的东西?我需要能够拥有多个 MetaPost 实例,它们有自己的一组变量,如下所示:
\begin[instance_one]{mplibcode}
beginfig(1);
a := 1cm;
draw fullcircle scaled a; % 1cm circle
endfig;
\end{mplibcode}
\begin[instance_two]{mplibcode}
beginfig(1);
a := 2cm;
draw fullcircle scaled a; % 2cm circle
endfig;
\end{mplibcode}
\begin[instance_one]{mplibcode}
beginfig(2);
draw unitsquare scaled a; % 1cm square
endfig;
\end{mplibcode}
\begin[instance_two]{mplibcode}
beginfig(2);
draw unitsquare scaled a; % 2cm circle
endfig;
\end{mplibcode}
答案1
支持命名的 MetaPost 实例加入在 luamplib 2.22.0 中。语法几乎与问题中描述的一样:
\begin{mplibcode}[instanceOne]
beginfig(1);
a := 1cm;
draw fullcircle scaled a; % 1cm circle
endfig;
\end{mplibcode}
\begin{mplibcode}[instanceOne]
beginfig(1);
draw unitsquare scaled a; % 1cm square
endfig;
\end{mplibcode}
UPD:此外,支持每个实例\everymplib
和\everyendmplib
加入. 它的工作原理如下:
\everymplib[instanceOne]{instance := 1; beginfig(0);}
\everyendmplib[instanceOne]{endfig;}