Piton 및 Pyluatex 환경: 콘텐츠를 외부 파일에 쓰기

Piton 및 Pyluatex 환경: 콘텐츠를 외부 파일에 쓰기

piton한편으로는 패키지 에서 생성된 Python용 환경이 몇 가지 있고 Pyluatex다른 한편으로는 있습니다 .

때로는 그 내용을 외부 Python 파일(아직 존재하지 않는 경우 생성됨)에 복사하고 싶습니다. 이것이 어떻게 이루어질 수 있는지 아십니까? 예를 들어, 생성된 환경에 대한 선택적 인수를 생성함으로써? 등 pyverbatim*의 스타 버전 pyblock*?

\documentclass{article}

\usepackage{xcolor,currfile,needspace,fontawesome5,luacode}
\usepackage{pyluatex}
\usepackage{piton}

\begin{luacode}
function pytypeset()
    tex.print("\\begin{Piton}")
    tex.print(pyluatex.get_last_code())
    tex.print("\\end{Piton}")
    tex.print("")
end

function pytypesetREPL()
    tex.print("\\begin{Piton}")
    tex.print(pyluatex.get_last_output())
    tex.print("\\end{Piton}")
    tex.print("")
end
\end{luacode}

\newcommand*{\pytypeset}
    {\directlua{pytypeset()}}
\newcommand*{\pytypesetREPL}
    {\directlua{pytypesetREPL()}}

% Environnements Python
\NewPitonEnvironment{pyverbatim}{ !d<> !O{} }{
    \Needspace*{\baselineskip}
    \IfValueT{#1}{{\bfseries\sffamily\color{mongris}{\tiny\faSquare\:\faSquare\:\:}#1}}
    \PitonOptions{#2}}{}

\NewDocumentEnvironment{pyconsole}{ !d<> !O{} }
    {\Needspace*{\baselineskip}\PyLTVerbatimEnv\begin{pythonrepl}}
    {\end{pythonrepl}
    \IfValueT{#1}{{\bfseries\sffamily{\tiny\faSquare\:\faSquare\:\:}#1}}
    \PitonOptions{#2}\pytypesetREPL}
%
\newenvironment{pycode}
    {\PyLTVerbatimEnv\begin{pythonq}}
    {\end{pythonq}}
%
\NewDocumentEnvironment{pyblock}{ !d<> !O{} } 
    {\PyLTVerbatimEnv\begin{pythonq}}
    {\end{pythonq}
    \Needspace*{\baselineskip}
    \IfValueT{#1}{{\bfseries\sffamily{\tiny\faSquare\:\faSquare\:\:}#1}}
    \PitonOptions{#2}\pytypeset
    \Needspace*{\baselineskip}
    }
%
\begin{document}

\begin{pyverbatim}
x = 1   
\end{pyverbatim}

\begin{pyblock}
y = 2   
\end{pyblock}

% Desired : environments with an other option writing environment content in "filename.py"

\begin{pyverbatim}[write="filename.py"]
x = 1
\end{pyverbatim}

% at this step, the external file does not exist so the file is created and the content x=1 written to the file
\begin{pyverbatim}[write="filename.py"]
x = 1
\end{pyverbatim}

% at this step, filename.py exist, so y = 2 is added
\begin{pyblock}[write="filename.py"]
y = 2   
\end{pyblock}

\end{document}

답변1

최신 버전 piton(v. 2.3 2024-01-06)에서는 해당 기능을 갖춘 새로운 키를 제공합니다 write.

관련 정보