我在使用 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
到您的文档中。