如何将 python.sty 的构建系统从 Python2 更改为 Python3?

如何将 python.sty 的构建系统从 Python2 更改为 Python3?

我正在使用python.sty下载的包这里。我发现默认的构建路径是使用Python2.7:

\documentclass{article}
\usepackage{python}
\begin{document}
\begin{python}%
import sys
print (sys.version)
\end{python}%
\end{document}

这篇文章给了我2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]

我的问题是,我可以将正在使用的 Python 版本更改python.sty为 Python 3.5 吗?

答案1

对的调用python在包中是硬编码的。您可以使用python3补丁来调用它:

\documentclass{article}
\usepackage{python}
\usepackage{etoolbox}

\patchcmd{\endpython}{python }{python3 }{}{}

\begin{document}
\begin{python}
import sys
print (sys.version)
\end{python}
\end{document}

在日志文件中我们发现

runsystem(cat  jay.py | python3 > jay.py.out 2> jay.py.err)...executed.

这是 PDF 输出

在此处输入图片描述

扩展版本,您可以从一个版本切换到另一个版本;该\setpython命令遵循正常的作用域规则。

\documentclass{article}
\usepackage{python}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\endpython}{python }{python\python@version\space}{}{}
\newcommand{\setpython}[1]{%
  \if3#1\relax
    \def\python@version{3}%
  \else
    \def\python@version{}%
  \fi
}
\makeatletter
\setpython{2} % initialize

\begin{document}
\begin{python}
import sys
print (sys.version)
\end{python}

\bigskip

\setpython{3}

\begin{python}
import sys
print (sys.version)
\end{python}

\end{document}

在此处输入图片描述

答案2

TEXMFHOME为您的改编版本创建一个目录:

mkdir -p $(kpsewhich -var TEXMFHOME)/tex/latex/python3/

移居那里

pushd $(kpsewhich -var TEXMFHOME)/tex/latex/python3/
sed -e 's+\(ProvidesPackage{python\)\(}\[\).*\(.*Python in LaTeX\)+\13\22016/06/17 v0.21-3 \3 modified for Python3 by JW+' -e 's+\(\\immediate\\write18{.*\| python\)\( > \\jobname\.py\)+\13\2+' $(kpsewhich python.sty) > python3.sty
popd

然后说

\usepackage{python3}

请注意,这完全没有经过测试 - 我对 Python 几乎一无所知,但python我的系统上只有 3.5.1。

相关内容