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}

관련 정보