使用 PythonTeX 排版函數,然後在控制台中執行它們

使用 PythonTeX 排版函數,然後在控制台中執行它們

我有以下 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}

相關內容