MetaPost中文标签的使用

常常碰到有人问如何在metapost的代码中使用中文作为标签. 尽管本人从没用过, 作为好奇, 亲测如下方法可行.

具体步骤

  1. 首先建立mp文档如下:

    将其保存为D:\test.mp.
  2. 在开始菜单下, 点击运行, 输入cmd, 打开命令行提示符. 用

    将工作目录切换到test.mp所在目录D:\
    再次在命令行提示符中输入如下命令:

    这样经过mpost编译得到test.mps, 下面我们将其插入到文档中.
  3. 新建tex文档如下:

    并用pdflatex编译, 得到test.pdf. 检查其是否如下图所示:
    metapost中的中文标签

    metapost中的中文标签

未解决的问题

  1. 如果需要用latex编译, 那么可能会提示不能编译通过, 这时极有可能是需要嵌入字体. 请尝试在test.mp中的beginfig的前面一行加入 以嵌入字体. 更多相关问题, 请参考这个帖子:关于metapost直接生成eps的一些讨论
  2. 上面的test.mp有一句不是非常标准, 即

    标准的请改为:

一点注记

  1. mps后缀pdflatex和latex都能编译, 这是好处之一, 不用手动转换.
  2. 中的%j表示jobname, 这里是test, 此外还可以设置%c表示图的编号, 即beginfig括号中的数字. 例如设置

    这样经mpost编译输出的mps的文件名将是:test-1.mps.
  3. 如果需要使用楷书的标签, 请使用如下代码代替test.mp:

    得到最终效果如下所示:
    metapost中的中文楷书标签

    metapost中的中文楷书标签

2 Comments

  1. 用了这种方法之后,mp文件中的图形只能有一个,如果多的的话不能编译通过,如果原来的文件夹被mpost -tex=latex编译之后,其中的多个图片如果在文档中被引用则不能被latex编译通过。

    • 只需把filenametemplate “%j.mps”;或者outputtemplate:= “%j.mps”;的%j.mps改成%j-%c.mps然后每个图(beginfig, endfig之间)都会生成一个文件. 可以参考我文章中引用的那篇帖子.

发表评论