次の 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
)。
絶対に必要です翻訳解決策。何かアイデアはありますか?
答え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}