元乐趣

元乐趣

请提供两个从 Texicenter 运行的 latex 中执行 metapost 和 metaobj 的示例。

需要包含哪些包并编写两个示例

我读完了这本书却无法理解。

第一的

input metafun

draw fulldiamond scaled 1cm withcolor blue;

第二

input metaobj

nczigzag(a)(b);
nczigzag(a)(b)
"angleA(-90)","angleB(120)",
"linetension(0.8)","coilwidth(2mm)",
"linearc(0.1mm)";
drawObj(a,b);

以下代码不起作用帮助

\documentclass{article} 
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
input test.mp
\end{mplibcode}
\end{document}

其中测试.mp

beginfig(1) ;
draw fulldiamond scaled 1cm withcolor blue ;
endfig ;
end ;

然后在 LuLatex 中运行它但没有出现错误和输出

第二个如果在上面而不是 test.mp 上面的代码

如果我们test.mp

input metaobj
beginfig(1) ;
newCircle.a(btex A etex) ;
newCircle.b(btex B etex) ;
a.c=origin ;
b.c=(3cm,2cm) ;
nczigzag(a)(b) ;
nczigzag(a)(b) "angleA(-90)","angleB(120)",
               "linetension(0.8)",
               "coilwidth(2mm)", "linearc(0.1mm)" ;
drawObj(a,b) ;
endfig ;
end ;

如何无错误运行请帮助

答案1

元乐趣

MetaFun 不是可以输入的宏,而是另一种格式(有点像 Plain TeX 与 LaTeX)。因此,要使用 MetaFun 运行文件,您必须使用 预加载格式mpost '&metafun' test.mp

beginfig(1) ;
draw fulldiamond scaled 1cm withcolor blue ;
endfig ;
end ;

在此处输入图片描述

元对象

您的 MetaObj 示例无法工作,因为您尝试连接不存在的对象。我只是制作了两个圆圈并将它们放在某处ab

input metaobj

beginfig(1) ;
newCircle.a(btex A etex) ;
newCircle.b(btex B etex) ;
a.c=origin ;
b.c=(3cm,2cm) ;
nczigzag(a)(b) ;
nczigzag(a)(b) "angleA(-90)","angleB(120)",
               "linetension(0.8)",
               "coilwidth(2mm)", "linearc(0.1mm)" ;
drawObj(a,b) ;
endfig ;
end ;

在此处输入图片描述

将图片嵌入文档

您使用以下标签标记了问题,所以我们可以使用luamplib。由于 MetaFun 实际上是普通 MetaPost 的超集,我们可以使用 全局将格式切换为 MetaFun 。我们还在和\mplibsetformat{metafun}中添加了一些便利代码,这样我们就不必每次都输入和,图片将始终处于水平模式。\everymplib\everyendmplibbeginfigendfig

\documentclass{beamer}
\usepackage{luamplib}

\mplibsetformat{metafun}

\everymplib{
  verbatimtex \leavevmode etex ;
  beginfig(0) ;
}
\everyendmplib{
  endfig ;
}

\begin{document}

\begin{frame}
  \begin{mplibcode}
    draw fulldiamond scaled 1cm withcolor blue ;
  \end{mplibcode}
\end{frame}

\begin{frame}
  \begin{mplibcode}
    input metaobj ;

    newCircle.a(btex A etex) ;
    newCircle.b(btex B etex) ;
    a.c=origin ;
    b.c=(3cm,2cm) ;
    nczigzag(a)(b) ;
    nczigzag(a)(b) "angleA(-90)","angleB(120)",
                   "linetension(0.8)",
                   "coilwidth(2mm)", "linearc(0.1mm)" ;
    drawObj(a,b) ;
  \end{mplibcode}
\end{frame}

\end{document}

在此处输入图片描述

相关内容