我有以下 python 原始碼:
def modulo(a, n):
return a % n
print(modulo(3, 10))
print(modulo(10, 10))
print(modulo(11, 10))
第一個函數定義給出了有關實現的提示,下面的呼叫顯示了示例性用法/輸出。
我想按以下方式排版(以便人們可以複製並貼上實現並查看一些即時輸出):
def modulo(a, n):
return a % n
>>> print(modulo(3, 10))
3
>>> print(modulo(10, 10))
0
>>> print(modulo(11, 10))
1
我無法使用 PythonTeX 創建它。
\begin{pyblock}[mysession][]
def modulo(a, n):
return a % n
\end{pyblock}
\begin{pyconsole}[mysession][]
print(modulo(3, 10))
print(modulo(10, 10))
print(modulo(11, 10))
\end{pyconsole}
這給了我
def modulo(a, n):
return a % n
>>> print(modulo(3, 10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'modulo' is not defined
>>> print(modulo(10, 10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'modulo' is not defined
>>> print(modulo(11, 10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'modulo' is not defined
這文件提到會話,其中程式碼並行運行,因此我將這些程式碼片段明確放入同一個會話中(即使預設情況下兩者都在 中運行default
)。
我絕對需要一個PythonTeX解決方案。有任何想法嗎?
答案1
控制台代碼和普通代碼各有各的分離 default
會議。所有以開頭的命令/環境pycon
與以 . 開頭的命令/環境完全分開執行py
。它們之間沒有重疊。
做你想做的事的功能已被請求並將在即將發布的 PythonTeX 版本中實作。同時,您可以透過此解決方法做您想做的事情,從該功能請求複製。
\documentclass{article}
\usepackage{pythontex}
\newenvironment{pyconcodeblock}%
{\VerbatimEnvironment
\begin{VerbatimOut}{temp.py}}%
{\end{VerbatimOut}%
\pyconc{exec(compile(open('temp.py', 'rb').read(), 'temp.py', 'exec'))}%
\inputpygments{python}{temp.py}}
\begin{document}
\begin{pyconcodeblock}
def foo(x):
return 2*x
\end{pyconcodeblock}
\begin{pyconsole}
x = 10
foo(x)
\end{pyconsole}
\end{document}