我正在使用康达 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}