Mac OS X 上 Python 脚本编译 LaTeX 失败

Mac OS X 上 Python 脚本编译 LaTeX 失败

我编写了一个 Python 脚本来自动化一些 LaTeX 构建。目前我在 Mac OS X 上进行开发/测试(没有在其他 UNIX 版本上尝试过)。

将 LaTeX 编译为 pdf 文档的特定执行函数如下:

def execute(texinputs, params, proj_dir):
    latex_cmd = '/usr/texbin/xelatex'

    params=shlex.split(params)
    if params is None or len(params)==0:
        params = [latex_cmd]
    else:
        params.insert(0, latex_cmd)

    environment = os.environ
    oldenv = environment.get('TEXINPUTS', '')
    prepand = ':'.join([input for input in texinputs])
    environment['TEXINPUTS']=prepand+':'+oldenv
    ptoken=subprocess.Popen(params, env=environment, cwd=proj_dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with ptoken.stdout as stdout:
        with ptoken.stderr as stderr:
            for _i in range(1,10):
                if ptoken.poll() is None:
                    time.sleep(1)
            ret=ptoken.returncode 
            if ptoken.returncode is None:
                ret = -1000
                ptoken.kill()
            outlines, errlines = stdout.readlines(), stderr.readlines()
            return ret, outlines, errlines 

我在这里所做的是将路径传递给一些生成的源,这些路径应该添加到 TEXINPUTS 前面,以解析我的 LaTeX 模板内的相对路径以及一些额外的 tex 处理器参数。

一个典型的 shell 命令调用(工作正常)是:

TEXINPUTS=/用户/ovanes/Documents/some_path/content:$TEXINPUTS /usr/texbin/xelatex -shell-escape main.tex

这会生成一个 main.pdf,没有问题。但是,从脚本运行此 shell 命令时,我看到以下输出,并且没有写入 main.pdf。

Error 32512 (driver return code) generating output;
file main.pdf may not be valid.

有任何想法吗?

答案1

好的,我找到了问题所在。我忽略了 LaTeX 处理器由于路径问题无法启动 xdvipdfmx。最后,将“/usr/texbin”附加到子进程的 PATH 环境中就可以正常工作了。

相关内容