Python无法编译LaTeX文件

Python无法编译LaTeX文件

我正在使用康达 Python安装和Jupyter使用脚本来生成我想要编译的 LaTeX 文件。以下是相关代码行:

import subprocess
xelatex= "/usr/local/texlive/2018/bin/x86_64-darwin/xelatex"
subprocess.check_call([xelatex, '-shell-escape', '-file-line-error', '-interaction=nonstopmode', '-synctex=1', my_folder+'/output_file.tex'])

很遗憾,LaTeX 源文件未被编译Python 将返回非零的退出状态,如下所示:

---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
<ipython-input-26-fc4edbf90d41> in <module>
      1 import subprocess
      2 xelatex= "/usr/local/texlive/2018/bin/x86_64-darwin/xelatex"
----> 3 subprocess.check_call([xelatex, '-shell-escape', '-file-line-error', '-interaction=nonstopmode', '-synctex=1', dir_AED+'/registro_lezioni.tex'])

~/anaconda3/lib/python3.6/subprocess.py in check_call(*popenargs, **kwargs)
    289         if cmd is None:
    290             cmd = popenargs[0]
--> 291         raise CalledProcessError(retcode, cmd)
    292     return 0
    293 

CalledProcessError: Command '['/usr/local/texlive/2018/bin/x86_64-darwin/xelatex', '-shell-escape', '-file-line-error', '-interaction=nonstopmode', '-synctex=1', 'my_folder+'/output_file.tex']' returned non-zero exit status 1.

我有一个2018 年 Tex Live 展会安装在我的 Mac 上,可以与许多其他应用程序顺利运行:

Last login: Sat Nov  3 07:39:44 on ttys000
Restored session: Sat Nov  3 07:33:30 CET 2018MacBook-Pro:~ m*****$ xelatex
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex) restricted \write18 enabled.
**

使用任何其他基于 LaTeX 的应用程序(例如 Texpad),源文件编译成功,没有错误。我进入了 Conda 终端窗口,问题似乎是 LaTeX 编译器找不到辅助文件:

ABD: EveryShipout initializing macros
(/usr/local/texlive/2018/texmf-dist/tex/latex/translator/translator-basic-dicti
onary-English.dict)
(/usr/local/texlive/2018/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
) (/usr/local/texlive/2018/texmf-dist/tex/latex/wasysym/uwasy.fd)

! LaTeX Error: File `fragment.tex' not found.

尽管如此,该文件片段.tex确实位于同一个文件夹中,但是 LaTeX 编译器无法找到它。

总共,我需要指示 LaTeX 编译器在主源文件所在的同一文件夹中查找文件

答案1

tex 相对路径是相对于程序启动的工作目录,而不是主文件的目录。你能用 python 来做吗

cd foo; xeletex file

代替

xelatex foo/file

答案2

所以我猜你收到错误是因为你在使用 python/conda 时从 texfile 的父级进行编译,但却从 texpad 中的 texfile 目录进行编译。

您可以设置 TEXINPUTS 环境变量以使 xelatex 在自定义目录中搜索(请参阅\input 和绝对路径),或者将您的 include 命令更改为 fragment.tex 的完整路径(或相对路径)。

我不知道你是如何包括 fragment.tex 但这意味着例如改变\input{fragment}\input{dir_AED/fragment}

相关内容