다음과 같은 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}