我目前所使用的 v3.11.2 版稍有问题,无法正确处理中文目录,原因是其 makepdf.py 文件使用 subprocess.Popen 调用 Latex 的外部指令时,对传入的工作目录 cwd 没有进行特殊字符判断,直接给了 Popen。如果工作目录含有中文字符的话,就会报一个
UnicodeEncodeError: 'ascii' codec can't encode characters in position xx-xx: ordinal not in range(128)的错误。
解决方案:
自己 encoding 一下 cwd,再传给 Popen。
在第 142 行,
if self.caller.plat == "windows":之后另起一行,缩进并加入下列内容
fixed_tex_dir = self.caller.tex_dir if isinstance(fixed_tex_dir, unicode): fixed_tex_dir = fixed_tex_dir.encode(sys.getfilesystemencoding())
将紧随其后的
cwd=self.caller.tex_dir替换为
cwd=fixed_tex_dir注意上述内容中,所有四个空格都要替换为 tab 缩进。
参阅
1. Sublime Text 2的Tortoise插件中文路径问题
2. subprocess.call fails with unicode strings in command line - Python tracker