LuaLaTeX 中命名的 MetaPost 实例

LuaLaTeX 中命名的 MetaPost 实例

有没有类似于 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;}

相关内容