summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex')
-rw-r--r--Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex84
1 files changed, 84 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex b/Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex
new file mode 100644
index 00000000000..28de0090cf9
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/pyluatex/example/repl.tex
@@ -0,0 +1,84 @@
+%% Copyright 2021-2022 Tobias Enderle
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\documentclass{article}
+
+\usepackage{pyluatex}
+\usepackage{listings}
+\usepackage{xcolor}
+\lstset{
+ language=Python,
+ breaklines=true,
+ framesep=1ex,
+ frame=lrtb,
+ framerule=0pt,
+ numbers=none,
+ basicstyle=\ttfamily,
+ keywordstyle=\bfseries\color{green!40!black},
+ stringstyle=\bfseries\color{red!80!black},
+ identifierstyle=\color{blue},
+ backgroundcolor=\color{gray!10!white},
+}
+\usepackage{luacode}
+
+\begin{luacode}
+function pytypeset()
+ tex.print("\\begin{lstlisting}")
+ tex.print(pyluatex.get_last_output())
+ tex.print("\\end{lstlisting}")
+end
+\end{luacode}
+
+\newcommand{\pytypeset}{\directlua{pytypeset()}}
+
+\newenvironment{pyrepl}
+{\PyLTVerbatimEnv\begin{pythonrepl}}
+{\end{pythonrepl}\pytypeset}
+
+\begin{filecontents*}{repl.py}
+def square(x):
+ return x**2
+
+square(5)
+\end{filecontents*}
+
+\title{PyLuaTeX Example -- Typesetting Python Interactive Console Sessions}
+\author{Tobias Enderle}
+
+\begin{document}
+
+\maketitle
+
+PyLuaTeX allows you to run and typeset Python code in an interactive console
+or read–eval–print loop (REPL) fashion. Very much like in an IPython session,
+code is prefixed with \verb|>>>| (or \verb|...| in case of multi-line commands)
+and the results are printed automatically.
+
+Both code and output are stored in PyLuaTeX's ouput buffer and can be accessed
+by \verb|pyluatex.get_last_output()|. In this way, you can adjust the typesetting
+to your needs. For examples on typesetting see \verb|typesetting-listings.tex|
+and \verb|typesetting-minted.tex|.
+
+In the following example, we use the custom environment \verb|pyrepl|, which is
+based on the \verb|pythonrepl| environment provided by PyLuaTeX.
+\begin{pyrepl}
+def fun():
+ print('Hello PyLuaTeX!')
+
+3 + 1 *\
+4
+fun()
+\end{pyrepl}
+
+Python sessions can also be read from files:
+\pyfilerepl{repl.py}
+\pytypeset
+
+\end{document}