mpgraphics不能编译成功的原因
首先mpgraphics需要启用-shell-escape
来编译.
若还是出现形如下面的错误:
其次, mpgraphics建议使用最新版的epstopdf, 故你可以更新epstopdf(texlive):
1 |
tlmgr update epstopdf |
然后运行
1 |
epstopdf --version |
来查看是否正常, 若出现
Can’t locate parent.pm in @INC (you may need to install the parent module)
则表示你需要安装parent这个perl模块. 事实上, 我在windows上尝试安装模块并不是很容易, 最简单的方法是(参考so的讨论):
1. 下载strawberry Perl
2. 或者在cygwin下安装perl完全包
再次运行epstopdf --version
即可看到我们的版本已经是(cygwin下)2.26:
\$ epstopdf –version
epstopdf (\$Id: epstopdf.pl 41577 2016-06-30 16:38:01Z karl $) 2.26
Copyright 2009-2017 Karl Berry et al.
Copyright 2002-2009 Gerben Wierda et al.
Copyright 1998-2001 Sebastian Rahtz et al.
License RBSD: Revised BSD http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
再次运行编译tex, 发现已经正常.
还有一个常见的问题是在源码中使用了标签, 例如label.top
, 则不同的编译方式可能会导致编译失败(例如vimtex默认的就不能编译), 此时可以手动编译如下看看是否成功:
1 |
mpost -tex=latex yourmpname.mp |
这里yourmpname.mp
是mpgraphics自动生成的mp文件. 注意在正式运行时, mpgraphics会自动删除这些mp文件. 你可以在导言区添加
1 |
\NoProcess[1,3-5] |
来指定跳过第1个图以及第3到第5个图的处理, 这样就会保留mp文件了.
另外, 我附上修复vimtex的方法:
1 2 3 4 5 6 7 8 9 10 11 |
"Add this to your vimrc " MetaPost Compile{{{3 function! MetaPostCompile() let s:origdir = getcwd() lcd %:p:h silent exec '!latexmk -C' silent exec '!xelatex -shell-escape %' silent exec 'cd' fnameescape(s:origdir) endfunction imap <silent> <F3> <Esc>:call MetaPostCompile()<cr> map <silent> <F3> :call MetaPostCompile()<cr> |
发表回复