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
根据文档,它只是
externalfigure "file" ...;
不与draw
前面。你会发现在“包括图形”部分Metafun 手册,第 350 页及后续页面。