Metapost 外部图

Metapost 外部图

image.mp我有一个包含以下几行的metapost 文件:

beginfig(0);
draw p0; 
externalfigure "/Users/dsg/tex/images/image.png" xyscaled r0 shifted r1; 
endfig;

当我运行时mptopdf scene.mp出现以下错误:

MPtoPDF 1.4.1 : running 'mpost --mem=mpost   --tex=latex  scene.mp'
This is MetaPost, version 1.504 (kpathsea version 6.1.0)
(mpost.mp (/opt/local/share/texmf-texlive-dist/metapost/base/plain.mp
Preloading the plain mem file, version 1.004)) (./scene.mp
>> externalfigure
! Isolated expression.
<to be read again> 
                   "/Users/dsg/tex/images/image.png"
l.421 ...tex/images/image.png"
                                                   xyscaled r0 shifted r1;

我认为这是由于我的新电脑上安装了新版本的 metapost 造成的,因为这个文件曾经在我的旧电脑上运行过。

我不知道该如何修复它。我尝试将其更改为:

beginfig(0);
draw p0; 
draw externalfigure "/Users/dsg/tex/images/image.png" xyscaled r0 shifted r1; 
endfig;

但后来我得到:

MPtoPDF 1.4.1 : running 'mpost --mem=mpost   --tex=latex  scene.mp'
This is MetaPost, version 1.504 (kpathsea version 6.1.0)
(mpost.mp (/opt/local/share/texmf-texlive-dist/metapost/base/plain.mp
Preloading the plain mem file, version 1.004)) (./scene.mp
>> externalfigure
! Improper `addto'.
<to be read again> 
                   withpen
draw->...:also(EXPR0)else:doublepath(EXPR0)withpen
                                                  .currentpen.fi._op_
<to be read again> 
                   "/Users/dsg/tex/images/image.png"
l.421 ...images/image.png"
                                                   xyscaled r0 shifted r1;

(编辑:添加)beginfig(0);

已解决:你不仅需要draw externalfigure ...externalfigure ...而且正如@egreg所说,你需要运行mptopdf -metafun

答案1

您必须声明要使用的 Metapost 格式(您的日志显示您正在使用默认的plain.mp,也称为mpost.mp)。因此调用应该是

mptopdf -metafun file

(见Contextgarden 的手册页

根据文档,它只是

externalfigure "file" ...;

不与draw前面。你会发现在“包括图形”部分Metafun 手册,第 350 页及后续页面。

相关内容