常常碰到有人问如何在metapost的代码中使用中文作为标签. 尽管本人从没用过, 作为好奇, 亲测如下方法可行.
具体步骤
- 首先建立mp文档如下:
outputtemplate:= "%j.mps"; etex; beginfig(1); u:=10pt; draw fullcircle scaled 10u; label(btex 圆心 etex, origin); endfig; end;
将其保存为D:\test.mp. - 在开始菜单下, 点击运行, 输入cmd, 打开命令行提示符. 用
cd D:
将工作目录切换到test.mp所在目录D:\
再次在命令行提示符中输入如下命令:mpost -tex=latex test.mp
这样经过mpost编译得到test.mps, 下面我们将其插入到文档中.
- 新建tex文档如下:
\begin{document} \includegraphics{test.mps}
未解决的问题
- 如果需要用latex编译, 那么可能会提示不能编译通过, 这时极有可能是需要嵌入字体. 请尝试在test.mp中的beginfig的前面一行加入
prologues:=3;
以嵌入字体. 更多相关问题, 请参考这个帖子:关于metapost直接生成eps的一些讨论
- 上面的test.mp有一句不是非常标准, 即
outputtemplate:= "%j.mps";
标准的请改为:
filenametemplate "%j.mps";
一点注记
- mps后缀pdflatex和latex都能编译, 这是好处之一, 不用手动转换.
-
filenametemplate "%j.mps";
中的%j表示jobname, 这里是test, 此外还可以设置%c表示图的编号, 即beginfig括号中的数字. 例如设置
filenametemplate "%j-%c.mps";
这样经mpost编译输出的mps的文件名将是:test-1.mps.
- 如果需要使用楷书的标签, 请使用如下代码代替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中文标签的使用”上的2条回复
用了这种方法之后,mp文件中的图形只能有一个,如果多的的话不能编译通过,如果原来的文件夹被mpost -tex=latex编译之后,其中的多个图片如果在文档中被引用则不能被latex编译通过。
只需把filenametemplate “%j.mps”;或者outputtemplate:= “%j.mps”;的%j.mps改成%j-%c.mps然后每个图(beginfig, endfig之间)都会生成一个文件. 可以参考我文章中引用的那篇帖子.