分类
LaTeX

MetaPost中文标签的使用

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

具体步骤

  1. 首先建立mp文档如下:
    outputtemplate:= "%j.mps";
    
    
    etex;
    beginfig(1);
      u:=10pt;
      draw fullcircle scaled 10u;
      label(btex 圆心 etex, origin);
    endfig;
    end;


    将其保存为D:\test.mp.

  2. 在开始菜单下, 点击运行, 输入cmd, 打开命令行提示符. 用
    cd D:

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

    mpost -tex=latex test.mp

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

  3. 新建tex文档如下:
    
    \begin{document}
      \includegraphics{test.mps}
     

    并用pdflatex编译, 得到test.pdf. 检查其是否如下图所示:

    metapost中的中文标签
    metapost中的中文标签

未解决的问题

  1. 如果需要用latex编译, 那么可能会提示不能编译通过, 这时极有可能是需要嵌入字体. 请尝试在test.mp中的beginfig的前面一行加入
    prologues:=3;

    以嵌入字体. 更多相关问题, 请参考这个帖子:关于metapost直接生成eps的一些讨论

  2. 上面的test.mp有一句不是非常标准, 即
    outputtemplate:= "%j.mps";

    标准的请改为:

    filenametemplate "%j.mps";

一点注记

  1. mps后缀pdflatex和latex都能编译, 这是好处之一, 不用手动转换.
  2. filenametemplate "%j.mps";

    中的%j表示jobname, 这里是test, 此外还可以设置%c表示图的编号, 即beginfig括号中的数字. 例如设置

    filenametemplate "%j-%c.mps";
    

    这样经mpost编译输出的mps的文件名将是:test-1.mps.

  3. 如果需要使用楷书的标签, 请使用如下代码代替test.mp:
    filenametemplate "%j.mps";
    verbatimtex
    
    \begin{document}
    etex;
    prologues:=3;
    beginfig(1);
      u:=10pt;
      draw fullcircle scaled 10u;
      label(btex \kaishu 圆心 etex, origin);
    endfig;
    end;

    得到最终效果如下所示:

    metapost中的中文楷书标签
    metapost中的中文楷书标签

“MetaPost中文标签的使用”上的2条回复

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

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据