我们需要手动调用 pythontex 吗?TeXShop 引擎:带有 XeLaTeX 的 PythonTeX

我们需要手动调用 pythontex 吗?TeXShop 引擎:带有 XeLaTeX 的 PythonTeX

我在使用 TeXShop 的 pythontex 中遇到了一个问题:编译后,我需要手动转到终端并调用pythontex 文件名.pdf。是否可以避免这种情况并让 TeXShop 调用 pythontex?

几乎成功使用此 MWE 运行 PythonTeX:

\documentclass{beamer}
\usepackage{pythontex}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\usepackage[T1]{fontenc}
\begin{document}
\begin{frame}[fragile]{Partial Derivatives}
\begin{pycode}
from sympy import *
var("x")
functions = [sin(x), cos(x), tan(x)]
print(r"\begin{align*}")
for f in functions:
    d = Derivative(f, x)
    print(latex(d) + "&=" + latex(d.doit()) + r"\\")    
print(r"\end{align*}")
\end{pycode}
\end{frame}
\end{document}

由于我需要 XeLaTeX,我在 TeXShop 中对 pythontex 引擎文件的第一个改编是:

PATH=/Applications/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin
filename=$1
xelatex -8bit --file-line-error --synctex=1 $1
pythontex $1

我对引擎模板的第二次修改是:

PATH=/Applications/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin 
filename=$1
pdfname = "${filename:r}.pdf"
xelatex -8bit --file-line-error --synctex=1 $1
pythontex $1
xelatex -8bit --file-line-error --synctex=1 $1
pythontex pdfname
xelatex -8bit --file-line-error --synctex=1 $1

我确实不太了解引擎文件中使用的语言,我只是根据我看到的模板尽力做出猜测。

编辑:我按照 Allan Munn 的回答做了,但遇到了同样的问题。日志文件的最后一部分如下所示:

(./pythontex-files-test/test.pytxmcr) (./test.nav)
(./pythontex-files-test/test.pytxpyg) (./test.vrb
(./pythontex-files-test/py_default_default_0.stdout
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd))) [1]
(./test.aux) )
Output written on test.pdf (1 page).
SyncTeX written on test.synctex.gz.
Transcript written on test.log.
Traceback (most recent call last):
  File "/usr/texbin/pythontex", line 50, in <module>
    import pythontex2 as pythontex
  File "/usr/local/texlive/2015/texmf-dist/scripts/pythontex/pythontex2.py", line 61, in <module>
    from pygments.styles import get_all_styles
ImportError: No module named pygments.styles

答案1

要在 TeXShop 中适配引擎文件,您需要确保新文件的执行位已设置,并且通常需要重新启动 TeXShop 才能使其工作。

因此复制一份 TeXShoppythontex.engine并将其放入~/Library/TeXShop/Engines

该文件应该只包含以下内容:

#!/bin/bash

# For anaconda distribution of Python, use
PATH=~/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin
# For system distribution of Python, use
# PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin

filename=$1

xelatex --file-line-error --synctex=1 $1

pythontex $1

xelatex --file-line-error --synctex=1 $1

命名此文件xepython.engine以将其与常规pythontex引擎区分开。

要设置文件的可执行位,请打开终端窗口并输入以下内容:

chmod +x ~/Library/TeXShop/Engines/xepython.engine

现在重新启动 TeXShop,一切就绪了。您还可以使用以下命令在文件中轻松访问引擎:

% !TEX TS-program = xepython

有关更多信息,请参阅此问题:

由于您正在使用 XeLaTeX,因此您应该不是将该包加载fontenc到您的文档中。

相关内容