2016年10月23日星期日

让 Windows 中的 LaTeXTools 支持中文目录

LaTeXTools 是 Sublime Text 的一个插件,可以用来方便地在 Sublime Text 中处理 LaTeX 文件。

我目前所使用的 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

没有评论:

发表评论