MetaPost中文标签的使用
常常碰到有人问如何在metapost的代码中使用中文作为标签. 尽管本人从没用过, 作为好奇, 亲测如下方法可行.
具体步骤
- 首先建立mp文档如下:
12345678910outputtemplate:= "%j.mps";\documentclass{ctexart}\begin{document}etex;beginfig(1);u:=10pt;draw fullcircle scaled 10u;label(btex 圆心 etex, origin);endfig;end;
将其保存为D:\test.mp. - 在开始菜单下, 点击运行, 输入cmd, 打开命令行提示符. 用
1cd D:
将工作目录切换到test.mp所在目录D:\
再次在命令行提示符中输入如下命令:
1mpost -tex=latex test.mp
这样经过mpost编译得到test.mps, 下面我们将其插入到文档中. - 新建tex文档如下:
12345\documentclass{article}\usepackage{graphicx}\begin{document}\includegraphics{test.mps}\end{document}
并用pdflatex编译, 得到test.pdf. 检查其是否如下图所示:
未解决的问题
- 如果需要用latex编译, 那么可能会提示不能编译通过, 这时极有可能是需要嵌入字体. 请尝试在test.mp中的beginfig的前面一行加入
1prologues:=3;
- 上面的test.mp有一句不是非常标准, 即
1outputtemplate:= "%j.mps";
标准的请改为:
1filenametemplate "%j.mps";
一点注记
- mps后缀pdflatex和latex都能编译, 这是好处之一, 不用手动转换.
-
1filenametemplate "%j.mps";1filenametemplate "%j-%c.mps";
这样经mpost编译输出的mps的文件名将是:test-1.mps. - 如果需要使用楷书的标签, 请使用如下代码代替test.mp:
123456789101112filenametemplate "%j.mps";verbatimtex\documentclass{ctexart}\begin{document}etex;prologues:=3;beginfig(1);u:=10pt;draw fullcircle scaled 10u;label(btex \kaishu 圆心 etex, origin);endfig;end;
得到最终效果如下所示:
本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.
用了这种方法之后,mp文件中的图形只能有一个,如果多的的话不能编译通过,如果原来的文件夹被mpost -tex=latex编译之后,其中的多个图片如果在文档中被引用则不能被latex编译通过。
只需把filenametemplate “%j.mps”;或者outputtemplate:= “%j.mps”;的%j.mps改成%j-%c.mps然后每个图(beginfig, endfig之间)都会生成一个文件. 可以参考我文章中引用的那篇帖子.