使用标签时,MetaPost输出空白图片

时间:2013-09-08 02:40:50

标签: label metapost

我正在尝试通过 MetaPost 绘制一个简单的图形,其中包含 TexLive2013.iso 。下面列出的代码是应该使用标签创建椭圆

beginfig(1);
a=.7in; b=.5in;
z0=(0,0);
z1=-z3=(a,0);
z2=-z4=(0,b);
draw z1..z2..z3..z4..cycle;
draw z1--z0--z2;
label.top("a", .5[z0,z1]);
label.lft("b", .5[z0,z2]);
dotlabel.bot("(0,0)", z0);
endfig;
end;

Howerver,当我用 okular 打开输出flie 5.1 时,它是空白的。我用 kate 再次打开输出文件,列出下面是代码:

%!PS
%%BoundingBox: -51 -37 51 37 
%%HiResBoundingBox: -50.64978 -36.25 50.64978 36.25 
%%Creator: MetaPost 1.802
%%CreationDate: 2013.09.08:1009
%%Pages: 1
%*Font: cmr10 9.96265 9.96265 61:8
%%BeginProlog
%%EndProlog
%%Page: 1 1
0 0 0 setrgbcolor 0 0.5 dtransform truncate idtransform setlinewidth pop
[] 0 setdash 1 setlinejoin 10 setmiterlimit
newpath 50.39978 0 moveto
50.39978 23.04858 25.56044 36 0 36 curveto
-25.56044 36 -50.39978 23.04858 -50.39978 0 curveto
-50.39978 -23.04858 -25.56044 -36 0 -36 curveto
25.56044 -36 50.39978 -23.04858 50.39978 0 curveto closepath stroke
1 setlinecap
newpath 50.39978 0 moveto
0 0 lineto
0 36 lineto stroke
22.70921 3 moveto
(a) cmr10 9.96265 fshow
showpage
%%EOF

如果我评论

label.top("a", .5[z0,z1]);
label.lft("b", .5[z0,z2]);
dotlabel.bot("(0,0)", z0);

然后可以看到没有标签的椭圆形。对于上面的所有代码, MetaPost 没有给出任何警告或错误消息。所以问题是:

  1. 使用标签时,为什么我的 MetaPost 会输出空白图片?
  2. 如何修复呢?

1 个答案:

答案 0 :(得分:2)

引用MetaPost手册,第3章(MetaPost工作流程):

  

如果图形包含文本标签,则可能需要设置变量   3的序言,以确保所有人都使用正确的字体   可能的情况。

因此,我在代码的第一行添加了以下内容:

prologues := 3;

它在这里实质上是将字体嵌入到输出中,结果会增长到大约20 KB。

之后,我可以在GSview中看到带有标签的图片。没有它,它会像Error: /undefined in cmr10一样抱怨。也许okular也无法找到字体。