这次我来找你不是带着一些代码而是带着一个大问题:
有没有简单的方法可以在我的文档中运行一些 python 代码?
我遇到了一些选择:
- Sage:安装相当繁重……最终无法使其工作。
- 一个名为 的过时文件
python.sty
,似乎已从互联网上部分删除(许多关于它的页面都只是给出 404 错误)。我在这里看到它:https://texample.net/weblog/2008/oct/24/embedding-python-latex/ 而且它看起来确实很有前途。它应该将你放在 python 环境中的代码写入文件并运行它,听起来好得令人难以置信……如果它在某个时候确实有效(甚至在线编译似乎也是如此),现在就不行了。我在一个旧的 github 目录中找到了该文件的一个版本,它可以部分运行,但会出现一些编译错误,如“缺少数字,视为零。”……一些讨论表明它与 LuaTex 是多余的,我查了一下,但真的看不出来。这里也知道它:Latex-Python 组合无法在 Mac 上运行 - 现在我正在看 Pythontex
那么,有什么建议吗?最好的是我可以在 Overleaf 上使用的东西(我可以做梦吧?)
为什么?因为我刚刚结束了一个我想做的项目,其中我的编译会进行一些计算。我遇到了 LaTeX 的弱点和局限性,在 Python 中看似最简单的事情在 LaTeX 中实际上并非如此。
感谢您的阅读。
答案1
您可以使用 pythontex 或直接手动调用 python,这里是在 overleaf 上运行的 python 计算 1+2=3(有更简单的加法)
tex 代码(需要--shell-escape
但那是自动的在overleaf) 是
\documentclass{article}
\begin{document}
\input{|python -c 'print(1+2)'}
\end{document}
这也适用于多行 Python 脚本:
\documentclass{article}
\usepackage{color}
\begin{document}
\input{|python mypy.py}
\end{document}
与mypy.py
print("\\section{The First}\n")
print("Some colours:\n\n")
clr=['red','blue','green']
for c in clr:
print("\n\\textcolor{" + c + "}{" + c +"}\n")
在 Overleaf 上运行的示例(尽管我不保证它会永远运行,所以这里也有一个屏幕截图)